amazon-web-services - Terraform:如何在根目录下创建 api 网关 POST 方法?

标签 amazon-web-services terraform aws-api-gateway

我正在尝试使用 terraform 在根 api 网关 URL(例如 https://somehash.execute-api.us-east-1.amazonaws.com/dev 将包含舞台)创建 POST 方法。以下是我们关注的 terraform 计划的一部分:

resource "aws_api_gateway_rest_api" "api" {
  name = "submit-dev-gateway-api"
}

resource "aws_api_gateway_resource" "resource" {
  rest_api_id = "${aws_api_gateway_rest_api.api.id}"
  parent_id = "${aws_api_gateway_rest_api.api.root_resource_id}"
  path_part = "submit"
}

resource "aws_api_gateway_method" "post_form" {
  rest_api_id   = "${aws_api_gateway_rest_api.api.id}"
  resource_id   = "${aws_api_gateway_resource.resource.id}"
  http_method   = "POST"
  authorization = "NONE"
}
...

我尝试将 path_part 更改为“/”,但没有用。没有 aws_api_gateway_resource,我无法创建 aws_api_gateway_method 资源。我可以在没有 terraform 的情况下在 root 手动创建一个 POST,如下所示:
manual

当我使用上面的 terraform 计划时,我得到了这个:
terraform

如何使用 terraform 在 root 处创建 POST?

最佳答案

“根资源”是在创建 API Gateway REST API 的过程中自动创建的。在 Terraform 中,该根资源的 id 公开为 REST API 资源实例的 the root_resource_id attribute

因为该资源是作为 API 的一部分隐式创建的,所以我们不需要单独的资源。相反,我们可以直接将方法(和其他必要的下游对象)附加到现有的根资源上:

resource "aws_api_gateway_rest_api" "api" {
  name = "submit-dev-gateway-api"
}

resource "aws_api_gateway_method" "post_form" {
  rest_api_id   = aws_api_gateway_rest_api.api.id
  resource_id   = aws_api_gateway_rest_api.api.root_resource_id
  http_method   = "POST"
  authorization = "NONE"
}

关于amazon-web-services - Terraform:如何在根目录下创建 api 网关 POST 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61072514/

相关文章:

Terraform 循环依赖挑战

c# - 使用无服务器和 AWS API 网关从 ASP .Net Core MVC 返回二进制数据

amazon-web-services - 无法在 Postman 中测试 Cognito 认证的 API 网关调用(它是一个 ADMIN_NO_SRP_AUTH 池)

amazon-web-services - AWS Lambda 负载

amazon-web-services - Dynamo DB : global secondary index, 稀疏索引

javascript - 获得两者 - 下载链接和链接以使用 aws sdk 从 s3 存储桶在浏览器中查看

php - 亚马逊预签名网址,只允许某些文件类型?

amazon-web-services - 有没有一种方法可以使用类似于谷歌存储 Write() 方法的 aws-sdk-go 将数据流式传输到 amazon s3 文件?

azure - 具有 Azure AD 访问权限的 Terraform Azure Linux VM

linux - 在 AWS 实例中设置环境变量