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
- Variables
- func CloudFormationLambdaCustomResourceHandler(command CustomResourceCommand, logger *logrus.Logger) interface{}
- func NewCustomResourceLambdaHandler(resourceType string, logger *logrus.Logger) interface{}
- func SendCloudFormationResponse(lambdaCtx *awsLambdaCtx.LambdaContext, event *CloudFormationLambdaEvent, ...) error
- type CloudFormationLambdaEvent
- type CloudWatchEventSourceResourceRequest
- type CloudWatchLogsLambdaEventSourceFilter
- type CloudWatchLogsLambdaEventSourceResource
- func (command CloudWatchLogsLambdaEventSourceResource) Create(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- func (command CloudWatchLogsLambdaEventSourceResource) Delete(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- func (command *CloudWatchLogsLambdaEventSourceResource) IAMPrivileges() []string
- func (command CloudWatchLogsLambdaEventSourceResource) Update(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- type CustomResourceCommand
- type CustomResourcePrivilegedCommand
- type HelloWorldResource
- func (command HelloWorldResource) Create(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- func (command HelloWorldResource) Delete(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- func (command *HelloWorldResource) IAMPrivileges() []string
- func (command HelloWorldResource) Update(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- type HelloWorldResourceRequest
- type S3ArtifactPublisherResource
- func (command S3ArtifactPublisherResource) Create(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- func (command S3ArtifactPublisherResource) Delete(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- func (command *S3ArtifactPublisherResource) IAMPrivileges() []string
- func (command S3ArtifactPublisherResource) Update(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- type S3ArtifactPublisherResourceRequest
- type S3LambdaEventSourceResource
- func (command S3LambdaEventSourceResource) Create(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- func (command S3LambdaEventSourceResource) Delete(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- func (command *S3LambdaEventSourceResource) IAMPrivileges() []string
- func (command S3LambdaEventSourceResource) Update(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- type S3LambdaEventSourceResourceRequest
- type SESLambdaEventSourceResource
- func (command SESLambdaEventSourceResource) Create(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- func (command SESLambdaEventSourceResource) Delete(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- func (command *SESLambdaEventSourceResource) IAMPrivileges() []string
- func (command SESLambdaEventSourceResource) Update(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- type SESLambdaEventSourceResourceAction
- type SESLambdaEventSourceResourceRequest
- type SESLambdaEventSourceResourceRule
- type SNSLambdaEventSourceResource
- func (command SNSLambdaEventSourceResource) Create(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- func (command SNSLambdaEventSourceResource) Delete(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- func (command *SNSLambdaEventSourceResource) IAMPrivileges() []string
- func (command SNSLambdaEventSourceResource) Update(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- type SNSLambdaEventSourceResourceRequest
- type ZipToS3BucketResource
- func (command ZipToS3BucketResource) Create(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- func (command ZipToS3BucketResource) Delete(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- func (command *ZipToS3BucketResource) IAMPrivileges() []string
- func (command ZipToS3BucketResource) Update(awsSession *session.Session, event *CloudFormationLambdaEvent, ...) (map[string]interface{}, error)
- type ZipToS3BucketResourceRequest
Constants ¶
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" )
const ( // CustomResourceTypePrefix is the known custom resource // type prefix CustomResourceTypePrefix = "Custom::goAWS" )
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 ¶
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") // 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 ¶ added in v1.4.0
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 ¶
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 ¶ added in v1.4.0
func (command CloudWatchLogsLambdaEventSourceResource) Create(awsSession *session.Session, event *CloudFormationLambdaEvent, logger *logrus.Logger) (map[string]interface{}, error)
Create implements the create operation
func (CloudWatchLogsLambdaEventSourceResource) Delete ¶ added in v1.4.0
func (command CloudWatchLogsLambdaEventSourceResource) Delete(awsSession *session.Session, event *CloudFormationLambdaEvent, logger *logrus.Logger) (map[string]interface{}, error)
Delete implements the delete operation
func (*CloudWatchLogsLambdaEventSourceResource) IAMPrivileges ¶ added in v1.4.0
func (command *CloudWatchLogsLambdaEventSourceResource) IAMPrivileges() []string
IAMPrivileges returns the IAM privs for this custom action
func (CloudWatchLogsLambdaEventSourceResource) Update ¶ added in v1.4.0
func (command CloudWatchLogsLambdaEventSourceResource) Update(awsSession *session.Session, event *CloudFormationLambdaEvent, logger *logrus.Logger) (map[string]interface{}, error)
Update implements the update operation
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 ¶ added in v1.5.0
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 ¶ added in v1.4.0
func (command HelloWorldResource) Create(awsSession *session.Session, event *CloudFormationLambdaEvent, logger *logrus.Logger) (map[string]interface{}, error)
Create implements resource create
func (HelloWorldResource) Delete ¶ added in v1.4.0
func (command HelloWorldResource) Delete(awsSession *session.Session, event *CloudFormationLambdaEvent, logger *logrus.Logger) (map[string]interface{}, error)
Delete implements resource delete
func (*HelloWorldResource) IAMPrivileges ¶ added in v1.4.0
func (command *HelloWorldResource) IAMPrivileges() []string
IAMPrivileges returns the IAM privs for this custom action
func (HelloWorldResource) Update ¶ added in v1.4.0
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 ¶ added in v1.4.0
type S3ArtifactPublisherResource struct { gocf.CloudFormationCustomResource S3ArtifactPublisherResourceRequest }
S3ArtifactPublisherResource is a simple POC showing how to create custom resources
func (S3ArtifactPublisherResource) Create ¶ added in v1.4.0
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 ¶ added in v1.4.0
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 ¶ added in v1.4.0
func (command *S3ArtifactPublisherResource) IAMPrivileges() []string
IAMPrivileges returns the IAM privs for this custom action
func (S3ArtifactPublisherResource) Update ¶ added in v1.4.0
func (command S3ArtifactPublisherResource) Update(awsSession *session.Session, event *CloudFormationLambdaEvent, logger *logrus.Logger) (map[string]interface{}, error)
Update implements the S3 update operation
type S3ArtifactPublisherResourceRequest ¶ added in v1.4.0
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 ¶ added in v1.4.0
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 ¶ added in v1.4.0
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 ¶ added in v1.4.0
func (command *S3LambdaEventSourceResource) IAMPrivileges() []string
IAMPrivileges returns the IAM privs for this custom action
func (S3LambdaEventSourceResource) Update ¶ added in v1.4.0
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 ¶ added in v1.4.0
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 ¶ added in v1.4.0
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 ¶ added in v1.4.0
func (command *SESLambdaEventSourceResource) IAMPrivileges() []string
IAMPrivileges returns the IAM privs for this custom action
func (SESLambdaEventSourceResource) Update ¶ added in v1.4.0
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 ¶ added in v1.4.0
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 ¶ added in v1.4.0
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 ¶ added in v1.4.0
func (command *SNSLambdaEventSourceResource) IAMPrivileges() []string
IAMPrivileges returns the IAM privs for this custom action
func (SNSLambdaEventSourceResource) Update ¶ added in v1.4.0
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 ¶ added in v1.4.0
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 ¶ added in v1.4.0
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 ¶ added in v1.4.0
func (command *ZipToS3BucketResource) IAMPrivileges() []string
IAMPrivileges returns the IAM privs for this custom action
func (ZipToS3BucketResource) Update ¶ added in v1.4.0
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