Habilitación del almacenamiento en caché de la API para mejorar la capacidad de respuesta - Amazon API Gateway

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Habilitación del almacenamiento en caché de la API para mejorar la capacidad de respuesta

Puede habilitar el almacenamiento en caché de la API en Amazon API Gateway para almacenar en caché las respuestas del punto de enlace. Con el almacenamiento en caché, puede reducir el número de llamadas realizadas al punto de enlace y mejorar también la latencia de las solicitudes a la API.

Cuando habilitas el almacenamiento en caché para una etapa, API Gateway almacena en caché las respuestas de tu punto final durante un período específico time-to-live (TTL), en segundos. A continuación, API Gateway responde a la solicitud buscando la respuesta del punto de enlace en la caché en lugar de realizar una solicitud al punto de enlace. El valor de TTL predeterminado para el almacenamiento en caché de la API es de 300 segundos. El valor de TTL máximo es de 3600 segundos. TTL = 0 significa que el almacenamiento en caché está deshabilitado.

nota

El almacenamiento en caché es el mejor esfuerzo. Puedes usar las CacheMissCount métricas CacheHitCount y de Amazon CloudWatch para monitorear las solicitudes que API Gateway atiende desde la caché de API.

El tamaño máximo de una respuesta que se puede almacenar en la caché es 1048576 bytes. El cifrado de datos en la caché puede aumentar el tamaño de la respuesta cuando se almacena en la caché.

Se trata de un servicio compatible con HIPAA. Para obtener más información sobre AWS la Ley de Portabilidad y Responsabilidad de los Seguros de Salud de los Estados Unidos de 1996 (HIPAA) y el uso de AWS los servicios para procesar, almacenar y transmitir información de salud protegida (PHI), consulte Descripción general de la HIPAA.

importante

Al habilitar el almacenamiento en caché para una etapa, solo los métodos GET tienen el almacenamiento en caché habilitado de forma predeterminada. Esto ayuda a garantizar la seguridad y la disponibilidad de la API. Puede habilitar el almacenamiento en caché para otros métodos invalidando la configuración del método.

importante

El almacenamiento en caché se cobra por hora en función del tamaño de la memoria caché que seleccione. El almacenamiento en caché no es apto para la capa gratuita. AWS Para obtener más información, consulte Precio de API Gateway.

Activar almacenamiento en caché de Amazon API Gateway

En API Gateway, puede habilitar el almacenamiento en caché para una etapa específica.

Al habilitar el almacenamiento en caché, debe elegir una capacidad de caché. En general, una capacidad mayor ofrece un mejor desempeño, pero también cuesta más. Para conocer los tamaños de caché admitidos, consulta cacheClusterSizela Referencia de API Gateway API.

API Gateway permite el almacenamiento en caché creando una instancia de caché dedicada. Este proceso puede tardar hasta cuatro minutos.

API Gateway cambia la capacidad de almacenamiento en caché eliminando al instancia de caché y creando una nueva con una capacidad modificada. Todos los datos almacenados en la memoria caché existente se eliminan.

nota

La capacidad de la caché afecta la CPU, la memoria y el ancho de banda de red de la instancia de caché. Como resultado, la capacidad de la caché puede afectar el rendimiento de dicha caché.

API Gateway recomienda ejecutar una prueba de carga de 10 minutos para comprobar que la capacidad de la caché sea adecuada para la carga de trabajo. Asegúrese de que durante la prueba de carga el tráfico refleje el tráfico de producción. Por ejemplo, incluya aumento gradual, tráfico constante y picos de tráfico. La prueba de carga debe incluir respuestas que se puedan entregar desde la caché, así como respuestas individuales que agreguen elementos a dicha caché. Monitoree las métricas de latencia, 4xx, 5xx, métricas de aciertos y errores de la caché durante la prueba de carga. Ajuste la capacidad de la caché según sea necesario en función de estas métricas. Para obtener más información sobre las pruebas de carga, consulte ¿Cómo selecciono la mejor capacidad de memoria caché de API Gateway para evitar alcanzar un límite de velocidad?.

En la consola de API Gateway, se configura el almacenamiento en caché en la página Etapas. Debe aprovisionar la caché de etapas y especificar una configuración de caché predeterminada a nivel de método. Si activa la caché a nivel de método predeterminada, la caché a nivel de método se activa para todos los métodos del escenario, a menos que dicho método tenga un método que lo sustituya. Cualquier GET método adicional que implemente en su escenario tendrá una caché a nivel de método. Para configurar la configuración de almacenamiento en caché a nivel de método para métodos específicos de su etapa, puede utilizar anulaciones de métodos. Para obtener más información sobre las anulaciones de métodos, consulte. Reemplace el almacenamiento en caché a nivel de etapa de API Gateway para el almacenamiento en caché a nivel de método

