Documentation ¶
Overview ¶
Package archetype provides a set of convenience functions that transform a free function or struct implementing a specific interface into a *sparta.LambdaAWSInfo struct complete with the necessary AWS permissions.
Index ¶
- func NewCloudWatchEventedReactor(reactor CloudWatchReactor, eventPatterns map[string]map[string]interface{}, ...) (*sparta.LambdaAWSInfo, error)
- func NewCloudWatchReactor(reactor CloudWatchReactor, ...) (*sparta.LambdaAWSInfo, error)
- func NewCloudWatchScheduledReactor(reactor CloudWatchReactor, cronSchedules map[string]string, ...) (*sparta.LambdaAWSInfo, error)
- func NewCodeCommitReactor(reactor CodeCommitReactor, repositoryName gocf.Stringable, branches []string, ...) (*sparta.LambdaAWSInfo, error)
- func NewDynamoDBReactor(reactor DynamoDBReactor, dynamoDBARN gocf.Stringable, startingPosition string, ...) (*sparta.LambdaAWSInfo, error)
- func NewKinesisReactor(reactor KinesisReactor, kinesisStream gocf.Stringable, startingPosition string, ...) (*sparta.LambdaAWSInfo, error)
- func NewS3Reactor(reactor S3Reactor, s3Bucket gocf.Stringable, ...) (*sparta.LambdaAWSInfo, error)
- func NewS3ScopedReactor(reactor S3Reactor, s3Bucket gocf.Stringable, keyPathPrefix string, ...) (*sparta.LambdaAWSInfo, error)
- func NewSNSReactor(reactor SNSReactor, snsTopic gocf.Stringable, ...) (*sparta.LambdaAWSInfo, error)
- type CloudWatchReactor
- type CloudWatchReactorFunc
- type CodeCommitReactor
- type CodeCommitReactorFunc
- type DynamoDBReactor
- type DynamoDBReactorFunc
- type KinesisReactor
- type KinesisReactorFunc
- type ReactorNameProvider
- type S3Reactor
- type S3ReactorFunc
- type SNSReactor
- type SNSReactorFunc
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewCloudWatchEventedReactor ¶ added in v1.7.3
func NewCloudWatchEventedReactor(reactor CloudWatchReactor, eventPatterns map[string]map[string]interface{}, additionalLambdaPermissions []sparta.IAMRolePrivilege) (*sparta.LambdaAWSInfo, error)
NewCloudWatchEventedReactor returns a CloudWatch logs reactor lambda function that executes in response to the given events. The eventPatterns map is a map of names to map[string]interface{} values that represents the events to listen to. See https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html for the proper syntax. Example:
map[string]interface{}{ "source": []string{"aws.ec2"}, "detail-type": []string{"EC2 Instance state change"}, }
func NewCloudWatchReactor ¶ added in v1.7.3
func NewCloudWatchReactor(reactor CloudWatchReactor, subscriptions map[string]sparta.CloudWatchEventsRule, additionalLambdaPermissions []sparta.IAMRolePrivilege) (*sparta.LambdaAWSInfo, error)
NewCloudWatchReactor returns a CloudWatch logs reactor lambda function
func NewCloudWatchScheduledReactor ¶ added in v1.7.3
func NewCloudWatchScheduledReactor(reactor CloudWatchReactor, cronSchedules map[string]string, additionalLambdaPermissions []sparta.IAMRolePrivilege) (*sparta.LambdaAWSInfo, error)
NewCloudWatchScheduledReactor returns a CloudWatch logs reactor lambda function that executes with the given schedule. The cronSchedules map is a map of names to ScheduleExpressions. See https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#RateExpressions for the proper syntax. Example:
"rate(5 minutes)"
func NewCodeCommitReactor ¶ added in v1.9.1
func NewCodeCommitReactor(reactor CodeCommitReactor, repositoryName gocf.Stringable, branches []string, events []string, additionalLambdaPermissions []sparta.IAMRolePrivilege) (*sparta.LambdaAWSInfo, error)
NewCodeCommitReactor returns an SNS reactor lambda function
func NewDynamoDBReactor ¶
func NewDynamoDBReactor(reactor DynamoDBReactor, dynamoDBARN gocf.Stringable, startingPosition string, batchSize int64, additionalLambdaPermissions []sparta.IAMRolePrivilege) (*sparta.LambdaAWSInfo, error)
NewDynamoDBReactor returns an Kinesis reactor lambda function
func NewKinesisReactor ¶
func NewKinesisReactor(reactor KinesisReactor, kinesisStream gocf.Stringable, startingPosition string, batchSize int64, additionalLambdaPermissions []sparta.IAMRolePrivilege) (*sparta.LambdaAWSInfo, error)
NewKinesisReactor returns an Kinesis reactor lambda function
func NewS3Reactor ¶
func NewS3Reactor(reactor S3Reactor, s3Bucket gocf.Stringable, additionalLambdaPermissions []sparta.IAMRolePrivilege) (*sparta.LambdaAWSInfo, error)
NewS3Reactor returns an S3 reactor lambda function
func NewS3ScopedReactor ¶
func NewS3ScopedReactor(reactor S3Reactor, s3Bucket gocf.Stringable, keyPathPrefix string, additionalLambdaPermissions []sparta.IAMRolePrivilege) (*sparta.LambdaAWSInfo, error)
NewS3ScopedReactor returns an S3 reactor lambda function scoped to the given S3 key prefix
func NewSNSReactor ¶
func NewSNSReactor(reactor SNSReactor, snsTopic gocf.Stringable, additionalLambdaPermissions []sparta.IAMRolePrivilege) (*sparta.LambdaAWSInfo, error)
NewSNSReactor returns an SNS reactor lambda function
Types ¶
type CloudWatchReactor ¶ added in v1.8.0
type CloudWatchReactor interface { // OnLogMessage when an SNS event occurs. Check the snsEvent field // for the specific event OnCloudWatchMessage(ctx context.Context, cwLogs awsLambdaEvents.CloudwatchLogsEvent) (interface{}, error) }
CloudWatchReactor represents a lambda function that responds to CW messages
type CloudWatchReactorFunc ¶ added in v1.8.0
type CloudWatchReactorFunc func(ctx context.Context, cwLogs awsLambdaEvents.CloudwatchLogsEvent) (interface{}, error)
CloudWatchReactorFunc is a free function that adapts a CloudWatchReactor compliant signature into a function that exposes an OnEvent function
func (CloudWatchReactorFunc) OnCloudWatchMessage ¶ added in v1.8.0
func (reactorFunc CloudWatchReactorFunc) OnCloudWatchMessage(ctx context.Context, cwLogs awsLambdaEvents.CloudwatchLogsEvent) (interface{}, error)
OnCloudWatchMessage satisfies the CloudWatchReactor interface
func (CloudWatchReactorFunc) ReactorName ¶ added in v1.8.0
func (reactorFunc CloudWatchReactorFunc) ReactorName() string
ReactorName provides the name of the reactor func
type CodeCommitReactor ¶ added in v1.9.1
type CodeCommitReactor interface { // OnCodeCommitEvent when an SNS event occurs. Check the codeCommitEvent field // for the specific event OnCodeCommitEvent(ctx context.Context, codeCommitEvent awsLambdaEvents.CodeCommitEvent) (interface{}, error) }
CodeCommitReactor represents a lambda function that responds to CodeCommit events
type CodeCommitReactorFunc ¶ added in v1.9.1
type CodeCommitReactorFunc func(ctx context.Context, codeCommitEvent awsLambdaEvents.CodeCommitEvent) (interface{}, error)
CodeCommitReactorFunc is a free function that adapts a CodeCommitReactor compliant signature into a function that exposes an OnEvent function
func (CodeCommitReactorFunc) OnCodeCommitEvent ¶ added in v1.9.1
func (reactorFunc CodeCommitReactorFunc) OnCodeCommitEvent(ctx context.Context, codeCommitEvent awsLambdaEvents.CodeCommitEvent) (interface{}, error)
OnCodeCommitEvent satisfies the CodeCommitReactor interface
func (CodeCommitReactorFunc) ReactorName ¶ added in v1.9.1
func (reactorFunc CodeCommitReactorFunc) ReactorName() string
ReactorName provides the name of the reactor func
type DynamoDBReactor ¶
type DynamoDBReactor interface { // OnEvent when an SNS event occurs. Check the snsEvent field // for the specific event OnDynamoEvent(ctx context.Context, dynamoEvent awsLambdaEvents.DynamoDBEvent) (interface{}, error) }
DynamoDBReactor represents a lambda function that responds to Dynamo messages
type DynamoDBReactorFunc ¶
type DynamoDBReactorFunc func(ctx context.Context, dynamoEvent awsLambdaEvents.DynamoDBEvent) (interface{}, error)
DynamoDBReactorFunc is a free function that adapts a DynamoDBReactor compliant signature into a function that exposes an OnEvent function
func (DynamoDBReactorFunc) OnDynamoEvent ¶
func (reactorFunc DynamoDBReactorFunc) OnDynamoEvent(ctx context.Context, dynamoEvent awsLambdaEvents.DynamoDBEvent) (interface{}, error)
OnDynamoEvent satisfies the DynamoDBReactor interface
func (DynamoDBReactorFunc) ReactorName ¶ added in v1.5.0
func (reactorFunc DynamoDBReactorFunc) ReactorName() string
ReactorName provides the name of the reactor func
type KinesisReactor ¶
type KinesisReactor interface { // OnEvent when an SNS event occurs. Check the snsEvent field // for the specific event OnKinesisMessage(ctx context.Context, kinesisEvent awsLambdaEvents.KinesisEvent) (interface{}, error) }
KinesisReactor represents a lambda function that responds to Kinesis messages
type KinesisReactorFunc ¶
type KinesisReactorFunc func(ctx context.Context, kinesisEvent awsLambdaEvents.KinesisEvent) (interface{}, error)
KinesisReactorFunc is a free function that adapts a KinesisReactor compliant signature into a function that exposes an OnEvent function
func (KinesisReactorFunc) OnKinesisMessage ¶
func (reactorFunc KinesisReactorFunc) OnKinesisMessage(ctx context.Context, kinesisEvent awsLambdaEvents.KinesisEvent) (interface{}, error)
OnKinesisMessage satisfies the KinesisReactor interface
func (KinesisReactorFunc) ReactorName ¶ added in v1.5.0
func (reactorFunc KinesisReactorFunc) ReactorName() string
ReactorName provides the name of the reactor func
type ReactorNameProvider ¶ added in v1.5.0
type ReactorNameProvider interface {
ReactorName() string
}
ReactorNameProvider is an interface so that a reactor function can provide a custom name which prevents collisions
type S3Reactor ¶
type S3Reactor interface { // OnS3Event when an S3 event occurs. Check the event.EventName field // for the specific event OnS3Event(ctx context.Context, event awsLambdaEvents.S3Event) (interface{}, error) }
S3Reactor represents a lambda function that responds to typical S3 operations
Example ¶
ExampleS3Reactor illustrates how to create an S3 event subscriber
inlineReactor := func(ctx context.Context, s3Event awsLambdaEvents.S3Event) (interface{}, error) { logger, loggerOk := ctx.Value(sparta.ContextKeyLogger).(*logrus.Logger) if loggerOk { for _, eachRecord := range s3Event.Records { logger.WithField("EventType", eachRecord.EventName). WithField("Entity", eachRecord.S3). Info("Event info") } } return len(s3Event.Records), nil } // Create the *sparta.LambdaAWSInfo wrapper lambdaFn, lambdaFnErr := NewS3Reactor(S3ReactorFunc(inlineReactor), gocf.String("MY-S3-BUCKET-TO-REACT"), nil) fmt.Printf("LambdaFn: %#v, LambdaFnErr: %#v", lambdaFn, lambdaFnErr)
Output:
type S3ReactorFunc ¶
type S3ReactorFunc func(ctx context.Context, event awsLambdaEvents.S3Event) (interface{}, error)
S3ReactorFunc is a free function that adapts a S3Reactor compliant signature into a function that exposes an OnS3Event function
func (S3ReactorFunc) OnS3Event ¶
func (reactorFunc S3ReactorFunc) OnS3Event(ctx context.Context, event awsLambdaEvents.S3Event) (interface{}, error)
OnS3Event satisfies the S3Reactor interface
func (S3ReactorFunc) ReactorName ¶ added in v1.5.0
func (reactorFunc S3ReactorFunc) ReactorName() string
ReactorName provides the name of the reactor func
type SNSReactor ¶
type SNSReactor interface { // OnSNSEvent when an SNS event occurs. Check the snsEvent field // for the specific event OnSNSEvent(ctx context.Context, snsEvent awsLambdaEvents.SNSEvent) (interface{}, error) }
SNSReactor represents a lambda function that responds to typical SNS events
Example ¶
ExampleSNSReactor illustrates how to create an SNS notification subscriber
inlineReactor := func(ctx context.Context, snsEvent awsLambdaEvents.SNSEvent) (interface{}, error) { logger, loggerOk := ctx.Value(sparta.ContextKeyLogger).(*logrus.Logger) if loggerOk { logger.WithFields(logrus.Fields{ "Event": snsEvent, }).Info("Event received") } return &snsEvent, nil } // Create the *sparta.LambdaAWSInfo wrapper lambdaFn, lambdaFnErr := NewSNSReactor(SNSReactorFunc(inlineReactor), gocf.String("MY-SNS-TOPIC"), nil) fmt.Printf("LambdaFn: %#v, LambdaFnErr: %#v", lambdaFn, lambdaFnErr)
Output:
type SNSReactorFunc ¶
type SNSReactorFunc func(ctx context.Context, snsEvent awsLambdaEvents.SNSEvent) (interface{}, error)
SNSReactorFunc is a free function that adapts a SNSReactor compliant signature into a function that exposes an OnEvent function
func (SNSReactorFunc) OnSNSEvent ¶
func (reactorFunc SNSReactorFunc) OnSNSEvent(ctx context.Context, snsEvent awsLambdaEvents.SNSEvent) (interface{}, error)
OnSNSEvent satisfies the SNSReactor interface
func (SNSReactorFunc) ReactorName ¶ added in v1.5.0
func (reactorFunc SNSReactorFunc) ReactorName() string
ReactorName provides the name of the reactor func