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  }