Documentation ¶
Index ¶
Constants ¶
const ( Create = "Create" Update = "Update" Delete = "Delete" )
Possible request types.
const ( StatusSuccess = "SUCCESS" StatusFailed = "FAILED" )
Possible response statuses.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CustomResourceProvisioner ¶
type CustomResourceProvisioner struct { // Root context.Context to use. If a reporter.Reporter is embedded, // errors generated will be reporter there. If a logger.Logger is // embedded, logging will be logged there. Context context.Context // The SQS queue url to listen for CloudFormation Custom Resource // requests. QueueURL string // Provisioners routes a custom resource to the thing that should do the // provisioning. Provisioners map[string]Provisioner // contains filtered or unexported fields }
CustomResourceProvisioner polls for CloudFormation Custom Resource requests from an sqs queue, provisions them, then responds back.
func NewCustomResourceProvisioner ¶
func NewCustomResourceProvisioner(db *sql.DB, config client.ConfigProvider) *CustomResourceProvisioner
NewCustomResourceProvisioner returns a new CustomResourceProvisioner with an sqs client configured from config.
func (*CustomResourceProvisioner) Handle ¶
Handle handles a single sqs.Message to perform the provisioning.
func (*CustomResourceProvisioner) Start ¶
func (c *CustomResourceProvisioner) Start()
Start starts pulling requests from the queue and provisioning them.
type ECSServiceProperties ¶
type ECSServiceProperties struct { ServiceName *string Cluster *string DesiredCount *IntValue LoadBalancers []LoadBalancer Role *string TaskDefinition *string }
ECSServiceProperties represents the properties for the Custom::ECSService resource.
type ECSServiceResource ¶
type ECSServiceResource struct {
// contains filtered or unexported fields
}
ECSServiceResource is a Provisioner that creates and updates ECS services.
func (*ECSServiceResource) Properties ¶
func (p *ECSServiceResource) Properties() interface{}
type InstancePortsProvisioner ¶
type InstancePortsProvisioner struct {
// contains filtered or unexported fields
}
InstancePortsProvisioner is a Provisioner that allocates instance ports.
type IntValue ¶
type IntValue int64
IntValue defines an int64 type that can parse integers as strings from json. It's common to use `Ref`'s inside templates, which means the value of some properties could be a string or an integer.
func (*IntValue) UnmarshalJSON ¶
type LoadBalancer ¶
type Message ¶
type Message struct {
Message string `json:"Message"`
}
Represents the body of the SQS message, which would have been received from SNS.
type Provisioner ¶
type Provisioner interface { // Provision should do the appropriate provisioning, then return: // // 1. The physical id that was created, if any. // 2. The data to return. Provision(Request) (string, interface{}, error) }
Provisioner is something that can provision custom resources.
type Request ¶
type Request struct { // The request type is set by the AWS CloudFormation stack operation // (create-stack, update-stack, or delete-stack) that was initiated by // the template developer for the stack that contains the custom // resource. // // Must be one of: Create, Update, or Delete. RequestType string `json:"RequestType"` // The response URL identifies a pre-signed Amazon S3 bucket that // receives responses from the custom resource provider to AWS // CloudFormation. ResponseURL string `json:"ResponseURL"` // The Amazon Resource Name (ARN) that identifies the stack containing // the custom resource. // // Combining the StackId with the RequestId forms a value that can be // used to uniquely identify a request on a particular custom resource. StackId string `json:"StackId"` // A unique ID for the request. // // Combining the StackId with the RequestId forms a value that can be // used to uniquely identify a request on a particular custom resource. RequestId string `json:"RequestId"` // The template developer-chosen resource type of the custom resource in // the AWS CloudFormation template. Custom resource type names can be up // to 60 characters long and can include alphanumeric and the following // characters: _@-. ResourceType string `json:"ResourceType"` // The template developer-chosen name (logical ID) of the custom // resource in the AWS CloudFormation template. This is provided to // facilitate communication between the custom resource provider and the // template developer. LogicalResourceId string `json:"LogicalResourceId"` // A required custom resource provider-defined physical ID that is // unique for that provider. // // Always sent with Update and Delete requests; never sent with Create. PhysicalResourceId string `json:"PhysicalResourceId"` // This field contains the contents of the Properties object sent by the // template developer. Its contents are defined by the custom resource // provider. ResourceProperties interface{} `json:"ResourceProperties"` // Used only for Update requests. Contains the resource properties that // were declared previous to the update request. OldResourceProperties interface{} `json:"OldResourceProperties"` }
Request represents a Custom Resource request.
See http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/crpg-ref-requests.html
type Response ¶
type Response struct { // The status value sent by the custom resource provider in response to // an AWS CloudFormation-generated request. // // Must be either SUCCESS or FAILED. Status string `json:"Status"` // Describes the reason for a failure response. // // Required if Status is FAILED; optional otherwise. Reason string `json:"Reason"` // This value should be an identifier unique to the custom resource // vendor, and can be up to 1Kb in size. The value must be a non-empty // string. PhysicalResourceId string `json:"PhysicalResourceId"` // The Amazon Resource Name (ARN) that identifies the stack containing // the custom resource. This response value should be copied verbatim // from the request. StackId string `json:"StackId"` // A unique ID for the request. This response value should be copied // verbatim from the request. RequestId string `json:"RequestId"` // The template developer-chosen name (logical ID) of the custom // resource in the AWS CloudFormation template. This response value // should be copied verbatim from the request. LogicalResourceId string `json:"LogicalResourceId"` // Optional, custom resource provider-defined name-value pairs to send // with the response. The values provided here can be accessed by name // in the template with Fn::GetAtt. Data interface{} `json:"Data"` }
Response represents the response body we send back to CloudFormation when provisioning is complete.
See http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/crpg-ref-responses.html
func NewResponseFromRequest ¶
NewResponseFromRequest initializes a new Response from a Request, filling in the required verbatim fields.