Amazon s3 创建具有特定前缀的对象时触发lambda
我正在创建一个lambda,当在某个bucket中创建对象时应该调用它。我只希望对某些键前缀调用它。我见过在定义bucket时在bucket上使用Amazon s3 创建具有特定前缀的对象时触发lambda,amazon-s3,aws-lambda,amazon-cloudformation,aws-sam,Amazon S3,Aws Lambda,Amazon Cloudformation,Aws Sam,我正在创建一个lambda,当在某个bucket中创建对象时应该调用它。我只希望对某些键前缀调用它。我见过在定义bucket时在bucket上使用通知配置设置此选项的例子: NotificationConfiguration: LambdaConfigurations: - Function: !Ref SomeLambdaArn Event: "s3:ObjectCreated:*" Filter: S3Key: Rule
通知配置设置此选项的例子:
NotificationConfiguration:
LambdaConfigurations:
- Function: !Ref SomeLambdaArn
Event: "s3:ObjectCreated:*"
Filter:
S3Key:
Rules:
- Name: prefix
Value: zip
然而,我宁愿不修改bucket的CloudFormation定义。和萨姆一起:
但是有没有办法限制它只对某些前缀触发?或者,是否有方法将通知配置
添加到现有bucket?如果我理解正确,您希望在lambda中定义前缀,而不是bucket
我就是这么做的,就我所知,这是一种魅力
Resources:
ConvertToParquet:
Type: AWS::Serverless::Function
Properties:
CodeUri: handler/convert_to_parquet
MemorySize: 3008
Timeout: 90
Policies:
- AmazonS3FullAccess
Events:
SummaryCSVCreated:
Type: S3
Properties:
Bucket: !Ref UploadBucket
Events: s3:ObjectCreated:*
Filter:
S3Key:
Rules:
- Name: suffix
Value: '.txt'
UploadBucket:
Type: AWS::S3::Bucket
因此,这看起来是可行的,但它失败了,因为bucket是在不同的模板中定义的。更深入地说,我似乎无法将两个lambda配置为收到相同对象创建事件的通知,因为。我想我得去调查一下。
Resources:
ConvertToParquet:
Type: AWS::Serverless::Function
Properties:
CodeUri: handler/convert_to_parquet
MemorySize: 3008
Timeout: 90
Policies:
- AmazonS3FullAccess
Events:
SummaryCSVCreated:
Type: S3
Properties:
Bucket: !Ref UploadBucket
Events: s3:ObjectCreated:*
Filter:
S3Key:
Rules:
- Name: suffix
Value: '.txt'
UploadBucket:
Type: AWS::S3::Bucket