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

AWS配置中Lambda权限报错:API无/*路由问题求助

AWS HTTP API Gateway + Lambda授权器控制台错误排查

问题描述

使用Terraform配置AWS HTTP API Gateway和自定义Lambda授权器后,功能运行正常,但Lambda控制台持续显示错误提示:

The API with ID xxx doesn’t include a route with path /*

尝试修改aws_lambda_permission中的source_arn为/*,错误仍未消失。

问题根源与修复方案

1. 资源引用的命名拼写错误

配置中存在多处命名/拼写错误,导致权限策略的资源匹配逻辑异常:

  • Lambda函数资源名为aws_lambda_function.auhtorizing_lambda(注意auhtorizing的拼写),但aws_lambda_permission中引用的变量是var.auth-lambda-name(横杠命名不符合Terraform变量规范,且和定义的var.auth_lambda_name不匹配)
  • API Gateway资源名为aws_apigatewayv2_api.http_api_gateway,但source_arn中错误引用为aws_apigatewayv2_api.http-api-gateway(用横杠代替了下划线)

2. Source ARN格式不符合HTTP API要求

REST API和HTTP API的source_arn格式不同,HTTP API需要包含阶段名称,正确格式应为:

source_arn = "${aws_apigatewayv2_api.http_api_gateway.execution_arn}/${aws_apigatewayv2_stage.http_api_dev_stage.name}/*"

原配置使用的/*/*是REST API的格式,HTTP API不需要额外层级,加上阶段名后才能准确匹配到你的POST /test-custom路由。

3. 修正后的完整aws_lambda_permission配置

resource "aws_lambda_permission" "allow-invokation-from-api-gateway" {
  statement_id  = "AllowExecutionFromAPIGateway"
  action        = "lambda:InvokeFunction"
  function_name = aws_lambda_function.auhtorizing_lambda.function_name # 直接引用资源属性,避免变量拼写错误
  principal     = "apigateway.amazonaws.com"

  source_arn = "${aws_apigatewayv2_api.http_api_gateway.execution_arn}/${aws_apigatewayv2_stage.http_api_dev_stage.name}/*"
}

4. 额外建议

  • 建议修正Lambda资源名的拼写错误:将auhtorizing_lambda改为authorizing_lambda,避免后续维护时混淆
  • 部署更新后的Terraform配置后,等待1-2分钟让AWS控制台缓存刷新,再检查错误是否消失

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:58:27