Quiero reducir la latencia cuando extraigo imágenes con Amazon Elastic Container Service (Amazon ECS).
Resolución
Reducción del tamaño de las imágenes
Para reducir el tiempo de extracción de las imágenes, reduce su tamaño. Para obtener información sobre cómo reducir el tamaño de las imágenes, consulta Building best practices (Creación de prácticas recomendadas) en el sitio web de Docker Docs.
Si utilizas una imagen de contenedor de Amazon Linux 2023, se recomienda utilizar una imagen de contenedor mínima de AL2023 para reducir el tamaño de la imagen.
Uso del punto de enlace de la región de AWS más cercano
Para reducir la latencia, utiliza el punto de enlace de la región más cercana al lugar donde se ejecuta la aplicación.
Si utilizas un registro público, como Amazon Elastic Container Registry (Amazon ECR) Public o Docker Hub, utiliza una caché de extracción. Con una caché de extracción, puedes implementar la imagen en un registro privado con el mismo punto de enlace que la aplicación. Para obtener más información, consulta Sync an upstream registry with an Amazon ECR private registry (Sincronización de un registro ascendente con un registro privado de Amazon ECR).
Si la imagen ya existe en un registro privado de Amazon ECR en otra región, utiliza la replicación de imágenes privadas. Con la replicación de imágenes privadas, puedes implementar la misma imagen en la región de la aplicación.
Establece ECS_IMAGE_PULL_BEHAVIOR en “once”
Si usas el tipo de lanzamiento de Amazon Elastic Compute Cloud (Amazon EC2), modifica el parámetro ECS_IMAGE_PULL_BEHAVIOR para configurar el comportamiento de extracción de Amazon ECS. Para reducir el almacenamiento de instancias de contenedor, configura ECS_IMAGE_PULL_BEHAVIOR en once. Esta configuración usa imágenes almacenadas en caché y extrae imágenes de forma remota solo si la imagen no se había extraído nunca o si se ha eliminado mediante la limpieza automática. Para obtener más información sobre la limpieza de imágenes, consulta Limpieza automática de tareas e imágenes de Amazon ECS.
En el siguiente ejemplo, ECS_IMAGE_PULL_BEHAVIOUR se establece en once. Cuando la tarea con el contenedor amazonlinux:2023-minimal se inicia por primera vez, el agente de Amazon ECS de la instancia de EC2 extrae la imagen. Para comprobar cuándo comenzó y finalizó la extracción de la imagen, comprueba el valor de msg y, para comprobar el tiempo de extracción de la imagen, consulta elapsed y elapsedMs:
level=info time=2024-11-11T17:02:09Z msg="Pulling image for container concurrently" container="al2023" image="amazonlinux:2023-minimal" task="taskid"
level=info time=2024-11-11T17:02:14Z msg="Finished pulling image for container" task="taskid" container="al2023" image="amazonlinux:2023-minimal" elapsed="4.6245648s" elapsedMs=4624
Cuando la tarea con el contenedor amazonlinux:2023-minimal se inicia por segunda vez, el agente de Amazon ECS usa la caché, pero no extrae la imagen. Para comprobar si Amazon ECS ha encontrado y usado la imagen en caché, comprueba el valor de msg:
level=info time=2024-11-11T17:07:06Z msg="Found cached image, use it directly for container" task="taskid" container="al2023" image="amazonlinux:2023-minimal"
Para obtener más información sobre los parámetros de configuración del agente de Amazon ECS, consulta Configuración del agente de contenedor de Amazon ECS.
Información relacionada
Cross-Region replication in Amazon ECR has landed (Ha llegado la replicación entre regiones en Amazon ECR)
Optimizing performance for Amazon ECR (Optimización del rendimiento de Amazon ECR)