Documentation

Overview

    Package resources defines a set of CloudFormation Custom Resources that are implemented by Lambda functions. These resources are serialized to JSON and are instantiated by Sparta when an application requests a CustomAction handler. They must implement CustomResourceCommand to be properly invoked.

    Index

    Constants

    View Source
    const (
    	// CreateOperation is a request to create a resource
    	// @enum CloudFormationOperation
    	CreateOperation = "Create"
    	// DeleteOperation is a request to delete a resource
    	// @enum CloudFormationOperation
    	DeleteOperation = "Delete"
    	// UpdateOperation is a request to update a resource
    	// @enum CloudFormationOperation
    	UpdateOperation = "Update"
    )
    View Source
    const (
    	// CustomResourceTypePrefix is the known custom resource
    	// type prefix
    	CustomResourceTypePrefix = "Custom::goAWS"
    )
    View Source
    const DefaultManifestName = "MANIFEST.json"

      DefaultManifestName is the name of the file that will be created at the root of the S3 bucket with user-supplied metadata

      Variables

      View Source
      var (
      	// HelloWorld is the typename for HelloWorldResource
      	HelloWorld = cloudFormationResourceType("HelloWorldResource")
      	// S3LambdaEventSource is the typename for S3LambdaEventSourceResource
      	S3LambdaEventSource = cloudFormationResourceType("S3EventSource")
      	// SNSLambdaEventSource is the typename for SNSLambdaEventSourceResource
      	SNSLambdaEventSource = cloudFormationResourceType("SNSEventSource")
      	// CodeCommitLambdaEventSource is the type name for CodeCommitEventSourceResource
      	CodeCommitLambdaEventSource = cloudFormationResourceType("CodeCommitEventSource")
      	// SESLambdaEventSource is the typename for SESLambdaEventSourceResource
      	SESLambdaEventSource = cloudFormationResourceType("SESEventSource")
      	// CloudWatchLogsLambdaEventSource is the typename for SESLambdaEventSourceResource
      	CloudWatchLogsLambdaEventSource = cloudFormationResourceType("CloudWatchLogsEventSource")
      	// ZipToS3Bucket is the typename for ZipToS3Bucket
      	ZipToS3Bucket = cloudFormationResourceType("ZipToS3Bucket")
      	// S3ArtifactPublisher is the typename for publishing an S3Artifact
      	S3ArtifactPublisher = cloudFormationResourceType("S3ArtifactPublisher")
      )

      Functions

      func CloudFormationLambdaCustomResourceHandler

      func CloudFormationLambdaCustomResourceHandler(command CustomResourceCommand, logger *logrus.Logger) interface{}

        CloudFormationLambdaCustomResourceHandler is an adapter function that transforms an implementing CustomResourceCommand into something that that can respond to the lambda custom resource lifecycle

        func NewCustomResourceLambdaHandler

        func NewCustomResourceLambdaHandler(resourceType string, logger *logrus.Logger) interface{}

          NewCustomResourceLambdaHandler returns a handler for the given type

          func SendCloudFormationResponse

          func SendCloudFormationResponse(lambdaCtx *awsLambdaCtx.LambdaContext,
          	event *CloudFormationLambdaEvent,
          	results map[string]interface{},
          	responseErr error,
          	logger *logrus.Logger) error

            SendCloudFormationResponse sends the given response to the CloudFormation URL that was submitted together with this event

            Types

            type CloudFormationLambdaEvent

            type CloudFormationLambdaEvent struct {
            	RequestType           string
            	RequestID             string `json:"RequestId"`
            	ResponseURL           string
            	ResourceType          string
            	StackID               string `json:"StackId"`
            	LogicalResourceID     string `json:"LogicalResourceId"`
            	ResourceProperties    json.RawMessage
            	OldResourceProperties json.RawMessage
            }

              CloudFormationLambdaEvent is the event to a resource

              type CloudWatchEventSourceResourceRequest

              type CloudWatchEventSourceResourceRequest struct {
              	LambdaTargetArn *gocf.StringExpr
              	Filters         []*CloudWatchLogsLambdaEventSourceFilter
              	RoleARN         *gocf.StringExpr `json:",omitempty"`
              }

                CloudWatchEventSourceResourceRequest is what the UserProperties should be set to in the CustomResource invocation

                type CloudWatchLogsLambdaEventSourceFilter

                type CloudWatchLogsLambdaEventSourceFilter struct {
                	Name         *gocf.StringExpr
                	Pattern      *gocf.StringExpr
                	LogGroupName *gocf.StringExpr
                }

                  CloudWatchLogsLambdaEventSourceFilter represents a filter for a cloudwatchlogs stream

                  type CloudWatchLogsLambdaEventSourceResource

                  type CloudWatchLogsLambdaEventSourceResource struct {
                  	gocf.CloudFormationCustomResource
                  	CloudWatchEventSourceResourceRequest
                  }

                    CloudWatchLogsLambdaEventSourceResource is a simple POC showing how to create custom resources

                    func (CloudWatchLogsLambdaEventSourceResource) Create

                    func (command CloudWatchLogsLambdaEventSourceResource) Create(awsSession *session.Session,
                    	event *CloudFormationLambdaEvent,
                    	logger *logrus.Logger) (map[string]interface{}, error)

                      Create implements the create operation

                      func (CloudWatchLogsLambdaEventSourceResource) Delete

                      func (command CloudWatchLogsLambdaEventSourceResource) Delete(awsSession *session.Session,
                      	event *CloudFormationLambdaEvent,
                      	logger *logrus.Logger) (map[string]interface{}, error)

                        Delete implements the delete operation

                        func (*CloudWatchLogsLambdaEventSourceResource) IAMPrivileges

                        func (command *CloudWatchLogsLambdaEventSourceResource) IAMPrivileges() []string

                          IAMPrivileges returns the IAM privs for this custom action

                          func (CloudWatchLogsLambdaEventSourceResource) Update

                          func (command CloudWatchLogsLambdaEventSourceResource) Update(awsSession *session.Session,
                          	event *CloudFormationLambdaEvent,
                          	logger *logrus.Logger) (map[string]interface{}, error)

                            Update implements the update operation

                            type CodeCommitLambdaEventSourceResource

                            type CodeCommitLambdaEventSourceResource struct {
                            	gocf.CloudFormationCustomResource
                            	CodeCommitLambdaEventSourceResourceRequest
                            }

                              CodeCommitLambdaEventSourceResource is a simple POC showing how to create custom resources

                              func (CodeCommitLambdaEventSourceResource) Create

                              func (command CodeCommitLambdaEventSourceResource) Create(awsSession *session.Session,
                              	event *CloudFormationLambdaEvent,
                              	logger *logrus.Logger) (map[string]interface{}, error)

                                Create implements the custom resource create operation

                                func (CodeCommitLambdaEventSourceResource) Delete

                                func (command CodeCommitLambdaEventSourceResource) Delete(awsSession *session.Session,
                                	event *CloudFormationLambdaEvent,
                                	logger *logrus.Logger) (map[string]interface{}, error)

                                  Delete implements the custom resource delete operation

                                  func (*CodeCommitLambdaEventSourceResource) IAMPrivileges

                                  func (command *CodeCommitLambdaEventSourceResource) IAMPrivileges() []string

                                    IAMPrivileges returns the IAM privs for this custom action

                                    func (CodeCommitLambdaEventSourceResource) Update

                                    func (command CodeCommitLambdaEventSourceResource) Update(awsSession *session.Session,
                                    	event *CloudFormationLambdaEvent,
                                    	logger *logrus.Logger) (map[string]interface{}, error)

                                      Update implements the custom resource update operation

                                      type CodeCommitLambdaEventSourceResourceRequest

                                      type CodeCommitLambdaEventSourceResourceRequest struct {
                                      	LambdaTargetArn *gocf.StringExpr
                                      	RepositoryName  *gocf.StringExpr
                                      	TriggerName     *gocf.StringExpr
                                      	Events          []string `json:",omitempty"`
                                      	Branches        []string `json:",omitempty"`
                                      }

                                        CodeCommitLambdaEventSourceResourceRequest defines the request properties to configure SNS

                                        type CustomResourceCommand

                                        type CustomResourceCommand interface {
                                        	Create(session *session.Session,
                                        		event *CloudFormationLambdaEvent,
                                        		logger *logrus.Logger) (map[string]interface{}, error)
                                        
                                        	Update(session *session.Session,
                                        		event *CloudFormationLambdaEvent,
                                        		logger *logrus.Logger) (map[string]interface{}, error)
                                        
                                        	Delete(session *session.Session,
                                        		event *CloudFormationLambdaEvent,
                                        		logger *logrus.Logger) (map[string]interface{}, error)
                                        }

                                          CustomResourceCommand defines operations that a CustomResource must implement.

                                          type CustomResourcePrivilegedCommand

                                          type CustomResourcePrivilegedCommand interface {
                                          	// The IAMPrivileges this command requires of the IAM role
                                          	IAMPrivileges() []string
                                          }

                                            CustomResourcePrivilegedCommand is a command that also has IAM privileges which implies there must be an ARN associated with the command

                                            type HelloWorldResource

                                            type HelloWorldResource struct {
                                            	gocf.CloudFormationCustomResource
                                            	HelloWorldResourceRequest
                                            }

                                              HelloWorldResource is a simple POC showing how to create custom resources

                                              func (HelloWorldResource) Create

                                              func (command HelloWorldResource) Create(awsSession *session.Session,
                                              	event *CloudFormationLambdaEvent,
                                              	logger *logrus.Logger) (map[string]interface{}, error)

                                                Create implements resource create

                                                func (HelloWorldResource) Delete

                                                func (command HelloWorldResource) Delete(awsSession *session.Session,
                                                	event *CloudFormationLambdaEvent,
                                                	logger *logrus.Logger) (map[string]interface{}, error)

                                                  Delete implements resource delete

                                                  func (*HelloWorldResource) IAMPrivileges

                                                  func (command *HelloWorldResource) IAMPrivileges() []string

                                                    IAMPrivileges returns the IAM privs for this custom action

                                                    func (HelloWorldResource) Update

                                                    func (command HelloWorldResource) Update(awsSession *session.Session,
                                                    	event *CloudFormationLambdaEvent,
                                                    	logger *logrus.Logger) (map[string]interface{}, error)

                                                      Update implements resource update

                                                      type HelloWorldResourceRequest

                                                      type HelloWorldResourceRequest struct {
                                                      	Message *gocf.StringExpr
                                                      }

                                                        HelloWorldResourceRequest is what the UserProperties should be set to in the CustomResource invocation

                                                        type S3ArtifactPublisherResource

                                                        type S3ArtifactPublisherResource struct {
                                                        	gocf.CloudFormationCustomResource
                                                        	S3ArtifactPublisherResourceRequest
                                                        }

                                                          S3ArtifactPublisherResource is a simple POC showing how to create custom resources

                                                          func (S3ArtifactPublisherResource) Create

                                                          func (command S3ArtifactPublisherResource) Create(awsSession *session.Session,
                                                          	event *CloudFormationLambdaEvent,
                                                          	logger *logrus.Logger) (map[string]interface{}, error)

                                                            Create implements the S3 create operation

                                                            func (S3ArtifactPublisherResource) Delete

                                                            func (command S3ArtifactPublisherResource) Delete(awsSession *session.Session,
                                                            	event *CloudFormationLambdaEvent,
                                                            	logger *logrus.Logger) (map[string]interface{}, error)

                                                              Delete implements the S3 delete operation

                                                              func (*S3ArtifactPublisherResource) IAMPrivileges

                                                              func (command *S3ArtifactPublisherResource) IAMPrivileges() []string

                                                                IAMPrivileges returns the IAM privs for this custom action

                                                                func (S3ArtifactPublisherResource) Update

                                                                func (command S3ArtifactPublisherResource) Update(awsSession *session.Session,
                                                                	event *CloudFormationLambdaEvent,
                                                                	logger *logrus.Logger) (map[string]interface{}, error)

                                                                  Update implements the S3 update operation

                                                                  type S3ArtifactPublisherResourceRequest

                                                                  type S3ArtifactPublisherResourceRequest struct {
                                                                  	Bucket *gocf.StringExpr
                                                                  	Key    *gocf.StringExpr
                                                                  	Body   map[string]interface{}
                                                                  }

                                                                    S3ArtifactPublisherResourceRequest is what the UserProperties should be set to in the CustomResource invocation

                                                                    type S3LambdaEventSourceResource

                                                                    type S3LambdaEventSourceResource struct {
                                                                    	gocf.CloudFormationCustomResource
                                                                    	S3LambdaEventSourceResourceRequest
                                                                    }

                                                                      S3LambdaEventSourceResource manages registering a Lambda function with S3 event

                                                                      func (S3LambdaEventSourceResource) Create

                                                                      func (command S3LambdaEventSourceResource) Create(awsSession *session.Session,
                                                                      	event *CloudFormationLambdaEvent,
                                                                      	logger *logrus.Logger) (map[string]interface{}, error)

                                                                        Create implements the custom resource create operation

                                                                        func (S3LambdaEventSourceResource) Delete

                                                                        func (command S3LambdaEventSourceResource) Delete(awsSession *session.Session,
                                                                        	event *CloudFormationLambdaEvent,
                                                                        	logger *logrus.Logger) (map[string]interface{}, error)

                                                                          Delete implements the custom resource delete operation

                                                                          func (*S3LambdaEventSourceResource) IAMPrivileges

                                                                          func (command *S3LambdaEventSourceResource) IAMPrivileges() []string

                                                                            IAMPrivileges returns the IAM privs for this custom action

                                                                            func (S3LambdaEventSourceResource) Update

                                                                            func (command S3LambdaEventSourceResource) Update(awsSession *session.Session,
                                                                            	event *CloudFormationLambdaEvent,
                                                                            	logger *logrus.Logger) (map[string]interface{}, error)

                                                                              Update implements the custom resource update operation

                                                                              type S3LambdaEventSourceResourceRequest

                                                                              type S3LambdaEventSourceResourceRequest struct {
                                                                              	BucketArn       *gocf.StringExpr
                                                                              	Events          []string
                                                                              	LambdaTargetArn *gocf.StringExpr
                                                                              	Filter          *s3.NotificationConfigurationFilter `json:"Filter,omitempty"`
                                                                              }

                                                                                S3LambdaEventSourceResourceRequest is what the UserProperties should be set to in the CustomResource invocation

                                                                                type SESLambdaEventSourceResource

                                                                                type SESLambdaEventSourceResource struct {
                                                                                	gocf.CloudFormationCustomResource
                                                                                	SESLambdaEventSourceResourceRequest
                                                                                }

                                                                                  SESLambdaEventSourceResource handles configuring SES configuration

                                                                                  func (SESLambdaEventSourceResource) Create

                                                                                  func (command SESLambdaEventSourceResource) Create(awsSession *session.Session,
                                                                                  	event *CloudFormationLambdaEvent,
                                                                                  	logger *logrus.Logger) (map[string]interface{}, error)

                                                                                    Create implements the custom resource create operation

                                                                                    func (SESLambdaEventSourceResource) Delete

                                                                                    func (command SESLambdaEventSourceResource) Delete(awsSession *session.Session,
                                                                                    	event *CloudFormationLambdaEvent,
                                                                                    	logger *logrus.Logger) (map[string]interface{}, error)

                                                                                      Delete implements the custom resource delete operation

                                                                                      func (*SESLambdaEventSourceResource) IAMPrivileges

                                                                                      func (command *SESLambdaEventSourceResource) IAMPrivileges() []string

                                                                                        IAMPrivileges returns the IAM privs for this custom action

                                                                                        func (SESLambdaEventSourceResource) Update

                                                                                        func (command SESLambdaEventSourceResource) Update(awsSession *session.Session,
                                                                                        	event *CloudFormationLambdaEvent,
                                                                                        	logger *logrus.Logger) (map[string]interface{}, error)

                                                                                          Update implements the custom resource update operation

                                                                                          type SESLambdaEventSourceResourceAction

                                                                                          type SESLambdaEventSourceResourceAction struct {
                                                                                          	ActionType       *gocf.StringExpr
                                                                                          	ActionProperties map[string]interface{}
                                                                                          }

                                                                                            SESLambdaEventSourceResourceAction represents an SES rule action TODO - specialized types for Actions

                                                                                            type SESLambdaEventSourceResourceRequest

                                                                                            type SESLambdaEventSourceResourceRequest struct {
                                                                                            	RuleSetName *gocf.StringExpr
                                                                                            	Rules       []*SESLambdaEventSourceResourceRule
                                                                                            }

                                                                                              SESLambdaEventSourceResourceRequest defines the request properties to configure SES

                                                                                              type SESLambdaEventSourceResourceRule

                                                                                              type SESLambdaEventSourceResourceRule struct {
                                                                                              	Name        *gocf.StringExpr
                                                                                              	Actions     []*SESLambdaEventSourceResourceAction
                                                                                              	ScanEnabled *gocf.BoolExpr `json:",omitempty"`
                                                                                              	Enabled     *gocf.BoolExpr `json:",omitempty"`
                                                                                              	Recipients  []*gocf.StringExpr
                                                                                              	TLSPolicy   *gocf.StringExpr `json:",omitempty"`
                                                                                              }

                                                                                                SESLambdaEventSourceResourceRule stores settings necessary to configure an SES inbound rule

                                                                                                type SNSLambdaEventSourceResource

                                                                                                type SNSLambdaEventSourceResource struct {
                                                                                                	gocf.CloudFormationCustomResource
                                                                                                	SNSLambdaEventSourceResourceRequest
                                                                                                }

                                                                                                  SNSLambdaEventSourceResource is a simple POC showing how to create custom resources

                                                                                                  func (SNSLambdaEventSourceResource) Create

                                                                                                  func (command SNSLambdaEventSourceResource) Create(awsSession *session.Session,
                                                                                                  	event *CloudFormationLambdaEvent,
                                                                                                  	logger *logrus.Logger) (map[string]interface{}, error)

                                                                                                    Create implements the custom resource create operation

                                                                                                    func (SNSLambdaEventSourceResource) Delete

                                                                                                    func (command SNSLambdaEventSourceResource) Delete(awsSession *session.Session,
                                                                                                    	event *CloudFormationLambdaEvent,
                                                                                                    	logger *logrus.Logger) (map[string]interface{}, error)

                                                                                                      Delete implements the custom resource delete operation

                                                                                                      func (*SNSLambdaEventSourceResource) IAMPrivileges

                                                                                                      func (command *SNSLambdaEventSourceResource) IAMPrivileges() []string

                                                                                                        IAMPrivileges returns the IAM privs for this custom action

                                                                                                        func (SNSLambdaEventSourceResource) Update

                                                                                                        func (command SNSLambdaEventSourceResource) Update(awsSession *session.Session,
                                                                                                        	event *CloudFormationLambdaEvent,
                                                                                                        	logger *logrus.Logger) (map[string]interface{}, error)

                                                                                                          Update implements the custom resource update operation

                                                                                                          type SNSLambdaEventSourceResourceRequest

                                                                                                          type SNSLambdaEventSourceResourceRequest struct {
                                                                                                          	LambdaTargetArn *gocf.StringExpr
                                                                                                          	SNSTopicArn     *gocf.StringExpr
                                                                                                          }

                                                                                                            SNSLambdaEventSourceResourceRequest defines the request properties to configure SNS

                                                                                                            type ZipToS3BucketResource

                                                                                                            type ZipToS3BucketResource struct {
                                                                                                            	gocf.CloudFormationCustomResource
                                                                                                            	ZipToS3BucketResourceRequest
                                                                                                            }

                                                                                                              ZipToS3BucketResource manages populating an S3 bucket with the contents of a ZIP file...

                                                                                                              func (ZipToS3BucketResource) Create

                                                                                                              func (command ZipToS3BucketResource) Create(awsSession *session.Session,
                                                                                                              	event *CloudFormationLambdaEvent,
                                                                                                              	logger *logrus.Logger) (map[string]interface{}, error)

                                                                                                                Create implements the custom resource create operation

                                                                                                                func (ZipToS3BucketResource) Delete

                                                                                                                func (command ZipToS3BucketResource) Delete(awsSession *session.Session,
                                                                                                                	event *CloudFormationLambdaEvent,
                                                                                                                	logger *logrus.Logger) (map[string]interface{}, error)

                                                                                                                  Delete implements the custom resource delete operation

                                                                                                                  func (*ZipToS3BucketResource) IAMPrivileges

                                                                                                                  func (command *ZipToS3BucketResource) IAMPrivileges() []string

                                                                                                                    IAMPrivileges returns the IAM privs for this custom action

                                                                                                                    func (ZipToS3BucketResource) Update

                                                                                                                    func (command ZipToS3BucketResource) Update(awsSession *session.Session,
                                                                                                                    	event *CloudFormationLambdaEvent,
                                                                                                                    	logger *logrus.Logger) (map[string]interface{}, error)

                                                                                                                      Update implements the custom resource update operation

                                                                                                                      type ZipToS3BucketResourceRequest

                                                                                                                      type ZipToS3BucketResourceRequest struct {
                                                                                                                      	SrcBucket    *gocf.StringExpr
                                                                                                                      	SrcKeyName   *gocf.StringExpr
                                                                                                                      	DestBucket   *gocf.StringExpr
                                                                                                                      	ManifestName string
                                                                                                                      	Manifest     map[string]interface{}
                                                                                                                      }

                                                                                                                        ZipToS3BucketResourceRequest is the data request made to a ZipToS3BucketResource lambda handler