Tengo la especificación OpenAPI 3.0 (YAML) de mi API REST y necesito describir la misma API REST en la plantilla de Terraform (HCL) como recursos de AWS API Gateway.
¿Hay alguna herramienta que pueda ayudarme a convertirlo automáticamente?
API Gateway de AWS admite directamente la importación de una especificación OpenAPI 3.0 para definir todas las partes relevantes de una API Gateway.
Con Terraform, esto se puede hacer con el recurso aws_api_gateway_rest_api y el parámetro de body .
Se da un ejemplo en las pruebas para el recurso :
resource "aws_api_gateway_rest_api" "test" { name = "foo" body = <<EOF { "swagger": "2.0", "info": { "title": "foo", "version": "2017-04-20T04:08:08Z" }, "schemes": [ "https" ], "paths": { "/test": { "get": { "responses": { "200": { "description": "200 response" } }, "x-amazon-apigateway-integration": { "type": "HTTP", "uri": "https://www.google.de", "httpMethod": "GET", "responses": { "default": { "statusCode": 200 } } } } } } } EOF } También puede usar la función de file para cargar la especificación OpenAPI desde su archivo YAML directamente:
resource "aws_api_gateway_rest_api" "test" { name = "foo" body = file("${path.module}/api.yml") }Quizás pruebe el recurso de AWS en sí.
De acuerdo con la documentación de aws_api_gateway_rest_api , puede pasar un argumento de body que es
Una especificación de OpenAPI que define el conjunto de rutas e integraciones para crear como parte de la API REST.
Luego, si necesita modificar algunas especificaciones de OpenAPI, puede usar su lenguaje de programación favorito que habla JSON (por ejemplo, node , java , incluso jq , etc.).
Para obtener más información y ver qué extensiones están disponibles, consulte los documentos de API Gateway .