To set up an AWS Lambda function, an Amazon S3 bucket, and an S3 trigger for the function using AWS CloudFormation, you can use the AWS::Lambda::Function
, AWS::S3::Bucket
, and AWS::Lambda::EventSourceMapping
resources. Here is an example of how you might use these resources in a CloudFormation template:
AWSTemplateFormatVersion: "2010-09-09"
Description: "Create Lambda S3 triggger"
Parameters:
MyBucketName:
Description: S3 Bucket Name
Type: String
Default: abhaysingh091290
Resources:
MyIAMRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
Action:
- sts:AssumeRole
Policies:
- PolicyName: MyPolicy
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action:
- s3:ListBucket
Resource: arn:aws:s3:::${MyBucketName}
LambdaPermission:
Type: AWS::Lambda::Permission
Properties:
Action: 'lambda:InvokeFunction'
FunctionName: !Ref MyFunction
Principal: s3.amazonaws.com
SourceArn: !Sub 'arn:aws:s3:::${MyBucketName}'
SourceAccount: !Ref AWS::AccountId
MyFunction:
Type: AWS::Lambda::Function
Properties:
Code:
ZipFile: |
def handler(event, context):
return "Hello, World!"
Handler: index.handler
Role: !GetAtt MyIAMRole.Arn
Runtime: python3.8
Timeout: 30
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Ref MyBucketName
NotificationConfiguration:
LambdaConfigurations:
- Event: s3:ObjectCreated:*
Function: !GetAtt MyFunction.Arn
Filter:
S3Key:
Rules:
- Name: Suffix
Value: ".txt"
- Name: Prefix
Value: "test-"
Leave a Comment