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

Terraform配置DynamoDB触发Lambda的Event Source Mapping报错如何解决

问题根因

你配置的event_source_arn无效的核心原因是DynamoDB表未启用流功能。Lambda触发DynamoDB表事件的底层依赖是DynamoDB流记录的表变更数据,未开启流的情况下,aws_dynamodb_table.filenames.stream_arn返回空值或无效值,因此Lambda会抛出「无法识别事件源」的报错。

修复步骤
  • 第一步:修改DynamoDB表的Terraform配置,添加流启用配置
    在aws_dynamodb_table资源块中新增两个参数:
    • stream_enabled = true:启用DynamoDB流功能
    • stream_view_type:指定流记录的内容类型,可选值包括NEW_IMAGE(仅新写入的数据)、OLD_IMAGE(仅变更前的旧数据)、NEW_AND_OLD_IMAGES(同时包含新旧数据)、KEYS_ONLY(仅包含主键),可根据你的业务需求选择。

修改后的DynamoDB资源配置示例:

resource "aws_dynamodb_table" "filenames" {
  name           = local.dynamodb_table_filenames
  billing_mode   = "PROVISIONED"
  read_capacity  = 1000
  write_capacity = 1000
  hash_key       = "filename"
  # 新增流配置
  stream_enabled   = true
  stream_view_type = "NEW_IMAGE"

  attribute {
    name = "filename"
    type = "S"
  }

  tags = var.tags
}
  • 第二步:确认Lambda执行角色已配置DynamoDB流的访问权限
    需要为Lambda的执行角色添加以下权限,作用范围为当前DynamoDB表的流ARN:
{
  "Effect": "Allow",
  "Action": [
    "dynamodb:GetRecords",
    "dynamodb:GetShardIterator",
    "dynamodb:DescribeStream",
    "dynamodb:ListStreams"
  ],
  "Resource": "${aws_dynamodb_table.filenames.stream_arn}"
}
  • 第三步:重新执行terraform apply即可完成配置,Terraform会自动先更新DynamoDB表开启流,再创建Lambda事件源映射。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:36:04