Documentation ¶
Overview ¶
Package decorator exposes Sparta decorator types to mutate the CloudFormation template
Index ¶
- Constants
- Variables
- func CloudFrontSiteDistributionDecorator(s3Site *sparta.S3Site, subdomain string, domainName string, ...) sparta.ServiceDecoratorHookHandler
- func CloudWatchErrorAlarmDecorator(periodWindow int, minutesPerPeriod int, thresholdGreaterThanOrEqualToValue int, ...) sparta.TemplateDecoratorHookFunc
- func CodeDeployServiceUpdateDecorator(updateType string, lambdaFuncs []*sparta.LambdaAWSInfo, ...) sparta.ServiceDecoratorHookFunc
- func DashboardDecorator(lambdaAWSInfo []*sparta.LambdaAWSInfo, timeSeriesPeriod int) sparta.ServiceDecoratorHookFunc
- func LambdaVersioningDecorator() sparta.TemplateDecorator
- func PublishAttOutputDecorator(keyName string, description string, fieldName string) sparta.TemplateDecoratorHookFunc
- func PublishRefOutputDecorator(keyName string, description string) sparta.TemplateDecoratorHookFunc
- func S3ArtifactPublisherDecorator(bucket gocf.Stringable, key gocf.Stringable, data map[string]interface{}) sparta.ServiceDecoratorHookHandler
- type DashboardTemplateData
- type LambdaTemplateData
- type LogAggregatorDecorator
- func (lad *LogAggregatorDecorator) DecorateService(context map[string]interface{}, serviceName string, template *gocf.Template, ...) error
- func (lad *LogAggregatorDecorator) DecorateTemplate(serviceName string, lambdaResourceName string, ...) error
- func (lad *LogAggregatorDecorator) KinesisLogicalResourceName() string
Constants ¶
const ( // OutputDashboardURL is the keyname used in the CloudFormation Output // that stores the CloudWatch Dashboard URL // @enum OutputKey OutputDashboardURL = "CloudWatchDashboardURL" )
Variables ¶
var LogAggregatorAssumePolicyDocument = sparta.ArbitraryJSONObject{ "Version": "2012-10-17", "Statement": []sparta.ArbitraryJSONObject{ { "Action": []string{"sts:AssumeRole"}, "Effect": "Allow", "Principal": sparta.ArbitraryJSONObject{ "Service": []string{ "logs.us-west-2.amazonaws.com", }, }, }, }, }
LogAggregatorAssumePolicyDocument is the document for LogSubscription filters
Functions ¶
func CloudFrontSiteDistributionDecorator ¶ added in v1.4.0
func CloudFrontSiteDistributionDecorator(s3Site *sparta.S3Site, subdomain string, domainName string, acmCertificateARN gocf.Stringable) sparta.ServiceDecoratorHookHandler
CloudFrontSiteDistributionDecorator returns a ServiceDecoratorHookHandler function that provisions a CloudFront distribution whose origin is the supplied S3Site bucket. If the acmCertificateARN value is non-nil, the CloudFront distribution will support SSL access via the ViewerCertificate struct
func CloudWatchErrorAlarmDecorator ¶ added in v1.4.0
func CloudWatchErrorAlarmDecorator(periodWindow int, minutesPerPeriod int, thresholdGreaterThanOrEqualToValue int, snsTopic gocf.Stringable) sparta.TemplateDecoratorHookFunc
CloudWatchErrorAlarmDecorator returns a TemplateDecoratorHookFunc that associates a CloudWatch Lambda Error count alarm with the given lambda function. The four parameters are periodWindow, minutes per period the strict lower bound value, and the SNS topic to which alerts should be sent. See the CloudWatch alarm resource type in the official AWS documentation at https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html for more information
func CodeDeployServiceUpdateDecorator ¶
func CodeDeployServiceUpdateDecorator(updateType string, lambdaFuncs []*sparta.LambdaAWSInfo, preHook *sparta.LambdaAWSInfo, postHook *sparta.LambdaAWSInfo) sparta.ServiceDecoratorHookFunc
CodeDeployServiceUpdateDecorator is a service level decorator that attaches the CodeDeploy safe update to an upgrade operation. Ref: https://github.com/awslabs/serverless-application-model/blob/master/docs/safe_lambda_deployments.rst
func DashboardDecorator ¶
func DashboardDecorator(lambdaAWSInfo []*sparta.LambdaAWSInfo, timeSeriesPeriod int) sparta.ServiceDecoratorHookFunc
DashboardDecorator returns a ServiceDecoratorHook function that can be attached the workflow to create a dashboard
func LambdaVersioningDecorator ¶ added in v1.4.0
func LambdaVersioningDecorator() sparta.TemplateDecorator
LambdaVersioningDecorator returns a TemplateDecorator that is responsible for including a versioning resource with the given lambda function
func PublishAttOutputDecorator ¶
func PublishAttOutputDecorator(keyName string, description string, fieldName string) sparta.TemplateDecoratorHookFunc
PublishAttOutputDecorator returns a TemplateDecoratorHookFunc that publishes an Att value for a given Lambda
func PublishRefOutputDecorator ¶
PublishRefOutputDecorator returns an TemplateDecoratorHookFunc that publishes the Ref value for a given lambda
func S3ArtifactPublisherDecorator ¶ added in v1.4.0
func S3ArtifactPublisherDecorator(bucket gocf.Stringable, key gocf.Stringable, data map[string]interface{}) sparta.ServiceDecoratorHookHandler
S3ArtifactPublisherDecorator returns a ServiceDecoratorHookHandler function that publishes the given data to an S3 Bucket using the given bucket and key.
Types ¶
type DashboardTemplateData ¶
type DashboardTemplateData struct { // The list of lambda functions LambdaFunctions []*LambdaTemplateData // SpartaVersion is the Sparta library used to provision this service SpartaVersion string // SpartaGitHash is the commit hash of this version of the library SpartaGitHash string TimeSeriesPeriod int Extents widgetExtents }
DashboardTemplateData is the object supplied to the dashboard template to generate the resulting dashboard
type LambdaTemplateData ¶
type LambdaTemplateData struct { LambdaAWSInfo *sparta.LambdaAWSInfo ResourceName string }
LambdaTemplateData is the mapping of Sparta public LambdaAWSInfo together with the CloudFormationResource name this resource uses
type LogAggregatorDecorator ¶
type LogAggregatorDecorator struct {
// contains filtered or unexported fields
}
LogAggregatorDecorator is the decorator that satisfies both the ServiceDecoratorHandler and TemplateDecoratorHandler interfaces. It ensures that each lambda function has a CloudWatch logs subscription that forwards to a Kinesis stream. That stream is then subscribed to by the relay lambda function. Only log statements of level info or higher are published to Kinesis.
func NewLogAggregatorDecorator ¶
func NewLogAggregatorDecorator( kinesisResource *gocf.KinesisStream, kinesisMapping *sparta.EventSourceMapping, relay *sparta.LambdaAWSInfo) *LogAggregatorDecorator
NewLogAggregatorDecorator returns a ServiceDecoratorHook that registers a Kinesis stream lambda log aggregator
func (*LogAggregatorDecorator) DecorateService ¶
func (lad *LogAggregatorDecorator) DecorateService(context map[string]interface{}, serviceName string, template *gocf.Template, S3Bucket string, S3Key string, buildID string, awsSession *session.Session, noop bool, logger *logrus.Logger) error
DecorateService annotates the service with the Kinesis hook
func (*LogAggregatorDecorator) DecorateTemplate ¶
func (lad *LogAggregatorDecorator) DecorateTemplate(serviceName string, lambdaResourceName string, lambdaResource gocf.LambdaFunction, resourceMetadata map[string]interface{}, S3Bucket string, S3Key string, buildID string, template *gocf.Template, context map[string]interface{}, logger *logrus.Logger) error
DecorateTemplate annotates the lambda with the log forwarding sink info
func (*LogAggregatorDecorator) KinesisLogicalResourceName ¶
func (lad *LogAggregatorDecorator) KinesisLogicalResourceName() string
KinesisLogicalResourceName returns the name of the Kinesis stream that will be provisioned by this Decorator