Saltar al contenido

¿Cómo configuro API Gateway con mi propia distribución de CloudFront?

9 minutos de lectura
0

Quiero un punto de enlace de API optimizado para los entornos periféricos en Amazon API Gateway, pero quiero crear mi propia distribución de Amazon CloudFront.

Descripción corta

Si sus clientes de API están dispersos geográficamente, utilice un punto de enlace de API optimizado en entornos periféricos en API Gateway. Este tipo de punto de enlace actúa como punto de enlace regional con una distribución web de CloudFront gestionada por AWS para mejorar el tiempo de conexión del cliente.

Para utilizar la red global de entrega de contenido de CloudFront y mantener un mayor control sobre la distribución, utilice una API regional con una distribución web de CloudFront personalizada.

Resolución

Requisitos previos: Cree una función de AWS Lambda para integrarla con la API de REST de API Gateway y cree una API regional en API Gateway.

Cree un certificado SSL/TLS en AWS Certificate Manager (ACM) en la región us-east-1 y en la misma región de AWS que su API de REST de API Gateway. Para obtener un certificado para un nombre de dominio emitido por ACM o importado a dicho servicio, siga estos pasos:

  1. Registre su dominio de Internet. Puede utilizar Amazon Route 53 o un registrador de dominios acreditado de terceros.
  2. Cree un certificado SSL/TLS para el nombre de dominio en ACM o importe uno en ACM.

Configuración de un método GET para su API

Siga estos pasos:

  1. Abra la consola de API Gateway.
  2. Elija el nombre de su nueva API regional.
  3. Elija Crear recurso.
  4. En Nombre del recurso, introduzca greetings (saludos).
  5. Seleccione Crear método.
  6. Elija GET en Tipo de método y seleccione Función de Lambda en Tipo de integración. A continuación, active el botón Integración de proxy de Lambda y seleccione la función de Lambda.

Despliegue de la API e identificación de la URL de invocación de su API

Siga estos pasos:

  1. Despliegue su API en una etapa.
  2. En la parte superior del panel Editor de etapas, copie la URL de invocación para el método HTTP GET del recurso greetings en el portapapeles.

Ejemplo de URL de invocación de API de API Gateway:

https://restApiId.execute-api.region.amazonaws.com/stageName/greetings

Pruebe su API para una respuesta de 200 OK

Para confirmar que la API devuelve una respuesta de 200 OK, pruebe su URL de invocación de la API mediante la consola de API Gateway, la aplicación Postman o curl. Para obtener más información sobre Postman y curl, consulte los sitios web de Postman y curl.

Uso de curl para probar la API para u7na respuesta de 200 OK

Según su sistema operativo, ponga en marcha uno de los siguientes comandos.

Nota: Sustituya https://restApiId.execute-api.region.amazonaws.com/stageNamee/greetings por la URL de invocación de la API.

Para Linux, utilice el siguiente comando:

curl -IX GET https://restApiId.execute-api.region.amazonaws.com/stageName/greetings

Para Windows PowerShell, ejecute el siguiente comando:

curl https://restApiId.execute-api.region.amazonaws.com/stageName/greetings

Nota: Si recibe un código de estado que no sea 200 OK, compruebe la consola para confirmar que la API esté desplegada en su etapa. Además, confirme que la URL de invocación especifica correctamente su etapa.

Creación de una distribución web de CloudFront

Siga estos pasos:

  1. Abra la consola de CloudFront.

  2. Elija Crear distribución.

  3. En Nombre de dominio de origen, introduzca la URL de invocación de la API. A continuación, elimine el nombre de la etapa y del recurso.
    Ejemplo de nombre de dominio de origen:

    https://restApiId.execute-api.region.amazonaws.com
  4. En Protocolo, seleccione Solo HTTPS.
    Nota: API Gateway no admite puntos de enlace no cifrados (HTTP). Para obtener más información, consulte Preguntas frecuentes sobre Amazon API Gateway.

  5. En Protocolo SSL de origen mínimo, se recomienda elegir TLSv1.2. No elija SSLv3. API Gateway no admite el protocolo SSLv3.

  6. En Ruta de origen, introduzca el nombre de etapa de su API con una barra diagonal delante (/nombreEtapa). O bien, si quiere introducir el nombre de etapa al invocar la URL, no introduzca nada en Ruta de origen.
    Nota: Si introduce un nombre de etapa incorrecto para Ruta de origen y, a continuación, invoca la distribución de CloudFront, es posible que aparezca un error. Por ejemplo, puede que obtenga un error de solicitud no autorizada que devuelve el mensaje «Falta el token de autenticación» y un código de respuesta 403 prohibido.

  7. (Opcional) Para reenviar los encabezados personalizados a su origen, introduzca uno o más encabezados personalizados en Encabezados personalizados de origen.

  8. Siga las instrucciones de la sección Si utiliza la autenticación de IAM para su API o nombres de dominio personalizados para su distribución, si corresponde.

  9. (Opcional) En Configuración de distribución, configure los ajustes adicionales que desee personalizar.

  10. Elija Crear distribución.

  11. Espere entre 15 y 20 minutos para que se despliegue su distribución. Cuando el estado de la distribución aparezca como Desplegado en la consola, la distribución estará lista.

Para obtener más información, consulte Creación de una distribución.

Probar su distribución web de CloudFront

