Tengo dificultades para traducir mi solicitud de integración de puerta de enlace de API en código de Terraform, estoy tratando de pasar una solicitud de datos de formulario/varias partes a un Lambda para su almacenamiento.
Pude configurar la puerta de enlace API manualmente desde cero, pero cuando pruebo la terraformación recibo un error interno del servidor y Cloudwatch me dice que la puerta de enlace no ha podido transformar la solicitud.
La ejecución falló debido a un error de configuración: no se puede transformar la solicitud
El problema parece estar en la solicitud de integración, porque si realizo la implementación de terraform, puedo hacer que todo funcione cambiando el tipo de integración en la interfaz de usuario a Lambda Proxy, cambiándolo nuevamente y agregando nuevamente la plantilla de mapeo.
Bloque Terraform para la Integración;
resource "aws_api_gateway_integration" "docuemnt-api-method-integration" { rest_api_id = aws_api_gateway_rest_api.document-api.id resource_id = aws_api_gateway_resource.document-resource.id http_method = aws_api_gateway_method.document-post-method.http_method type = "AWS" uri = aws_lambda_function.document_function.invoke_arn integration_http_method = "POST" passthrough_behavior = "WHEN_NO_TEMPLATES" request_templates = { "multipart/form-data" = file("${path.module}/mapping/mapping_template.json") } }La plantilla de mapeo
{ "body":"$input.body", "content-type": "$util.escapeJavaScript($input.params().header.get('Content-Type'))" }En la consola de AWS, NO puede configurar content_handling de la solicitud de integración y también es solo un parámetro opcional en terraform. Cuando cambia el tipo de integración en la interfaz de usuario a Lambda Proxy, content_handling de la solicitud de integración se establecerá en CONVERT_TO_TEXT.
Por lo tanto, debe agregar esta fila a aws_api_gateway_integration:
content_handling = "CONVERT_TO_TEXT"Y normalmente resolverá su problema.