CloudFormation中如何为S3桶多个事件配置同一个Lambda触发器
问题解答
你第一种写法的思路是正确的,CloudFormation的AWS::S3::Bucket资源LambdaConfigurations配置项支持用复数的Events字段传入事件数组,如果多个事件的触发目标Lambda、S3键过滤规则完全一致,不需要重复编写完整配置块。
正确配置示例(同Lambda同规则多事件)
直接在同一条LambdaConfigurations配置下,把你需要的所有事件放到Events数组中,同时保留原有的Function、Filter配置即可:
MyBucket: Condition: CreateNewBucket Type: AWS::S3::Bucket # ...其他Bucket配置... NotificationConfiguration: LambdaConfigurations: - Events: - 's3:ObjectCreated:Put' - 's3:ObjectCreated:Post' Function: !GetAtt YourLambdaFunction.Arn # 注意这里要填Lambda的ARN,不要直接写名称 Filter: S3Key: Rules: - Name: prefix Value: 'someValue'
需要分开写配置的场景
如果不同事件对应的触发Lambda不同,或者S3键的前缀/后缀过滤规则不同,才需要拆分多个配置项,每个配置项要写全所有必填字段:
LambdaConfigurations: # 第一个事件配置,对应前缀A - Event: 's3:ObjectCreated:Put' Function: !GetAtt YourLambdaFunction.Arn Filter: S3Key: Rules: - Name: prefix Value: 'prefixA/' # 第二个事件配置,对应前缀B - Event: 's3:ObjectCreated:Post' Function: !GetAtt YourLambdaFunction.Arn Filter: S3Key: Rules: - Name: prefix Value: 'prefixB/'
错误写法说明
- 你列出的第二种写法(仅拆分
Event字段、不补全Function、Filter)是无效的,每个LambdaConfigurations的列表项都必须包含完整的事件、目标函数、过滤规则(如果有)配置。 - 注意不要用单数
Event字段传数组,必须用复数Events字段才支持多事件配置。
内容的提问来源于stack exchange,提问作者elmekiesIsrael
相关产品推荐
相关产品推荐