Siga estos pasos:

  1. Abra la consola de CloudFront.

  2. Copie el Nombre de dominio de distribución de la distribución en el portapapeles.
    Ejemplo de nombre de dominio no personalizado:

    a222222bcdefg5.cloudfront.net
  3. Pruebe el nombre de dominio para obtener una respuesta de 200 OK. Si recibe un código de error de servidor 500, es posible que la distribución no esté implementada. Si no recibe respuesta, el registro de DNS de CloudFront aún no se ha propagado. En cualquier caso, espere entre 15 y 20 minutos después de crear la distribución y vuelva a intentar el procedimiento.

Importante: Los pasos anteriores son para los recursos de API que no tienen activada la autenticación de AWS Identity and Access Management (IAM) para ninguno de los métodos de recursos. Si tiene métodos con autenticación de IAM, añada el nombre del recurso al final del nombre de dominio de distribución cuando invoque la API. La URL de invocación completa (incluido el nombre del recurso) tiene un aspecto similar al de uno de los siguientes ejemplos.

Ejemplo de URL de invocación de API Gateway con una ruta de origen:

https://distributionDomainName/stageName/resourceName

Ejemplo de URL de invocación de API Gateway sin una ruta de origen:

https://distributionDomainName/resourceName

Para obtener más información sobre cómo probar la distribución, consulte ¿Cómo activo la autenticación de IAM para las API de REST de API Gateway?

Si utiliza la autenticación de IAM para su API o nombres de dominio personalizados para su distribución web de CloudFront

De forma predeterminada, CloudFront no reenvía los encabezados de autorización entrantes al origen (en este caso de uso, API Gateway). Si utiliza la autenticación de IAM para su API o nombres de dominio personalizados para su distribución, debe realizar una de las siguientes acciones:

(Para la autenticación de IAM) Añadir el encabezado de autorización a la lista de permitidos de CloudFront

Siga estos pasos:

  1. Cree una distribución de CloudFront.
  2. En la página Crear distribución, en Comportamiento predeterminado de la caché y solicitudes de clave y origen de caché, seleccione la configuración Caché heredada.
  3. Seleccione Incluir los siguientes encabezados en la lista desplegable Encabezados. A continuación, seleccione Autorización en la lista de encabezados que aparecen. Configure los encabezados que quiere que se reenvíen a su API.
    Alternativa:
    En Solicitudes de clave y origen de caché, en Política de caché, elija una política de caché existente o cree una nueva política de caché. La política debe agregar el encabezado de Autorización a la lista de permitidos de CloudFront.
  4. (Opcional) Para probar la configuración, haga lo siguiente:
    Cree la firma Signature Version 4 necesaria para su punto de enlace de API Gateway mediante programación. Para el valor de host, introduzca la URL de invocación de API Gateway. Para obtener el valor del ** punto de enlace**, introduzca la URL de distribución web de CloudFront.
    Ejemplo de URL de invocación de API Gateway:
    example_api_id.execute.example_region.amazon.com
    Ejemplo de URL de distribución web de CloudFront:
    d######.cloudfront.net

Nota: Si utiliza la aplicación Postman, en la pestaña Autorización, en Tipo, elija AWS Signature. A continuación, introduzca la Clave de acceso y la Clave secreta. Postman utiliza las credenciales que introduzca para generar los encabezados necesarios. A continuación, utilice el encabezado de autorización (y todos los SignedHeaders) generados a partir del proceso Signature Version 4 para enviar la solicitud de API a la distribución de CloudFront.

(Para nombres de dominio personalizados o autenticación de IAM) Configuración de un nombre de dominio regional personalizado en API Gateway para acceder a su API

Siga estos pasos:

  1. Cree una nueva API regional en API Gateway o cambie su API de API Gateway optimizada en entornos periféricos por una API regional.

  2. Configure un nombre de dominio regional personalizado para la API y cree una asignación de API para su API.
    Nota: Utilice este nombre de dominio personalizado cuando acceda a su API a través de CloudFront.

  3. Cree una distribución web de CloudFront, pero en Nombre de dominio de origen, introduzca su Nombre de dominio de destino de API Gateway en lugar de la URL de invocación de la API.
    Nota: Busque su nombre de dominio de destino de API Gateway en la configuración de Punto de enlace de los detalles de su dominio personalizado.
    Ejemplo de nombre de dominio de destino de API Gateway

    d-######.execute-api.example-region.amazonaws.com
  4. En la página Crear distribución, en Comportamiento predeterminado de la caché y solicitudes de clave y origen de caché, seleccione la configuración Caché heredada.

  5. Seleccione Incluir los siguientes encabezados en la lista desplegable Encabezados. A continuación, seleccione Host y Autorización en la lista de encabezados que aparecen. Configure los encabezados que quiere que se reenvíen a su API.
    Alternativa:
    En Solicitudes de clave y origen de caché, en Política de caché, elija una política de caché existente o cree una nueva política de caché. La política debe agregar el encabezado de Autorización a la lista de permitidos de CloudFront.

  6. En Configuración de distribución, en Nombre de dominio alternativo, introduzca el nombre de dominio personalizado que ha creado.

  7. En Certificado SSL, seleccione Certificado SSL personalizado. A continuación, añada el Certificado de AWS Certificate Manager (ACM) para ese dominio.

  8. Tras desplegar la distribución web de CloudFront, configure el registro de DNS para asignar el dominio personalizado a la distribución web de CloudFront. Para ello, cree un alias o un registro CNAME. Para obtener más información, consulte Uso de URL personalizadas añadiendo nombres de dominio alternativos (CNAME).

  9. (Opcional) Para probar la configuración, cree una solicitud firmada de Signature Version 4 para su nombre de dominio personalizado mediante programación.
    Nota: También puede usar la aplicación Postman para probar la configuración.