O que é o Amazon Elastic Container Service? - Amazon Elastic Container Service

O que é o Amazon Elastic Container Service?

O Amazon Elastic Container Service (Amazon ECS) é um serviço de gerenciamento de contêineres altamente escalável e rápido que facilita a execução, a interrupção e o gerenciamento de contêineres em um cluster. Os contêineres são definidos em uma definição de tarefa que você usa para executar tarefas individuais ou tarefas em um serviço. Nesse contexto, um serviço é uma configuração que permite executar e manter simultaneamente um número especificado de tarefas em um cluster. Você pode executar tarefas e serviços em uma infraestrutura sem servidor gerenciada pelo AWS Fargate. Como alternativa, para ter mais controle da infraestrutura, é possível executar tarefas e serviços em um cluster de instâncias do Amazon EC2 que você gerencia.

O Amazon ECS permite que você inicie e interrompa suas aplicações baseadas em contêiner usando chamadas de API simples. Você também pode recuperar o estado do cluster de um serviço centralizado e ter acesso a muitos recursos conhecidos do Amazon EC2.

Você pode programar o posicionamento dos contêineres no cluster com base nas suas necessidades de recursos, políticas de isolamento e requisitos de disponibilidade. Com o Amazon ECS, você não precisa operar seus próprios sistemas de gerenciamento de cluster e de configuração nem se preocupar com a escalabilidade da infraestrutura de gerenciamento.

O Amazon ECS pode ser usado em uma experiência de criação e implantação consistente para gerenciar e escalar workloads de lote e de extração-transformação-carga (ETL) e para criar arquiteturas de aplicações sofisticadas em um modelo de microsserviços. Para obter informações sobre casos de uso do Amazon ECS, consulte Casos de uso de contêineres.

A equipe de serviços de contêiner da AWS mantém um roteiro público no GitHub. O roteiro contém informações sobre no que as equipes estão trabalhando e permite que os clientes da AWS forneçam feedback diretamente. Para obter mais informações, consulte Roteiro de contêineres da AWS.

Recursos do Amazon ECS

O Amazon ECS é um serviço regional que simplifica a execução de contêineres de uma forma altamente disponível em várias zonas de disponibilidade de uma região. Você pode criar clusters do Amazon ECS em uma VPC nova ou existente. Depois que um cluster estiver funcionando, você poderá criar definições de tarefa que especifiquem quais imagens de contêiner serão executadas no cluster. Suas definições de tarefa são usadas para executar tarefas ou criar serviços. As imagens de contêiner são armazenadas e extraídas de registros de contêineres, como o Amazon Elastic Container Registry.

O diagrama a seguir mostra a arquitetura de um ambiente do Amazon ECS executado no AWS Fargate.


                Diagrama mostrando a arquitetura de um ambiente do Amazon ECS usando o tipo de lançamento Fargate.

As seções a seguir analisam esses elementos individuais da arquitetura do Amazon ECS mais detalhadamente.

Contêineres e imagens

Para implantar aplicações no Amazon ECS, os componentes das aplicações devem ser projetados para execução em contêineres. Um contêiner é uma unidade padronizada de desenvolvimento de software que contém tudo que a aplicação de software precisa para ser executada, incluindo o respectivo código, tempo de execução, ferramentas e bibliotecas de sistema. Os contêineres são criados a partir de um modelo somente leitura chamado imagem.

Normalmente, as imagens são criadas de um Dockerfile, um arquivo de texto simples que especifica todos os componentes incluídos no contêiner. Depois de serem criadas, essas imagens são armazenadas em um registro, de onde elas podem ser baixadas e executadas no cluster. Para obter mais informações sobre a tecnologia de contêiner, consulte Noções básicas do Docker para Amazon ECS.


                    Diagrama mostrando a criação e o registro de imagens do Docker em um ambiente do Amazon ECS.

Definições de tarefa

