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

Terraform配置AWS API Gateway REST API时的权限问题

API Gateway调用Lambda返回403的Terraform权限解决方案

问题分析

你遇到的403错误核心原因是Lambda权限的source_arn格式不匹配API Gateway的请求路径规则,或是资源创建顺序导致权限未正确生效。手动在控制台添加权限时,系统会自动生成适配具体端点的source_arn,但通过单条Terraform语句即可覆盖所有端点,无需逐个配置。

单条权限语句修正方案

只需调整source_arn格式并添加正确的资源依赖:

resource "aws_lambda_permission" "api_gw" {
  statement_id  = "AllowExecutionFromAPIGateway"
  action        = "lambda:InvokeFunction"
  function_name = aws_lambda_function.theapilambda.function_name
  qualifier     = aws_lambda_alias.devo_lambda_alias.name
  principal     = "apigateway.amazonaws.com"

  # 匹配所有阶段、HTTP方法、资源路径的通配符格式
  source_arn = "${aws_api_gateway_rest_api.MyApi.execution_arn}/*/*/*"
  
  # 确保权限在API部署完成后创建,避免路径未生成导致的不匹配
  depends_on = [aws_api_gateway_deployment.MyApiDeployment]
}

关键要点说明

  • source_arn通配符规则:/*/*/*分别对应/{部署阶段}/{HTTP方法}/{资源路径},可以覆盖API Gateway下所有端点的请求,无需为每个端点单独设置权限。
  • 资源依赖必要性:添加depends_on关联你的API部署资源(比如aws_api_gateway_deployment.MyApiDeployment),确保API的端点结构完全部署后再创建Lambda权限,避免权限配置时API路径还未生成导致的规则不匹配。
  • qualifier验证:确认aws_lambda_alias.devo_lambda_alias.name指向正确的Lambda别名,权限需精准匹配到对应的Lambda版本/别名才能生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:05:13