【问题标题】:Terraform: How to create a api gateway POST method at root?Terraform:如何在根目录下创建 api 网关 POST 方法?
【发布时间】:2020-07-19 04:50:29
【问题描述】:

我正在尝试在根 api 网关 URL 上使用 terraform 创建 POST 方法,例如 https://somehash.execute-api.us-east-1.amazonaws.com/dev,其中将包括舞台。以下是关注的 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 的情况下手动在根目录创建 POST,如下所示:

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

如何使用 terraform 在根目录创建 POST?

【问题讨论】:

  • 如果从 terraform 脚本中删除 path_part = "submit" 会怎样?
  • 我收到此错误:The argument "path_part" is required, but no definition was found.
  • 尝试输入path_part = ""path_part = "\"
  • 空字符串 BadRequestException: Resource's path part must be specified 出现此错误。 "\""/" 相同。没用。

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


【解决方案1】:

“根资源”是在创建 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"
}

【讨论】:

    【解决方案2】:

    您必须检查path_part。 试试

    path_part   = "{submit}"
    

    path_part 参数将包含一个表示端点路径的字符串。阅读更多path_part

    【讨论】:

    • 它可以正常工作,但没有像我在 AWS 控制台中手动创建 POST 方法时那样获得所需的结果。我还需要在阶段 URI 之后添加一个字符串。不幸的是 aws_apigatewayv2_api 资源尚不可用terraform.io/docs/providers/aws/r/apigatewayv2_api.html 否则这正是我需要的。
    猜你喜欢
    • 2020-02-12
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    相关资源
    最近更新 更多