Quero reduzir a latência ao extrair imagens com o Amazon Elastic Container Service (Amazon ECS).
Resolução
Reduza o tamanho das imagens
Para reduzir o tempo de extração da imagem, reduza o tamanho da imagem. Para obter mais informações sobre como reduzir o tamanho da imagem, consulte Building best practices (Práticas recomendadas de criação) no site Docker Docs.
Se você usa uma imagem de contêiner do Amazon Linux 2023, é uma prática recomendada usar uma imagem mínima de contêiner AL2023 para reduzir o tamanho da imagem.
Use o endpoint mais próximo da região da AWS
Para reduzir a latência, use o endpoint de Região mais próximo de onde sua aplicação está sendo executado.
Se você usa um registro público, como o Amazon Elastic Container Registry (Amazon ECR) Public ou o Docker Hub, use um cache de pull-through. Com um cache de pull-through, é possível implantar a imagem em um registro privado com o mesmo endpoint da aplicação. Para obter mais informações, consulte Sincronizar um registro upstream com um registro privado do Amazon ECR.
Se a imagem já existir em um registro privado do Amazon ECR em uma Região diferente, use a replicação de imagem privada. Com a replicação de imagem privada, é possível implantar a mesma imagem na Região da aplicação.
Defina ECS_IMAGE_PULL_BEHAVIOR como uma vez
Se você usar o tipo de inicialização do Amazon Elastic Compute Cloud (Amazon EC2), modifique o parâmetro ECS_IMAGE_PULL_BEHAVIOR para configurar o comportamento de pull do Amazon ECS. Para reduzir o armazenamento da sua instância de contêiner, defina ECS_IMAGE_PULL_BEHAVIOR como uma vez. Essa configuração usa imagens em cache e extrai imagens remotamente somente se a imagem nunca tiver sido extraída antes ou tiver sido removida por limpeza automática. Para obter mais informações sobre limpeza de imagens, consulte Limpeza automática de tarefas e de imagens do Amazon ECS.
No exemplo a seguir, ECS_IMAGE_PULL_BEHAVIOUR está definido como uma vez. Quando a tarefa com o contêiner amazonlinux:2023-minimal é iniciada pela primeira vez, o atendente do Amazon ECS na instância do EC2 extrai a imagem. Para verificar quando a extração da imagem começou e terminou, verifique o valor msg e, para verificar o tempo de extração da imagem, consulte elapsed e 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
Quando a tarefa com o contêiner amazonlinux:2023-minimal é iniciada pela segunda vez, o atendente do Amazon ECS usa o cache, mas não extrai a imagem. Para verificar se o Amazon ECS encontrou e depois usou a imagem em cache, verifique o valor 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 obter mais informações sobre os parâmetros de configuração do atendente do Amazon ECS, consulte Configuração do atendente de contêiner do Amazon ECS.
Informações relacionadas
Cross region replication in Amazon ECR has landed (A replicação entre regiões no Amazon ECR está disponível)
Otimização da performance para o Amazon ECR