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

10 minutos de lectura
0

Quiero un punto de conexión de API optimizado en entornos periféricos en Amazon API Gateway pero necesito más control sobre la distribución de Amazon CloudFront. ¿Cómo creo y uso mi propia distribución?

Descripción breve

Si sus clientes de API están dispersos geográficamente, considere la posibilidad de utilizar un punto de conexión de API optimizado en entornos periféricos en API Gateway. Este tipo de punto de conexión actúa como punto de conexión 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

Cree una API regional en API Gateway. A continuación, haga lo siguiente:

Configurar un método GET para su API

1.    En la consola de API Gateway, elija el nombre de su nueva API regional.

2.    En el panel Recursos, elija Acciones. A continuación, elija Crear método. Aparecerá una lista en el nodo de / resource.

3.    Seleccione GET de la lista. A continuación, seleccione el icono de la marca de verificación.

4.    En**/ - GET - Setup**, para Tipo de integración, elija Simulación. A continuación, seleccione Guardar.
Nota: Una integración de simulación responde a cualquier solicitud que reciba, lo que ayuda a realizar las pruebas.

Desplegar la API e identificar la URL de invocación de su API

1.    Despliegue su API en una etapa.

2.    En la parte superior del panel editor de etapa, copie la URL de invocación al portapapeles.

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

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

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 probar la API para una respuesta de 200 OK usando curl

Según su sistema operativo, ejecute uno de los siguientes comandos:

**Nota:**Reemplace https://restApiId.execute-api.region.amazonaws.com/stageName por la URL de invocación de su API antes de ejecutar cualquiera de los siguientes comandos.

Para Linux, utilice el siguiente comando:

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

Para Windows PowerShell, ejecute el siguiente comando:

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

Nota: Si aparece un código de estado que no sea una respuesta de200 OK compruebe la consola para confirmar lo siguiente:
Su API está implementada para su etapa.
Su etapa se especifica en su URL de invocación.

Crear una distribución web de CloudFront

1.    En la consola de CloudFront, seleccione Crear distribución.

2.    En la página de Seleccione un método de entrega para su contenido, en Web, seleccione Comenzar.

3.    En la página de Crear distribución, para Nombre de dominio de origen, pegue la URL de invocación de su API. A continuación, borre el nombre de etapa.

Ejemplo de nombre de dominio de origen

https://1a2bc3d456.execute-api.us-east-1.amazonaws.com

4.    Para Ruta de origen, introduce el nombre de etapa de su API con una barra diagonal delante (/stageName). O bien, si quiere introducir el nombre de etapa manualmente al invocar la URL, no introduzca una ruta de origen.
Nota: Al introducir un nombre de etapa incorrecto para Ruta de origen al invocar la distribución de CloudFront a veces se produce un error. Por ejemplo, un error de solicitud no autorizada que devuelve el mensaje «Falta el token de autenticación» y un código de respuesta 403 prohibido.

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

6.    Para Política de protocolo de origen, elija Solo HTTPS.
Nota: API Gateway no admite puntos de conexión no cifrados (HTTP). Para obtener más información, consulte Preguntas frecuentes sobre Amazon API Gateway.

7.    (Opcional) Para reenviar los encabezados personalizados a su origen, introduzca uno o más encabezados personalizados para Encabezados personalizados de origen.
Nota: Hay varios encabezados personalizados que CloudFront no puede reenviar a su 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) BajoConfiguración de distribución, configure los ajustes adicionales que desee personalizar.

10.    Elija Crear distribución.

11.    Espere a que se despliegue la distribución. Esto lleva de 15 a 20 minutos. Cuando su estado aparezca como Implementado en la consola, la distribución estará lista.

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

Probar su distribución web de CloudFront

1.    En la consola de CloudFront, copie el Nombre de dominio de su distribución al portapapeles.

Ejemplo de nombre de dominio no personalizado

a222222bcdefg5.cloudfront.net.

2.    Pruebe el nombre de dominio para una respuesta de 200 OK mediante cualquiera de los comandos mencionados anteriormente en la sección Probar su API. 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, confirme que han transcurrido entre 15 y 20 minutos desde que creó la distribución. A continuación, vuelva a intentar el procedimiento.

Importante: Si ha activado la autenticación de AWS Identity and Access Management (IAM) en un método para un recurso de API determinado, debe añadir el nombre del recurso al final del nombre del dominio de distribución al invocar la API. La URL de invocación completa (incluido el nombre del recurso) tiene un aspecto similar al de uno de los siguientes ejemplos. El resultado depende de si introdujo una ruta de origen al crear la distribución:

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 las pruebas, consulte ¿Cómo activo la autenticación de IAM para las API de API Gateway?

Su API ahora usa la distribución web que ha creado. Se puede acceder a los recursos en la URL de la API de CloudFront.

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

1.    Si no lo ha completado anteriormente, siga los pasos 1 a 7 de la sección Crear una distribución web de CloudFront de este artículo.

2.    En la página de Crear distribución, para Configuración de la caché y las solicitudes de origen, elija Usar una política de caché y una política de solicitudes de origen. A continuación, bajo Política de caché, elija una política de caché existente o cree una nueva política de caché que añada el encabezado de autorización a su lista de permitidos de CloudFront.

3.    Si utiliza una política de caché existente, para Caché basada en los encabezados de solicitud seleccionados, elija Lista blanca. A continuación, para Encabezados de la lista blanca, añada Autorización a la lista de encabezados permitidos.

Importante: Si cambia la configuración de Caché basada en los encabezados de solicitud seleccionados a Todos, o si permite el encabezado Host, entonces su configuración no funcionará. Para obtener más información, consulte Almacenamiento en caché del contenido según los encabezados de solicitud.

4.    (Opcional) Para probar la configuración, haga lo siguiente:
Cree la firma Signature Version 4 requerida para su punto de conexión de API Gateway programáticamente. Para el valor de host, introduzca la URL de invocación de API Gateway. Para obtener el valor del ** punto de conexión**, introduzca la URL de distribución web de CloudFront.

Ejemplo de URL de invocación de API Gateway

<api-id>.execute.<region>.amazon.com

Ejemplo de URL de distribución web de CloudFront

dxxxxx.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 genera los encabezados necesarios con las credenciales que introduzca.

A continuación, envíe la solicitud de API a la distribución de CloudFront mediante el encabezado de Autorización (y todos los SignedHeaders) generados a partir del proceso Signature Version 4.

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

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 un mapeo 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 siguiendo las instrucciones de la sección Crear una distribución web de CloudFront de este artículo, con una excepción. En el paso 3, para 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 conexión de los detalles de su dominio personalizado.

Ejemplo de nombre de dominio de destino de API Gateway

d-xxxx..execute-api.<region>.amazonaws.com

4.    En la página de Crear distribución, para Configuración de la caché y las solicitudes de origen, elija Usar una política de caché y una política de solicitudes de origen. A continuación, en Política de caché, elija una política de caché existente o cree una nueva política de caché que añada los encabezados Autorización y Host a la lista de permitidos de CloudFront.

5.    Si utiliza una política de caché existente, para Caché basada en los encabezados de solicitud seleccionados, elija Lista blanca. A continuación, para Encabezados de la lista blanca, añada Autorización y Host a la lista de encabezados permitidos.

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

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

  1. Tras implementar 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 para archivos 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 programáticamente.
Nota: La aplicación Postman se puede utilizar para probar la configuración.


Información relacionada

Iniciar la configuración de la API REST en API Gateway

Elegir un tipo de punto de conexión para configurar una API de API Gateway

Importe una API optimizada para entornos periféricos a API Gateway