github.com/mweagle/Sparta@v1.15.0/doc_sespermission_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 func sesLambdaProcessor(ctx context.Context, 11 props map[string]interface{}) (map[string]interface{}, error) { 12 lambdaCtx, _ := lambdacontext.FromContext(ctx) 13 Logger().WithFields(logrus.Fields{ 14 "RequestID": lambdaCtx.AwsRequestID, 15 "Properties": props, 16 }).Info("Lambda event") 17 return props, nil 18 } 19 20 func ExampleSESPermission_messageBody() { 21 var lambdaFunctions []*LambdaAWSInfo 22 // Define the IAM role 23 roleDefinition := IAMRoleDefinition{} 24 sesLambda, _ := NewAWSLambda(LambdaName(sesLambdaProcessor), 25 sesLambdaProcessor, 26 roleDefinition) 27 28 // Add a Permission s.t. the Lambda function is automatically invoked 29 // in response to inbound email 30 lambdaSESPermission := SESPermission{ 31 BasePermission: BasePermission{ 32 SourceArn: "*", 33 }, 34 InvocationType: "Event", 35 } 36 // Store the message body in a newly provisioned S3 bucket 37 bodyStorage, _ := lambdaSESPermission.NewMessageBodyStorageResource("MessageBody") 38 lambdaSESPermission.MessageBodyStorage = bodyStorage 39 40 // Add some custom ReceiptRules. 41 lambdaSESPermission.ReceiptRules = append(lambdaSESPermission.ReceiptRules, 42 ReceiptRule{ 43 Name: "Default", 44 Recipients: []string{}, 45 TLSPolicy: "Optional", 46 }) 47 sesLambda.Permissions = append(sesLambda.Permissions, lambdaSESPermission) 48 49 lambdaFunctions = append(lambdaFunctions, sesLambda) 50 Main("SESLambdaApp", "Registers for SES events and saves the MessageBody", lambdaFunctions, nil, nil) 51 } 52 53 func ExampleSESPermission_headersOnly() { 54 var lambdaFunctions []*LambdaAWSInfo 55 // Define the IAM role 56 roleDefinition := IAMRoleDefinition{} 57 sesLambda, _ := NewAWSLambda(LambdaName(sesLambdaProcessor), 58 sesLambdaProcessor, 59 roleDefinition) 60 61 // Add a Permission s.t. the Lambda function is automatically invoked 62 // in response to inbound email 63 lambdaSESPermission := SESPermission{ 64 BasePermission: BasePermission{ 65 SourceArn: "*", 66 }, 67 InvocationType: "Event", 68 } 69 // Add some custom ReceiptRules. Rules will be inserted (evaluated) in their 70 // array rank order. 71 lambdaSESPermission.ReceiptRules = make([]ReceiptRule, 0) 72 lambdaSESPermission.ReceiptRules = append(lambdaSESPermission.ReceiptRules, 73 ReceiptRule{ 74 Name: "Special", 75 Recipients: []string{"somebody@mydomain.io"}, 76 TLSPolicy: "Optional", 77 }) 78 79 lambdaSESPermission.ReceiptRules = append(lambdaSESPermission.ReceiptRules, 80 ReceiptRule{ 81 Name: "Default", 82 Recipients: []string{}, 83 TLSPolicy: "Optional", 84 }) 85 sesLambda.Permissions = append(sesLambda.Permissions, lambdaSESPermission) 86 87 lambdaFunctions = append(lambdaFunctions, sesLambda) 88 Main("SESLambdaApp", "Registers for SES events", lambdaFunctions, nil, nil) 89 }