Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

656
Views
¿Cómo resuelvo el error: "No se deben citar los nombres de los argumentos" en Terraform?

Estoy ejecutando Terraform 0.12.24 localmente

Estoy tratando de implementar una integración de API Gateway con Lambda

Estoy intentando habilitar AWS API GW CORS con Terraform.

Tengo el siguiente recurso para la respuesta del método OPTIONS:

 resource "aws_api_gateway_method_response" "options_200" { rest_api_id = aws_api_gateway_rest_api.scout-approve-api-gateway.id resource_id = aws_api_gateway_resource.proxy.id http_method = aws_api_gateway_method.options_method.http_method status_code = "200" response_models { "application/json" = "Empty" } response_parameters { "method.response.header.Access-Control-Allow-Headers" = true, "method.response.header.Access-Control-Allow-Methods" = true, "method.response.header.Access-Control-Allow-Origin" = true } depends_on = [aws_api_gateway_method.options_method] }

Y estoy obteniendo:

 Error: Invalid argument name on main.tf line 48, in resource "aws_api_gateway_method_response" "options_200": 48: "application/json" = "Empty" Argument names must not be quoted.

¿Lo que da?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Este es en realidad el malentendido del analizador donde está el error. En realidad, se queja de que está tratando de leer los modelos de response_models y los parámetros de response_parameters como bloques en lugar de atributos. Hay más discusión sobre esto en la documentación 0.12 .

La principal diferencia entre un atributo de mapa y un bloque anidado es que un atributo de mapa generalmente tendrá claves definidas por el usuario, como vemos en el ejemplo de etiquetas anterior, mientras que un bloque anidado siempre tiene un conjunto fijo de argumentos admitidos definidos por el tipo de recurso. esquema, que Terraform validará.

En la versión 0.11, podría usar indistintamente la sintaxis de bloque (solo llaves como response_parameters { ... } ) para los atributos, pero en la versión 0.12 es más estricta con respecto a los tipos, por lo que ya no es posible. El código en la publicación de Medium a la que se vinculó como ejemplo de trabajo es un código 0.11 y no es válido en 0.12. Si observa detenidamente el código de GitHub que también vinculó , puede ver que usa la sintaxis de atributo en lugar de la sintaxis de bloque, por lo que es válido.

Cambiar a usar la sintaxis de atributo agregando un = hará que esto funcione como se esperaba:

 resource "aws_api_gateway_method_response" "options_200" { rest_api_id = aws_api_gateway_rest_api.scout-approve-api-gateway.id resource_id = aws_api_gateway_resource.proxy.id http_method = aws_api_gateway_method.options_method.http_method status_code = "200" response_models = { "application/json" = "Empty" } response_parameters = { "method.response.header.Access-Control-Allow-Headers" = true, "method.response.header.Access-Control-Allow-Methods" = true, "method.response.header.Access-Control-Allow-Origin" = true } depends_on = [aws_api_gateway_method.options_method] }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!