Para configurar el almacenamiento en caché de la API para una determinada etapa:
  1. Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway.

  2. Elija Stages (Etapas).

  3. En la lista Stages (Etapas) de la API, elija la etapa.

  4. En la sección Detalles de la etapa, elija Editar.

  5. En Configuración adicional, en Configuración de caché, activa la caché de la API de aprovisionamiento.

    Esto proporciona un clúster de caché para su etapa.

  6. Para activar el almacenamiento en caché para su etapa, active el almacenamiento en caché predeterminado a nivel de método.

    Esto activa el almacenamiento en caché a nivel de método para todos los métodos del escenario. Todos GET los métodos adicionales que despliegues en esta etapa tendrán una caché a nivel de método.

    nota

    Si ya tienes una configuración para una caché a nivel de método, cambiar la configuración predeterminada de almacenamiento en caché a nivel de método no afectará a esa configuración existente.

    
            Activa la caché de la API de aprovisionamiento y el almacenamiento en caché predeterminado a nivel de método.
  7. Elija Guardar cambios.

nota

La creación o eliminación de una memoria caché tarda unos cuatro minutos en completarse en API Gateway.

Cuando se crea una caché, el valor del clúster de caché cambia de a. Create in progress Active Cuando se completa la eliminación de la caché, el valor del clúster de caché cambia de Delete in progress aInactive.

Al activar el almacenamiento en caché a nivel de método para todos los métodos del escenario, el valor de almacenamiento en caché a nivel de método predeterminado cambia a. Active Si desactivas el almacenamiento en caché a nivel de método para todos los métodos del escenario, el valor predeterminado de almacenamiento en caché a nivel de método cambia a. Inactive Si ya tiene una configuración para una caché a nivel de método, cambiar el estado de la caché no afectará a esa configuración.

Cuando se habilita el almacenamiento en caché en Configuración de caché de la etapa, solo se almacenan en caché los métodos GET. Para garantizar la seguridad y la disponibilidad de la API, le recomendamos que no cambie esta configuración. Sin embargo, puede habilitar el almacenamiento en caché para otros métodos invalidando la configuración del método.

Si desea comprobar si el almacenamiento en caché funciona según lo previsto, tiene dos opciones generales:

  • Inspecciona las CloudWatch métricas de CacheHitCounty CacheMissCountpara tu API y etapa.

  • Inserte una marca de tiempo en la respuesta.

nota

No debes usar el X-Cache encabezado de la CloudFront respuesta para determinar si tu API se está sirviendo desde tu instancia de caché de API Gateway.

Reemplace el almacenamiento en caché a nivel de etapa de API Gateway para el almacenamiento en caché a nivel de método

Puedes anular la configuración de la caché a nivel de etapa activando o desactivando el almacenamiento en caché para un método específico. También puedes modificar el período TTL o activar o desactivar el cifrado de las respuestas almacenadas en caché.

Si cambias la configuración predeterminada de almacenamiento en caché a nivel de método en los detalles del escenario, esto no afectará a la configuración de caché a nivel de método que tenga sustituciones.

Si prevé que un método que almacena en caché va a recibir información confidencial en sus respuestas, en Cache Settings (Configuración de caché), elija Encrypt cache data (Cifrar datos de caché).

Para configurar los métodos individuales de almacenamiento en caché de la API para utilizar la consola:
  1. Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway.

  2. Elija la API.

  3. Elija Stages (Etapas).

  4. En la lista Stages (Etapas) de la API, expanda la etapa y elija un método en la API.

  5. En la sección Invalidaciones de métodos, elija Editar.

  6. En la sección Configuración del método, active o desactive Habilitar la caché de métodos o personalice cualquier otra opción que desee.

    nota

    El almacenamiento en caché no está activo hasta que aprovisione un clúster de caché para su etapa.

  7. Seleccione Guardar.

Usar parámetros de método o integración como claves de caché para indexar las respuestas almacenadas en caché

Cuando un método o una integración almacenados en caché tienen parámetros, que pueden adoptar la forma de encabezados personalizados, rutas URL o cadenas de consulta, puede utilizar algunos o todos los parámetros para crear claves de caché. API Gateway puede almacenar en memoria caché las respuestas del método, en función de los valores de los parámetros utilizados.

nota

