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

Terraform配置DynamoDB流触发Lambda报Cannot access stream如何解决

问题修复方案

根因说明

你当前配置的IAM策略仅对DynamoDB表本身的ARN授权,但DynamoDB流的ARN与表ARN是相互独立的资源,触发Lambda需要的流相关操作权限没有覆盖到流资源,因此触发权限校验报错。

修复步骤

1. 拆分IAM权限,单独为流资源授权

将表操作权限和流操作权限拆分,流相关操作的授权对象指定为DynamoDB流的ARN,也可以使用表ARN加/stream/*通配符适配流资源路径。
修改后的IAM策略配置参考:

resource "aws_iam_role_policy" "dynamodb_policy" {
  policy = jsonencode(
  {
    Version = "2012-10-17",
    Statement = [
      # 表操作权限
      {
        Action = [
          "dynamodb:GetItem",
          "dynamodb:PutItem",
          "dynamodb:UpdateItem",
          "dynamodb:Query"
        ],
        Effect = "Allow",
        Resource = aws_dynamodb_table.filenames.arn
      },
      # 流操作权限
      {
        Action = [
          "dynamodb:GetRecords",
          "dynamodb:GetShardIterator",
          "dynamodb:DescribeStream",
          "dynamodb:ListShards",
          "dynamodb:ListStreams"
        ],
        Effect = "Allow",
        # 最小权限可直接用 aws_dynamodb_table.filenames.stream_arn
        Resource = "${aws_dynamodb_table.filenames.arn}/stream/*"
      }
    ]
  }
  )
  role = aws_iam_role.processing_lambda_role.id
}

2. (可选)添加资源依赖避免部署时序问题

如果存在IAM权限还未完成同步,Lambda事件源映射就提前创建的情况,可以为事件源映射添加依赖,确保权限配置完成后再创建触发器:

resource "aws_lambda_event_source_mapping" "allow_dynamodb_table_to_trigger_lambda" {
  event_source_arn  = aws_dynamodb_table.filenames.stream_arn
  function_name     = aws_lambda_function.trigger_stepfunction_lambda.arn
  starting_position = "LATEST"
  # 显式依赖IAM策略,确保权限先生效
  depends_on = [aws_iam_role_policy.dynamodb_policy]
}

3. 校验IAM角色信任策略

确认Lambda执行角色的信任策略允许lambda.amazonaws.com服务扮演该角色,示例信任策略配置如下:

resource "aws_iam_role" "processing_lambda_role" {
  name = "processing-lambda-role"

  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = "sts:AssumeRole"
        Effect = "Allow"
        Principal = {
          Service = "lambda.amazonaws.com"
        }
      }
    ]
  })
}

完成以上修改后重新执行terraform apply即可正常部署。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:27:04