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

DynamoDB Stream触发Lambda失败:无法触发SNS通知问题求助

排查步骤

1. 检查Lambda的基于资源策略权限

DynamoDB流需要具备调用目标Lambda的权限,前往第二个Lambda的配置 > 权限 > 基于资源的策略,确认存在来自DynamoDB服务的调用权限策略,示例如下:

{
  "Version": "2012-10-17",
  "Id": "dynamodb-trigger-policy",
  "Statement": [
    {
      "Sid": "AllowDynamoDBInvoke",
      "Effect": "Allow",
      "Principal": {
        "Service": "dynamodb.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:[区域]:[账户ID]:function:[你的第二个Lambda名称]",
      "Condition": {
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:dynamodb:[区域]:[账户ID]:table:[你的表名]/stream:[流ID]"
        }
      }
    }
  ]
}

若缺失该策略,可手动添加或删除触发器重新创建(重新创建时AWS会自动生成该权限)。

2. 验证Lambda对DynamoDB流事件格式的兼容性

单独测试时使用的是自定义JSON事件,但DynamoDB流触发的事件为固定结构(包含Records数组)。检查第二个Lambda的代码是否正确解析该格式,示例流事件结构:

{
  "Records": [
    {
      "eventName": "INSERT",
      "dynamodb": {
        "NewImage": { /* 写入的新数据 */ }
      }
    }
  ]
}

若代码直接读取顶层字段而非Records数组内的数据,会导致执行报错,触发Function call failed。

3. 查看CloudWatch日志定位具体错误

前往第二个Lambda的监控 > 日志 > 日志组,查看流触发时的执行日志,日志中会明确标注错误原因(如代码异常、权限缺失、超时等)。这是定位问题最直接的方式。

4. 检查Lambda并发限制

前往第二个Lambda的配置 > 并发,确认:

  • 预留并发数未设为0
  • 账户级并发配额未被耗尽

若并发不足,DynamoDB调用Lambda会失败。

5. 确认DynamoDB流状态

前往DynamoDB表的流标签页,确认流状态为ACTIVE,流的视图类型(如NEW_IMAGE)与Lambda代码预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:54:18