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

如何解决Terraform部署APIGatewayV2调用Lambda时IAM角色无权限错误

问题根因与解决方案
  • 核心根因定位

你收到的报错明确指向API Gateway集成绑定的IAM角色缺少调用Lambda的权限,该问题90%以上的场景是由配置逻辑错误导致:
你当前为Lambda和API Gateway共用的api_gateway_role(对应Terraform资源aws_iam_role.lambda_exec)仅绑定了AWSLambdaBasicExecutionRole策略,该策略仅支持Lambda函数自身向CloudWatch打印日志,完全不包含调用Lambda函数的权限。如果你的API Gateway V2集成配置了该角色作为执行角色,调用时必然会触发权限报错。

  • 修复方案(二选一即可,优先选方案1)

方案1:移除集成的执行角色配置(更适配HTTP API场景)

APIGatewayV2的HTTP API调用Lambda不需要额外指定执行角色,只要配置了aws_lambda_permission资源即可完成授权,属于官方推荐的轻量方案。你只需要找到你的aws_apigatewayv2_integration资源配置,删除其中的credentials_arn参数,重新apply即可。

方案2:为执行角色新增Lambda调用权限

如果你有特殊场景必须保留集成的执行角色配置,直接给角色新增调用Lambda的权限即可,新增Terraform代码如下:

resource "aws_iam_role_policy" "apigw_invoke_lambda" {
  name = "apigw-invoke-lambda"
  role = aws_iam_role.lambda_exec.id

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Effect   = "Allow"
        Action   = "lambda:InvokeFunction"
        Resource = aws_lambda_function.prod_options.arn
      }
    ]
  })
}
  • 可选排查项

如果上述方案仍未解决问题,可以依次排查以下配置:

  1. 确认aws_lambda_permission资源的source_arn绑定的是你当前调用的API实例ARN,避免关联到其他错误的API资源
  2. 可以暂时将source_arn调整为更宽松的匹配规则验证是否是路径匹配问题:
    source_arn = "${aws_apigatewayv2_api.gateway_prod.execution_arn}/*"
  3. 运行terraform plan确认所有配置变更都已经执行terraform apply生效,不存在未部署的配置修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:45:08