首页 > 解决方案 > 如何在 ApiGateway 中获取根资源的资源路径?

问题描述

我正在尝试使用 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由于我无法确定<root resource 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"
 }

标签: amazon-web-servicesterraformaws-api-gateway

解决方案


路径是"~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]
}

推荐阅读