terraform-从文件定义aws api网关请求参数?

问题描述

我想通过使用文件在aws-api_gateway_method中参数化request_parameters值

所以改变:

resource "aws_api_gateway_method" "get" {
  rest_api_id = var.api-id
  resource_id = aws_api_gateway_resource.resource.id
  http_method = "GET"
  request_validator_id = aws_api_gateway_request_validator.validator.id
  request_parameters = { 
    "method.request.querystring.Name" = true 
  }
}

进入

resource "aws_api_gateway_method" "get" {
  rest_api_id = var.api-id
  resource_id = aws_api_gateway_resource.resource.id
  http_method = "GET"
  request_validator_id = aws_api_gateway_request_validator.validator.id
  request_parameters = file(var.request-parameters-file)

}

我用.txt文件尝试了此操作,但由于值需要为map(bool)而出现错误。足够公平,但是如何参数化此字段以使我能够使用模块中的资源?

我使用了map(bool)类型的变量,并传递了简单情况下可以使用的变量,但是在更复杂的情况下会变得混乱。有更好的方法吗?

解决方法

您可以将request_parameters表示为json,然后使用jsondecode

例如:

有一个文件request_parameters.json,内容为:

{"method.request.querystring.Name": true }

然后在您的aws_api_gateway_method资源中:

request_parameters = jsondecode(file("request_parameters.json"))