【问题标题】:How do I get resource path for Root Resource in ApiGateway?如何在 ApiGateway 中获取根资源的资源路径?
【发布时间】:2021-04-24 17:18:28
【问题描述】:

我正在尝试使用 terraform 为根资源的 GET/OPTIONS 方法更改 api 网关中的缓存设置。

resource "aws_api_gateway_method_settings" "root_get_method_settings" {
  rest_api_id = aws_api_gateway_rest_api.default.id
  stage_name  = terraform.workspace
  method_path = "<root resource path>/GET"

  settings {
    metrics_enabled = true
    logging_level   = "INFO"
    caching_enabled = true
  }
}

我在 method_path 参数上遇到问题,因为我无法确定 的正确值。

method_path 对于任何其他资源,如 {proxy+} 资源如下所示:

resource "aws_api_gateway_method_settings" "proxy_get_method_settings" {
  rest_api_id = aws_api_gateway_rest_api.default.id
  stage_name  = terraform.workspace
  method_path = "{proxy+}/GET"
 }

【问题讨论】:

  • 应该只是/GET?你试过了吗?
  • 是的,我试过 /GETGET 。但两者都不起作用。
  • 您是否收到任何具体错误? “没用”不是很具体和信息丰富。
  • 还有什么是 aws_api_gateway_method 用于您要为其应用设置的 GET。
  • 资源 "aws_api_gateway_method" "root_options_method" { rest_api_id = aws_api_gateway_rest_api.default.id resource_id = aws_api_gateway_rest_api.default.root_resource_id http_method = "GET" 授权 = "NONE" }

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


【解决方案1】:

路径是"~1/GET"。以下是完整的工作示例


resource "aws_api_gateway_rest_api" "MyDemoAPI" {
  name        = "MyDemoAPI"
  description = "This is my API for demonstration purposes"
}

resource "aws_api_gateway_method" "MyDemoMethod" {
  rest_api_id   = aws_api_gateway_rest_api.MyDemoAPI.id
  resource_id   = aws_api_gateway_rest_api.MyDemoAPI.root_resource_id
  http_method   = "GET"
  authorization = "NONE"
}


resource "aws_api_gateway_deployment" "test" {
  depends_on  = [aws_api_gateway_integration.test]
  rest_api_id = aws_api_gateway_rest_api.MyDemoAPI.id
  stage_name  = "prod"
}

resource "aws_api_gateway_integration" "test" {
  rest_api_id = aws_api_gateway_rest_api.MyDemoAPI.id
  resource_id = aws_api_gateway_rest_api.MyDemoAPI.root_resource_id
  http_method = aws_api_gateway_method.MyDemoMethod.http_method
  type        = "MOCK"
}

resource "aws_api_gateway_method_settings" "root_get_method_settings" {
  rest_api_id = aws_api_gateway_rest_api.MyDemoAPI.id
  stage_name  = "prod"
  method_path = "~1/GET"

  settings {
    metrics_enabled = true
    logging_level   = "INFO"
    caching_enabled = true
  }
  
  depends_on  = [aws_api_gateway_deployment.test]
}

【讨论】:

  • @rrajgautam 没问题。很高兴它解决了:-)
猜你喜欢
  • 1970-01-01
  • 2020-12-09
  • 2012-05-13
  • 1970-01-01
  • 2011-09-12
  • 2023-03-22
  • 2018-10-09
  • 1970-01-01
  • 2020-09-09
相关资源
最近更新 更多