You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为AWS Amplify生成的DynamoDB流CloudFormation模板添加FilterCriteria?

解决方法

直接修改Amplify自动生成的CloudFormation模板确实没用,每次执行amplify push都会被覆盖,不过你可以通过以下两种方式实现需求:

1. 使用Amplify CLI的Override功能(推荐)

这是最直接的方式,通过Amplify官方提供的扩展能力修改现有资源属性,修改会被持久化保存,不会被push覆盖:

  • 执行命令:amplify override function <你的Lambda函数名称>
  • 该命令会在对应Lambda函数的目录下生成override.ts(或override.js)文件
  • 在这个文件里找到对应的LambdaEventSourceMapping资源,添加FilterCriteria属性,示例代码如下:
import { AmplifyRootStackTemplate } from '@aws-amplify/cli-extensibility-helper';

export function override(resources: AmplifyRootStackTemplate) {
  // 替换成你实际的EventSourceMapping资源名称
  const eventSourceMapping = resources.resources.LambdaEventSourceMappingXXXX;
  if (eventSourceMapping) {
    eventSourceMapping.Properties.FilterCriteria = {
      Filters: [
        // 这里替换成你的过滤规则,比如只监听INSERT和UPDATE事件
        { Pattern: '{"eventName": ["INSERT", "UPDATE"]}' }
      ]
    };
  }
}
  • 修改完成后执行amplify push,Amplify会自动将这个配置合并到最终的CloudFormation模板中。

2. 使用自定义CloudFormation资源

如果需要更灵活的配置,也可以在Amplify项目中添加自定义资源:

  • 在amplify/backend/custom/目录下创建新的自定义资源文件夹(比如custom-dynamo-trigger)
  • 在该文件夹中创建template.yml,定义自己的LambdaEventSourceMapping资源,并配置FilterCriteria
  • 如果Amplify已经自动生成了触发器,需要先通过override功能删除原有自动生成的LambdaEventSourceMapping资源,避免冲突

内容的提问来源于stack exchange,提问作者Corey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 08:43:14