Terraform API 网关未显示为 Lambda 的触发器

Terraform API Gateway Not Showing Up As Trigger For Lambda

我按照说明进行了操作 here for setting up a gateway and a lambda but it does not work. The symptoms appear to be the same as described ,但是那里建议的修复没有奏效。

我的基础设施定义如下:

resource "aws_apigatewayv2_api" "lambda_api" {
    name          = "${upper(var.project)}-${upper(var.environment)}-${var.gateway_name}"
    protocol_type = "HTTP"
}

resource "aws_apigatewayv2_stage" "lambda_default" {
    name        = "$default"
    api_id      = aws_apigatewayv2_api.lambda_api.id
    auto_deploy = true
}

resource "aws_apigatewayv2_integration" "gateway_to_lambda" {
    api_id                 = aws_apigatewayv2_api.lambda_api.id
    integration_type       = "AWS_PROXY"
    connection_type        = "INTERNET"
    integration_method     = "POST"
    integration_uri        = aws_lambda_function.executable.arn
    payload_format_version = "2.0"
}

resource "aws_apigatewayv2_route" "route" {
    api_id    = aws_apigatewayv2_api.lambda_api.id
    route_key = "GET /profile"
    target    = "integrations/${aws_apigatewayv2_integration.gateway_to_lambda.id}"
}

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"

    source_arn = "${aws_apigatewayv2_api.lambda_api.arn}/*/*"
}

在网关方面,看起来事情创建正确:我有一个将我的路径 'profile' 连接到 lambda 的集成:

但是,当我查看 lambda 时,触发器丢失了:

当我尝试访问端点时,我收到“内部服务器错误”消息。

当我在我的 lambda 中手动添加触发器时,它会起作用,但在我指定的 'profile' 路由键下不起作用。

为了在 API 网关中将我的 /profile 正确路由到我的 lambda,我在这里缺少什么?

根据评论。解决方案是修改权限(删除source_arn):

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"
}