AWS SAM模板中如何为S3事件添加多个触发规则?
问题根因
- S3事件通知的单条过滤规则组内,多个规则是逻辑与的关系,要求对象Key同时满足所有规则才会触发事件
- S3限制单条规则组内同类型规则(
prefix/suffix)只能出现一次,你在同一个Rules列表下写了两个prefix、两个suffix,既不符合业务逻辑(对象不可能同时属于两个前缀目录),也违反了S3的配置约束,所以触发重复值报错。
修复方案
把两个路径的触发需求拆分为两条独立的S3事件配置,两条事件是逻辑或的关系,任意一条匹配成功就会触发Lambda,符合你的业务需求。
修改后的SAM模板对应部分如下:
LambdaS3: # Name change -change fun name Type: AWS::Serverless::Function Properties: Handler: lambda_function.lambda_handler Runtime: python3.7 Timeout: 60 FunctionName: !Sub "${Environment}somefun" CodeUri: ./mysource/src Role: !GetAtt myiam.Arn Description: "Test" Environment: Variables: KINESIS_STREAM: !Sub "${Environment}_my_kinesis" ENVIRONMENT: !Sub "${Environment}" Events: FileUploadL1: Type: S3 Properties: Bucket: !Ref MyBucket Events: s3:ObjectCreated:* Filter: S3Key: Rules: - Name: prefix Value: "L1/Test_1/INPUT/" - Name: suffix Value: ".json" FileUploadL2: Type: S3 Properties: Bucket: !Ref MyBucket Events: s3:ObjectCreated:* Filter: S3Key: Rules: - Name: prefix Value: "L2/Test_2/INPUT/" - Name: suffix Value: ".json"
内容的提问来源于stack exchange,提问作者adhi hari
相关产品推荐
相关产品推荐

