github.com/mweagle/Sparta@v1.15.0/doc_s3permission_test.go (about) 1 package sparta 2 3 import ( 4 "context" 5 6 "github.com/aws/aws-lambda-go/lambdacontext" 7 "github.com/sirupsen/logrus" 8 ) 9 10 const s3Bucket = "arn:aws:sns:us-west-2:123412341234:myBucket" 11 12 func s3LambdaProcessor(ctx context.Context, 13 props map[string]interface{}) (map[string]interface{}, error) { 14 lambdaCtx, _ := lambdacontext.FromContext(ctx) 15 Logger().WithFields(logrus.Fields{ 16 "RequestID": lambdaCtx.AwsRequestID, 17 "Properties": props, 18 }).Info("Lambda event") 19 return props, nil 20 } 21 22 func ExampleS3Permission() { 23 var lambdaFunctions []*LambdaAWSInfo 24 // Define the IAM role 25 roleDefinition := IAMRoleDefinition{} 26 roleDefinition.Privileges = append(roleDefinition.Privileges, IAMRolePrivilege{ 27 Actions: []string{"s3:GetObject", 28 "s3:PutObject"}, 29 Resource: s3Bucket, 30 }) 31 // Create the Lambda 32 s3Lambda, _ := NewAWSLambda(LambdaName(s3LambdaProcessor), 33 s3LambdaProcessor, 34 IAMRoleDefinition{}) 35 36 // Add a Permission s.t. the Lambda function automatically registers for S3 events 37 s3Lambda.Permissions = append(s3Lambda.Permissions, S3Permission{ 38 BasePermission: BasePermission{ 39 SourceArn: s3Bucket, 40 }, 41 Events: []string{"s3:ObjectCreated:*", "s3:ObjectRemoved:*"}, 42 }) 43 44 lambdaFunctions = append(lambdaFunctions, s3Lambda) 45 Main("S3LambdaApp", "Registers for S3 events", lambdaFunctions, nil, nil) 46 }