Saltar al contenido

¿Cómo configuro una API de REST de API Gateway para gestionar datos binarios mediante una integración de proxy de Lambda?

4 minutos de lectura
0

Quiero usar una integración de proxy de AWS Lambda para devolver datos binarios a través de mi API de REST de Amazon API Gateway.

Resolución

Para que las API de REST de API Gateway gestionen datos binarios, la función de Lambda del backend debe utilizar el formato de salida de una función de Lambda para la integración de proxy.

Nota: Las API HTTP de API Gateway gestionan automáticamente los datos binarios.

Uso de una integración de proxy de Lambda para devolver datos binarios a través de una API de REST de API Gateway

Sigue estos pasos:

  1. Abre la consola de Lambda.
  2. Crea una nueva función de Lambda.
    Nota: Para ver un ejemplo de la función de Lambda de Python 3, consulta Devolución de medios binarios desde una integración de proxy de Lambda en API Gateway.
  3. Abre la consola de API Gateway.
  4. Crea una API de REST nueva.
  5. Sigue estos pasos para crear un método GET para la nueva API:
    En el panel Métodos, selecciona Crear método.
    En Tipo de método, selecciona GET.
    En la sección / - GET - Setup, en Tipo de integración, selecciona Función de Lambda.
    Activa Usar la integración de proxy Lambda.
    En Función de Lambda, selecciona la región de AWS en la que creaste la función de Lambda. A continuación, introduce el nombre de la nueva función de Lambda.
    Selecciona Crear método.
  6. En API, selecciona la Configuración de la API.
  7. En Tipos de medios binarios, selecciona Administrar tipos de medios y, a continuación, selecciona Añadir tipo de medio binario.
  8. Añade tu formato de archivo, como image/png o application/pdf.
  9. Selecciona Guardar los cambios.
  10. Despliega la API en una nueva etapa.

Nota: En el caso de los datos binarios, debes establecer la propiedad ;isBase64Encoded en true en la salida de la función de Lambda. La propiedad body también debe contener los archivos binarios codificados en base64. Para obtener más información, consulta Tipos de medios binarios para las API de REST en API Gateway.

Uso de Postman o cURL para invocar la API de REST y devolver datos binarios

Importante: En el caso de Postman o cURL, incluye el encabezado Accept en la solicitud de la API. El valor del encabezado Accept debe coincidir con el formato de archivo, como image/png o application/pdf.

Ejecuta el siguiente comando curl:

curl 'https://exampleRestApiId.execute-api.exampleRegion.amazonaws.com/exampleStageName/' -H 'Accept: image/png'

Nota: En el comando anterior, reemplaza exampleRestApiId por el identificador de tu API y exampleRegion por la región en la que se encuentra tu API. Además, reemplaza exampleStageName por el nombre de etapa de tu API e image/png por el tipo de archivo de la imagen.

Uso de un navegador web para invocar la API de REST y devolver datos binarios

Los navegadores web envían automáticamente un encabezado Accept con varios valores. De forma predeterminada, el primer valor es siempre html/text. Dado que API Gateway solo respeta el primer valor, debes añadir text/html como tipo de archivo binario a la API. De lo contrario, aparecerá el siguiente mensaje de error:

«The image "https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/" cannot be displayed because it contains errors».

Sigue estos pasos para añadir text/html como tipo de archivo binario a una API de REST:

  1. Abre la consola de API Gateway.
  2. Selecciona tu API.
  3. En el panel de navegación, selecciona Configuración de la API.
  4. En Tipos de medios binarios, selecciona Administrar tipos de medios y, a continuación, selecciona Añadir tipo de medio binario.
  5. Introduce text/html.
  6. Selecciona Guardar cambios.
  7. Implementa la API.

Para obtener más información, consulta Conversiones de tipo de contenido en API Gateway.

Información relacionada

Configuración de una etapa para una API de REST en API Gateway

Invocación de las API de REST en API Gateway