1

J'ai un script de terraform pour api_gateway qui fonctionne très bien. J'ai beaucoup de modèles dupliqués. Je veux extraire tous les modèles en utilisant "data" "template_file".Terraform - response_parameters: devrait être une carte

Solution de travail:

resource "aws_api_gateway_integration_response" "ApiResponse" { 
    //something goes here 
    response_parameters = { 
     "method.response.header.Access-Control-Allow-Headers" = "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'" 
     "method.response.header.Access-Control-Allow-Methods" = "'GET,DELETE,PUT,OPTIONS'" 
     "method.response.header.Access-Control-Allow-Origin" = "'*'" 
     } 
} 

Après refactoring:

resource "aws_api_gateway_integration_response" "ApiResponse" { 
    //something goes here 
    response_parameters = "${data.template_file.response_parameters.template}" 
} 

data "template_file" "response_parameters" { 
    template = "${file("${path.module}/response_parameters.tptl")}" 
} 

response_parameters.tptl:

{ 
    "method.response.header.Access-Control-Allow-Headers" = "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'" 
    "method.response.header.Access-Control-Allow-Methods" = "'GET,DELETE,PUT,OPTIONS'" 
    "method.response.header.Access-Control-Allow-Origin" = "'*'" 
} 

Erreur:

* aws_api_gateway_integration_response.ApiResponse: response_parameters: should be a map 

Puisque les paramètres de réponse sont communs à tous mes aws_api_gateway_integration_response, je veux avoir un modèle commun et réutiliser dans toutes les ressources.

Pourquoi ai-je cette erreur?

Répondre

0

Il travaille avec un variable de type map au lieu de "data" "template_file"

resource "aws_api_gateway_integration_response" "ApiResponse" { 
//something goes here 
    response_parameters = "${var.integration_response_parameters}" 
} 

variable "integration_response_parameters" { 
    type = "map" 
    default = { 
     method.response.header.Access-Control-Allow-Headers = "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'" 
     method.response.header.Access-Control-Allow-Methods = "'GET,OPTIONS'" 
     method.response.header.Access-Control-Allow-Origin = "'*'" 
    } 
}