使用 terraform 创建 api_gateway 时出现错误,下面是我的代码和错误屏幕截图。 使用此代码我能够创建 REST API,但在部署部分失败...任何人都可以帮助我吗
aws_api_gateway_deployment.api-deployment: Creating...
Error: Error creating API Gateway Deployment: BadRequestException: No integration defined for method
在“aws_api_gateway_deployment”资源中,您需要添加“depends_on”,其中需要包含以下条目:
在您的 terraform 脚本中找到,例如:
resource "aws_api_gateway_deployment" "example" {
depends_on = [
aws_api_gateway_method.methodproxy,
aws_api_gateway_integration.apilambda
]
...
}
问题来自两个资源中的任何一个尚未设置。
双重、三重和四重检查您的 JSON 对于 api 主体是否有效。 这个错误不是很清楚,但是 JSON 格式或结构的任何问题也会导致您得到相同的结果。
我个人没有在我的配置中为
aws_api_gateway_method
或 aws_api_gateway_integration
定义 terraform 资源。 这是我对主体的示例以及修复错误的细微更改。
就上下文而言,这里的目标是使 API Gateway 能够触发 Lambda 函数,这意味着我还定义了一个
aws_lambda_permission
资源,允许通过 API Gateway 调用 Lambda。
这是投掷
Error: Error creating API Gateway Deployment: BadRequestException: No integration defined for method
:
locals {
body = jsonencode({
swagger = "2.0"
info = {
title = "Example"
version = "1.0"
}
schemes = [
"https"
]
paths = {
"/path" = {
get = {
responses = {
"200" = {
description = "200 response"
}
}
}
x-amazon-apigateway-integration = {
type = "AWS"
uri = module.lambda.invoke_arn
httpMethod = "POST"
responses = {
default = {
statusCode = 200
}
}
}
}
}
})
}
将 JSON 更正为该值即可允许部署完成。
locals {
body = jsonencode({
swagger = "2.0"
info = {
title = "Example"
version = "1.0"
}
schemes = [
"https"
]
paths = {
"/path" = {
get = {
responses = {
"200" = {
description = "200 response"
}
} <-- the change is here
x-amazon-apigateway-integration = {
type = "AWS"
uri = module.lambda.invoke_arn
httpMethod = "POST"
responses = {
default = {
statusCode = 200
}
}
}
}
}
}
})
}
我遇到了这个错误;问题是开发人员通过 AWS 控制台在同一 API terraform 中创建了一个新资源(端点)并尝试重新部署。他尚未将该端点与任何服务集成。
一旦我们删除了部分资源,terraform apply 就可以正常工作,没有任何问题。