Python CDK配置S3触发Lambda多后缀规则的正确方法
问题说明
你当前的CDK配置写法不正确,无法实现预期触发效果,核心问题有3个:
- 前缀配置错误:需求要求匹配
input-files文件夹,你配置的prefix值为input,会误匹配所有以input开头的路径(例如input-other/、input-test/目录下的文件),且未添加路径结尾的斜杠,无法精准定位目标目录,正确前缀值应为input-files/ - 后缀参数用法错误:
NotificationKeyFilter的suffix参数仅支持传入单个字符串,你在同一个suffix参数位传入两个后缀值的写法不符合API定义,无法被解析;此外你写的第二个后缀值"000.json "末尾带有冗余空格,会直接导致匹配失败 - 多后缀匹配逻辑错误:S3事件通知的单个过滤规则仅支持配置一组前后缀组合,要实现「文件名满足A后缀 或 B后缀」的OR匹配逻辑,需要为每个后缀单独创建独立的
NotificationKeyFilter条目,不能将多个后缀写入同一个过滤规则中
正确配置代码
trigger_lambda.add_event_source( _aws_lambda_event_sources.S3EventSource( bucket, events=[_s3.EventType.OBJECT_CREATED], filters=[ # 匹配input-files目录下以_processed.json结尾的文件 _s3.NotificationKeyFilter( prefix="input-files/", suffix="_processed.json" ), # 匹配input-files目录下以000.json结尾的文件 _s3.NotificationKeyFilter( prefix="input-files/", suffix="000.json" ) ] ) )
补充说明:配置中多个独立的
NotificationKeyFilter条目为OR匹配关系,只要上传的文件满足任意一条过滤规则,就会触发Lambda执行。另外注意你原有代码中的Lambda变量名trigger-_lambda包含中划线,不符合Python变量命名规范,实际运行会抛出语法错误,建议调整为下划线命名格式如trigger_lambda。
内容的提问来源于stack exchange,提问作者TNN
相关产品推荐
相关产品推荐