Las claves de caché son necesarias cuando se configura el almacenamiento en caché en un recurso.

Suponga, por ejemplo, que tiene una solicitud con el siguiente formato:

GET /users?type=... HTTP/1.1 host: example.com ...

En esta solicitud, type puede tomar un valor de admin o regular. Si incluye el parámetro type como parte de la clave de caché, las respuestas de GET /users?type=admin se almacenan en caché por separado de las de GET /users?type=regular.

Cuando una solicitud de método o integración toma más de un parámetro, puede elegir algunos o todos los parámetros para crear la clave de caché. Por ejemplo, puede incluir solamente el parámetro type en la clave de caché para la siguiente solicitud, realizada en el orden indicado dentro de un período de TTL:

GET /users?type=admin&department=A HTTP/1.1 host: example.com ...

La respuesta de esta solicitud se almacena en caché y se utiliza para servir la siguiente solicitud:

GET /users?type=admin&department=B HTTP/1.1 host: example.com ...

Para incluir un parámetro de solicitud de método o integración como parte de una clave de caché en la consola de API Gateway, seleccione Caching después de agregar el parámetro.


                Incluir parámetros de método o integración como claves de caché para indexar las respuestas almacenadas en caché

Vaciar la caché de etapa de API en API Gateway

Cuando el almacenamiento en caché de la API está habilitado, puede vaciar la caché de etapas de API para asegurarse de que los clientes de la API obtengan las respuestas más recientes de los puntos de conexión de integración.

Para vaciar la caché de etapas de API, elija el menú de acciones de la etapa y, a continuación, seleccione Vaciar la caché de etapas.

nota

Después de que la caché se vacía, las respuestas se atienden desde el punto de enlace de integración hasta que se vuelva a crear la caché. Durante este período, el número de solicitudes enviadas al punto de enlace de integración puede aumentar. Esto podría aumentar temporalmente la latencia total de la API.

Invalidar una entrada de caché de API Gateway

Un cliente de la API puede invalidar una entrada de caché existente y volver a cargarla desde el punto de enlace de integración para las distintas solicitudes. El cliente debe enviar una solicitud que contenga el encabezado Cache-Control: max-age=0. El cliente recibe la respuesta directamente del punto de enlace de integración en lugar de la caché, siempre que el cliente esté autorizado para ello. Esto sustituye la entrada de caché existente por la nueva respuesta, que se obtiene del punto de enlace de integración.

Para conceder permiso a un cliente, asocie una política con el siguiente formato a una función de ejecución de IAM del usuario.

nota

No se admite la invalidación de la memoria caché entre cuentas.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:InvalidateCache" ], "Resource": [ "arn:aws:execute-api:region:account-id:api-id/stage-name/GET/resource-path-specifier" ] } ] }

Esta política permite al servicio de ejecución de API Gateway invalidar la caché para las solicitudes en el recurso o recursos especificados. Para especificar un grupo de recursos de destino, utilice el carácter comodín (*) para account-id, api-id y otras entradas en el valor de ARN de Resource. Para obtener más información sobre cómo establecer permisos para el servicio de ejecución de API Gateway, consulte Control del acceso a una API con permisos de IAM.

Si no impone una política InvalidateCache (o selecciona la casilla de verificación Require authorization (Solicitar autorización)), cualquier cliente puede invalidar la caché de la API. Si la mayoría o todos los clientes invalidan la caché de la API, esto podría aumentar considerablemente la latencia de la API.

Cuando la política está implantada, se habilita el almacenamiento en caché y se requiere autorización.

Para controlar el modo en que se gestionan las solicitudes no autorizadas, selecciona una opción de Gestión de solicitudes no autorizadas en la consola de API Gateway.


                Configurar la invalidación de caché

Las tres opciones producen los siguientes comportamientos:

  • Fail the request with 403 status code (Error de la solicitud con el código de estado 403): devuelve una respuesta 403 Unauthorized.

    Para establecer esta opción mediante la API, use FAIL_WITH_403.

  • Ignore cache control header; Add a warning in response header (Omitir encabezado de control de caché; agregar una advertencia en el encabezado de respuesta): procesa la solicitud y agrega un encabezado de advertencia en la respuesta.

    Para establecer esta opción mediante la API, use SUCCEED_WITH_RESPONSE_HEADER.

  • Ignore cache control header (Omitir encabezado de control de caché): procesa la solicitud y no agrega un encabezado de advertencia en la respuesta.

    Para establecer esta opción mediante la API, use SUCCEED_WITHOUT_RESPONSE_HEADER.