Para preparar sua aplicação para execução no Amazon ECS, crie uma definição de tarefa. A definição de tarefa é um arquivo de texto (em formato JSON) que descreve um ou mais contêineres (até o máximo de dez) que compõem a aplicação. A definição de tarefa pode ser considerada um esquema da aplicação. Ela especifica vários parâmetros da aplicação. Por exemplo, esses parâmetros podem ser usados para indicar os contêineres que devem ser usados, as portas que devem ser abertas para a aplicação e os volumes de dados que devem ser usados com os contêineres na tarefa. Os parâmetros específicos disponíveis para sua definição de tarefa dependem das necessidades da aplicação específica. Para obter mais informações sobre como criar definições de tarefa, consulte Definições de tarefa do Amazon ECS.

Veja a seguir um exemplo de definição de tarefa que especifica o uso do Fargate para iniciar um único contêiner que executa um servidor Web NGINX. Para um exemplo mais estendido que demonstra uso de vários contêineres em uma definição de tarefa, consulte Exemplos de definições de tarefa.

{ "family": "webserver", "containerDefinitions": [ { "name": "web", "image": "nginx", "memory": "100", "cpu": "99" }, ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "memory": "512", "cpu": "256", }

Tarefas e programação

Uma tarefa é a instanciação de uma definição de tarefa dentro de um cluster. Depois de criar uma definição de tarefa para a aplicação no Amazon ECS, é possível especificar o número de tarefas que serão executadas no cluster.

O programador de tarefas do Amazon ECS é responsável por posicionar tarefas no cluster. Há várias opções diferentes de programação disponíveis. Por exemplo, você pode definir um serviço que executa e mantém um número de tarefas especificado simultaneamente. Para obter mais informações sobre as diferentes opções de programação disponíveis, consulte Programar tarefas do Amazon ECS.


                    Diagrama mostrando a programação e o posicionamento de tarefas em um ambiente do Amazon ECS usando o tipo de inicialização do Fargate.

Clusters

Um cluster do Amazon ECS é um agrupamento lógico de tarefas ou serviços. Você pode registrar uma ou mais instâncias do Amazon EC2 (também conhecidas como instâncias de contêiner) no cluster para executar tarefas nelas. Como alternativa, você pode usar a infraestrutura sem servidor fornecida pelo Fargate para executar tarefas. Quando as tarefas são executadas no Fargate, os recursos de cluster também são gerenciados pelo Fargate.

Quando você usa o Amazon ECS pela primeira vez, um cluster padrão é criado para você. Você pode criar clusters adicionais em uma conta para manter os recursos separados.

Para mais informações sobre como criar clusters, consulte Clusters do Amazon ECS. Para obter mais informações sobre a inicialização de instâncias de contêiner e o registro delas nos clusters, consulte Instâncias de contêiner do Amazon ECS.

Agente do contêiner

O agente de contêiner é executado em cada instância de contêiner em um cluster do Amazon ECS. O agente envia para o Amazon ECS informações sobre as atuais tarefas do recurso em execução e a utilização dos recursos. Ele inicia e interrompe tarefas sempre que recebe uma solicitação do Amazon ECS. Para obter mais informações, consulte . Agente do contêiner do Amazon ECS.


                    Diagrama mostrando tarefas do agente de contêiner em um ambiente do Amazon ECS.

Conceitos básicos do Amazon ECS

Para saber mais sobre as ferramentas do desenvolvedor disponíveis para usar o Amazon ECS, consulte Visão geral das ferramentas do desenvolvedor do Amazon ECS.

Se você estiver usando o Amazon ECS pela primeira vez, o AWS Management Console para o Amazon ECS fornece um assistente de primeira execução que orienta você na criação de uma definição de tarefa para um servidor Web, na configuração de um serviço e na inicialização da primeira tarefa do Fargate. É altamente recomendável que você use o assistente de primeira execução se tiver pouca ou nenhuma experiência no uso do Amazon ECS. Para obter mais informações, consulte . Conceitos básicos do Amazon ECS.

Como alternativa, você pode instalar o AWS Command Line Interface (AWS CLI) para usar o Amazon ECS. Para obter mais informações, consulte . Configurar com o Amazon ECS.

O Amazon ECS pode ser usado junto com os seguintes serviços da AWS:

AWS Identity and Access Management

O Gerenciamento de Identidade e Acesso (IAM) é um serviço de gerenciamento de acesso que ajuda você a controlar o acesso aos recursos da AWS com segurança. Você pode usar o IAM para controlar quem é autenticado (quem fez login) e autorizado (quem tem permissões) a visualizar ou executar ações específicas nos recursos. No Amazon ECS, o IAM pode ser usado para controlar o acesso em nível de instância de contêiner, usando funções do IAM, e em nível de tarefa, usando funções de tarefa do IAM. Para obter mais informações, consulte . Gerenciamento de Identidade e Acesso para o Amazon Elastic Container Service.

Amazon EC2 Auto Scaling

O Auto Scaling é um serviço que permite aumentar ou diminuir a escala das tarefas com base em políticas definidas pelo usuário, em verificações de status de integridade e em programações. Você pode usar o Auto Scaling com uma tarefa do Fargate em um serviço para reduzir a resposta a uma série de métricas ou com uma tarefa do EC2 para escalar as instâncias de contêiner no cluster. Para obter mais informações, consulte . Autoescalabilidade do serviço.

Elastic Load Balancing

O serviço do Elastic Load Balancing distribui automaticamente o tráfego de entrada de aplicações nas tarefas do serviço do Amazon ECS. Ele permite que você obtenha maiores níveis de tolerância a falhas nas suas aplicações, fornecendo continuamente a quantidade necessária de capacidade de balanceamento de carga para distribuir o tráfego de aplicações. Você pode usar o Elastic Load Balancing para criar um endpoint que equilibre o tráfego dos serviços em um cluster. Para obter mais informações, consulte . Balanceamento de carga do serviço.

Amazon Elastic Container Registry

O Amazon ECR é um serviço gerenciado de registro do AWS Docker, que é seguro, escalável e confiável. O Amazon ECR oferece suporte a repositórios privados do Docker com permissões baseadas em recursos usando o IAM para que usuários ou tarefas específicas possam acessar repositórios e imagens. Os desenvolvedores podem usar a CLI do Docker para enviar, extrair e gerenciar imagens. Para obter mais informações, consulte o Guia do usuário do Amazon Elastic Container Registry.

AWS CloudFormation

O AWS CloudFormation oferece aos desenvolvedores e administradores de sistema uma maneira fácil de criar e gerenciar uma coleção de recursos relacionados da AWS. Mais especificamente, ele torna o provisionamento e a atualização de recursos mais ordenados e previsíveis. Você pode definir clusters, definições de tarefa e serviços como entidades em um script do AWS CloudFormation. Para obter mais informações, consulte Referência de modelo do AWS CloudFormation.

Pricing

Os preços do Amazon ECS dependem se você estiver usando o AWS Fargate ou a infraestrutura do Amazon EC2 para hospedar workloads em contêineres. Ao usar o Amazon ECS no AWS Outposts, os preços seguem o mesmo modelo de quando você está usando o Amazon EC2. Para obter mais informações, consulte Preços do Amazon ECS.

O Amazon ECS e o Fargate também oferecem Savings Plans que proporcionam uma economia significativa no uso da AWS. Para obter mais informações, consulte o Guia do usuário do Savings Plans.

Para ver sua fatura, acesse o Painel do Billing and Cost Management no console do AWS Billing and Cost Management. Sua fatura contém links para relatórios de uso que fornecem mais detalhes da fatura. Para saber mais sobre o faturamento de contas da AWS, consulte Faturamento de contas da AWS.

Se tiver dúvidas sobre faturamento, contas e eventos da AWS, entre em contato com o Suporte da AWS.

Para obter uma visão geral do Trusted Advisor, um serviço que ajuda você a aperfeiçoar os custos, a segurança e o desempenho do ambiente da AWS, consulte AWS Trusted Advisor.