CDK部署DynamoDB事件源时遇FilterCriteria不支持属性错误
解决Lambda添加DynamoDB事件源过滤器后部署报错问题
问题原因
报错提示Encountered unsupported property FilterCriteria,核心原因是当前使用的AWS CDK版本不支持FilterCriteria属性,或是项目内CDK相关依赖包版本不一致,导致CDK生成了CloudFormation无法识别的模板结构。
解决方案
1. 升级AWS CDK及相关依赖包
- 升级全局CDK CLI工具:
npm install -g aws-cdk@latest - 升级项目内的CDK核心及服务依赖(以npm为例):
确保所有CDK相关包版本完全一致,避免跨版本兼容问题。npm update @aws-cdk/core @aws-cdk/aws-lambda @aws-cdk/aws-lambda-event-sources @aws-cdk/aws-dynamodb
2. 验证代码写法正确性
你的代码写法在CDK v2.x版本中是合规的,若使用v1.x版本需确认对应API是否匹配,以下是标准写法示例:
claLambda.addEventSource(new lambdaEventSources.DynamoEventSource(drTable, { startingPosition: lambda.StartingPosition.TRIM_HORIZON, batchSize: 5, retryAttempts: 0, bisectBatchOnError: false, filters: [ lambda.FilterCriteria.filter({ eventName: lambda.FilterRule.isEqual("INSERT"), dynamodb: { NewImage: { description: { S: lambda.FilterRule.exists() } }} }), ] }));
3. 重新执行部署
依赖升级完成并确认代码无误后,重新运行部署命令:
cdk deploy
补充排查点
若升级后仍报错,检查以下情况:
- 项目是否混合使用了CDK v1和v2的依赖,需统一为同一大版本
- 当前部署区域是否支持Lambda事件源过滤器功能(目前AWS绝大多数区域已支持)
内容的提问来源于stack exchange,提问作者Dionisis G
相关产品推荐
相关产品推荐

