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

Terraform配置的API Gateway未显示为Lambda触发器且路由失效问题

问题根因

你遇到的核心问题是Lambda调用权限的ARN匹配规则配置错误,导致API Gateway没有权限触发你的Lambda函数,返回内部服务错误,同时Lambda控制台也无法识别到对应的触发器配置。

你当前使用的source_arn = "${aws_apigatewayv2_api.lambda_api.arn}/*/*"是REST API的通配符规则,不适用于你配置的HTTP API类型:HTTP API的ARN路径结构需要包含阶段名,你用的$default阶段名带特殊字符,原通配符规则无法正确匹配。


修复方案

替换你的aws_lambda_permission资源配置为以下内容即可:

resource "aws_lambda_permission" "execution_lambda_from_gateway" {
    statement_id  = "AllowExecutionFromAPIGateway"
    action        = "lambda:InvokeFunction"
    function_name = aws_lambda_function.executable.function_name
    principal     = "apigateway.amazonaws.com"

    # 精确匹配你的GET /profile路由
    source_arn = "${aws_apigatewayv2_api.lambda_api.arn}/${aws_apigatewayv2_stage.lambda_default.name}/GET/profile"

    # 如果需要允许该API下所有路由调用Lambda,可以用通配符版本
    # source_arn = "${aws_apigatewayv2_api.lambda_api.arn}/${aws_apigatewayv2_stage.lambda_default.name}/*/*"
}

验证说明

重新执行terraform apply生效配置后:

  1. Lambda控制台会自动显示对应的API Gateway触发器
  2. 访问GET /profile路径可以正常路由到Lambda函数
  3. 无需手动添加触发器,手动添加的触发器默认绑定全路径规则,自然无法匹配你指定的/profile路由

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 13:54:00