如何用Terraform勾选API Gateway GET集成请求的Lambda代理集成复选框
解决Terraform配置AWS API Gateway Lambda代理集成的问题
你要开启的「Use Lambda Proxy integration」不是在aws_api_gateway_method里配置的,得通过aws_api_gateway_integration资源来实现。之前加的request_parameters是用来声明要传递的请求参数,和代理集成完全无关,所以不会生效。
正确的配置需要同时定义方法和集成资源,示例代码如下:
# 定义API Gateway GET方法 resource "aws_api_gateway_method" "request_method_get" { rest_api_id = local.rest_api_id resource_id = local.resource_id http_method = "GET" authorization = "CUSTOM" authorizer_id = aws_api_gateway_authorizer.auth.id } # 配置Lambda代理集成 resource "aws_api_gateway_integration" "lambda_proxy_integration" { rest_api_id = local.rest_api_id resource_id = local.resource_id http_method = aws_api_gateway_method.request_method_get.http_method type = "AWS_PROXY" # 对应控制台里的「Use Lambda Proxy integration」勾选框 integration_http_method = "POST" # Lambda代理集成固定使用POST uri = aws_lambda_function.your_lambda.invoke_arn # 替换为你的Lambda函数ARN引用 }
关键要点:
type = "AWS_PROXY"就是对应控制台中勾选「Use Lambda Proxy integration」的配置项- 无论你的API是GET、POST还是其他HTTP方法,
integration_http_method必须设为POST,这是Lambda代理集成的硬性要求 - 记得把
aws_lambda_function.your_lambda.invoke_arn替换成你实际的Lambda函数资源引用
内容的提问来源于stack exchange,提问作者Madhawa
相关产品推荐
相关产品推荐

