# AWS CloudFormation Service Broker [![Build Status](](

This is an **experimental** [Cloud Foundry Service Broker]( for [Amazon CloudFormation](

## Disclaimer

This is **NOT** presently a production ready Service Broker. This is a work in progress. It is suitable for experimentation and may not become supported in the future.

## Installation

### Locally

Using the standard `go install` (you must have [Go]( already installed in your local machine):

$ go install
$ cloudformation-broker -port=3000 -config=<path-to-your-config-file>

### Cloud Foundry

The broker can be deployed to an already existing [Cloud Foundry]( installation:

$ git clone
$ cd cloudformation-broker

Modify the [included manifest file]( to include your AWS credentials and the [sample configuration file]( to add/update the AWS CloudFormation template URL. Then you can push the broker to your [Cloud Foundry]( environment:

$ cp config-sample.json config.json
$ cf push cloudformation-broker

### Docker

If you want to run the AWS CloudFormation Service Broker on a Docker container, you can use the [cfplatformeng/cloudformation-broker]( Docker image.

$ docker run -d --name cloudformation-broker -p 3000:3000 \
  -e AWS_ACCESS_KEY_ID=<your-aws-access-key-id> \
  -e AWS_SECRET_ACCESS_KEY=<your-aws-secret-access-key> \

The Docker image cames with an [embedded sample configuration file]( If you want to override it and/or modify the sample AWS CloudFormation template to use, you can create the Docker image with you custom configuration file by running:

$ git clone
$ cd cloudformation-broker
$ bin/build-docker-image

### BOSH

This broker can be deployed using the [AWS Service Broker BOSH Release](

## Configuration

Refer to the [Configuration]( instructions for details about configuring this broker.

This broker gets the AWS credentials from the environment variables `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`. It requires a user with some [CloudFormation]( permissions. Refer to the [iam_policy.json]( file to check what actions the user must be allowed to perform. Additional permissions might be required depending on the resources used by CloudFormation templates. For example, the provided [sample S3 CloudFormation template]( requires the permissions specified at the [iam_sample_s3_cftemplate.json]( file.

## Usage

### Managing Service Broker

Configure and deploy the broker using one of the above methods. Then:

1. Check that your Cloud Foundry installation supports [Service Broker API Version v2.6 or greater](
2. [Register the broker]( within your Cloud Foundry installation;
3. [Make Services and Plans public](;
4. Depending on your Cloud Foundry settings, you migh also need to create/bind an [Application Security Group]( to allow access to the AWS Resources created by the AWS CloudFormation Stack.

### Integrating Service Instances with Applications

Application Developers can start to consume the services using the standard [CF CLI commands](

Depending on the [broker configuration](, Application Depevelopers can send arbitrary parameters on certain broker calls:

#### Provision

Provision calls support optional [arbitrary parameters]( These parameters will be passed to the CloudFormation Stack as input parameters.

#### Update

Update calls support optional [arbitrary parameters]( These parameters will be passed to the CloudFormation Stack as input parameters.

## Contributing

In the spirit of [free software](, **everyone** is encouraged to help improve this project.

Here are some ways *you* can contribute:

* by using alpha, beta, and prerelease versions
* by reporting bugs
* by suggesting new features
* by writing or editing documentation
* by writing specifications
* by writing code (**no patch is too small**: fix typos, add comments, clean up inconsistent whitespace)
* by refactoring code
* by closing [issues](
* by reviewing patches

### Submitting an Issue

We use the [GitHub issue tracker]( to track bugs and features. Before submitting a bug report or feature request, check to make sure it hasn't already been submitted. You can indicate support for an existing issue by voting it up. When submitting a bug report, please include a [Gist]( that includes a stack trace and any details that may be necessary to reproduce the bug, including your Golang version and operating system. Ideally, a bug report should include a pull request with failing specs.

### Submitting a Pull Request

1. Fork the project.
2. Create a topic branch.
3. Implement your feature or bug fix.
4. Commit and push your changes.
5. Submit a pull request.

## Copyright

Copyright (c) 2015 Pivotal Software Inc. See [LICENSE]( for details.

Imported only in test by 1 package(s)


Imports 7 package(s)


Test imports 2 package(s)