Usar a ramificação da plataforma Docker gerenciada pelo ECS no Elastic Beanstalk
Este tópico fornece uma visão geral dos ramos da plataforma Docker gerenciada pelo Elastic Beanstalk ECS para Amazon Linux 2 e Amazon Linux 2023. Ele também fornece informações de configuração específicas para a plataforma gerenciada Docker ECS.
Migrar do Docker de vários contêineres no AL1
Em 18 de julho de 2022, o Elastic Beanstalk definiu o status de todas as ramificações de plataforma baseadas no Amazon Linux AMI (AL1) como descontinuadas. Embora este capítulo forneça informações de configuração para esta plataforma retirada, recomendamos que você migre para a ramificação da plataforma compatível mais recente. Se você estiver usando atualmente o Docker de vários contêineres desativado em execução na ramificação da plataforma AL1, poderá migrar para a mais recente ramificação da plataforma ECS em execução no AL2023. A ramificação mais recente da plataforma é compatível com todos os recursos da ramificação da plataforma que foi retirada. Não é necessária nenhuma alteração no código-fonte. Para obter mais informações, consulte Migração da aplicação Elastic Beanstalk do Docker de vários contêineres gerenciados pelo ECS no AL1 para o ECS no Amazon Linux 2023.
Visão geral da plataforma Docker gerenciada pelo ECS
O Elastic Beanstalk usa o Amazon Elastic Container Service (Amazon ECS) para coordenar implantações de contêiner em ambientes do Docker gerenciado pelo ECS. O Amazon ECS fornece ferramentas para gerenciar um cluster de instâncias executando contêineres do Docker. O Elastic Beanstalk cuida das tarefas do Amazon ECS, incluindo criação de cluster, definição de tarefas e execução. Cada uma das instâncias do ambiente executa o mesmo conjunto de contêineres que são definidos em um arquivo Dockerrun.aws.json v2. Para tirar o máximo proveito do Docker, o Elastic Beanstalk permite criar um ambiente no qual as instâncias do Amazon EC2 executam vários contêineres do Docker, lado a lado.
O diagrama a seguir mostra um ambiente demonstrativo do Elastic Beanstalk configurado com três contêineres do Docker em execução em cada instância do Amazon EC2 em um grupo de Auto Scaling:
Recursos do Amazon ECS criados pelo Elastic Beanstalk
Quando você cria um ambiente usando a plataforma Docker gerenciada pelo ECS, o Elastic Beanstalk cria e configura automaticamente vários recursos do Amazon Elastic Container Service enquanto cria o ambiente. Fazendo isso, ele cria os contêineres necessários em cada instância do Amazon EC2.
-
Cluster do Amazon ECS: as instâncias de contêiner no Amazon ECS são organizadas em clusters. Quando é ele usado com o Elastic Beanstalk, sempre é criado um cluster para cada ambiente do Docker gerenciado pelo ECS. Um cluster do ECS também contém provedores de capacidade de grupo do Auto Scaling e outros recursos.
-
Definição de tarefas do Amazon ECS: o Elastic Beanstalk usa o arquivo
Dockerrun.aws.jsonv2 no projeto para gerar a definição de tarefas do Amazon ECS que é usada para configurar instâncias de contêiner no ambiente. -
Tarefa do Amazon ECS: o Elastic Beanstalk se comunica com o Amazon ECS para executar uma tarefa em todas as instâncias do ambiente para coordenar a implantação de contêineres. Em um ambiente escalável, o Elastic Beanstalk inicia uma nova tarefa sempre que uma instância é adicionada ao cluster.
-
Agente de contêiner do Amazon ECS: o agente é executado em um contêiner do Docker nas instâncias do ambiente. O agente consulta o serviço do Amazon ECS e aguarda uma tarefa para executar.
-
Volumes de dados do Amazon ECS: além dos volumes que você define em
Dockerrun.aws.jsonv2, o Elastic Beanstalk insere definições de volume na definição da tarefa para facilitar a coleta de logs.O Elastic Beanstalk cria volumes de log na instância de contêiner, um para cada contêiner, em
/var/log/containers/. Esses volumes são denominadoscontainernameawseb-logs-e são fornecidos para os contêineres que devem ser montados. Consulte Formato de definição de contêiner para detalhes sobre como montá-los.containername
Para ter mais informações sobre os recursos do Amazon ECS, consulte o Guia do desenvolvedor do Amazon Elastic Container Service.
Arquivo Dockerrun.aws.json v2
As instâncias do contêiner exigem um arquivo de configuração chamado Dockerrun.aws.json. Instâncias de contêineres referem-se às instâncias do Amazon EC2 que executam o Docker gerenciado pelo ECS em um ambiente Elastic Beanstalk. Esse arquivo é específico do Elastic Beanstalk e pode ser usado individualmente ou combinado com código-fonte e conteúdo em um pacote de fonte para criar um ambiente na plataforma Docker.
nota
O formado do Dockerrun.aws.json versão 2 adiciona suporte a vários contêineres por instância do Amazon EC2 e só pode ser usado com a plataforma Docker gerenciada pelo ECS. O formato difere significativamente das outras versões do arquivo de configuração compatíveis com as ramificações da plataforma Docker que não são gerenciadas pelo ECS.
Consulte o Dockerrun.aws.json v2 da para obter detalhes sobre o formato atualizado e um arquivo de exemplo.
Imagens de Docker
A plataforma Docker gerenciada pelo ECS para o Elastic Beanstalk exige que as imagens sejam pré-criadas e armazenadas em um repositório de imagens online público ou privado antes de criar um ambiente do Elastic Beanstalk.
nota
A criação de imagens personalizadas durante a implantação com um Dockerfile não é compatível com a plataforma Docker gerenciada pelo ECS no Elastic Beanstalk. Crie suas imagens e implante-as em um repositório online antes de criar um ambiente do Elastic Beanstalk.
Especifique as imagens por nome em Dockerrun.aws.json v2.
Para configurar o Elastic Beanstalk para autenticar em um repositório privado, inclua o parâmetro authentication no arquivo Dockerrun.aws.json v2.
Falha nas implantações de contêiner
Se uma tarefa do Amazon ECS falhar, um ou mais contêineres em seu ambiente Elastic Beanstalk não serão iniciados. O Elastic Beanstalk não reverte ambientes de vários contêineres devido a falha em uma tarefa do Amazon ECS. Se um contêiner não for iniciado no ambiente, implante novamente a versão atual ou uma versão funcional anterior do console do Elastic Beanstalk.
Para implantar uma versão existente
-
Abra o console do Elastic Beanstalk na região do seu ambiente.
-
Clique em Actions, à direita do nome do aplicativo, e depois clique em View application versions.
-
Selecione uma versão do aplicativo e clique em Deploy.
Estender plataformas Docker baseadas em ECS para o Elastic Beanstalk
O Elastic Beanstalk oferece recursos de extensibilidade que permitem que você aplique seus próprios comandos, scripts e configurações às implantações de aplicação. O fluxo de trabalho de implantação das ramificações das plataformas ECS AL2 e AL2023 varia um pouco das outras plataformas baseadas em Linux. Para obter mais informações, consulte Fluxo de trabalho de implantação de instâncias para o ECS em execução no Amazon Linux 2 e versões posteriores.