O Amazon Elastic Container Service (ECS) permite que você execute e gerencie facilmente aplicativos compatíveis com o Docker em um cluster de instâncias do Amazon EC2. Aplicações empacotadas como contêineres localmente serão implantadas e executadas da mesma forma que contêineres gerenciados pelo Amazon ECS. O Amazon ECS elimina a necessidade de instalar, operar e dimensionar sua própria infraestrutura de gerenciamento de cluster, além de permitir que você agende aplicações habilitadas para Docker em todo o cluster com base em suas necessidades de recursos e requisitos de disponibilidade. O Amazon ECS permite a expansão a partir de um único contêiner até milhares deles em centenas de instâncias, sem qualquer complexidade adicional na forma como você executa a aplicação. Você pode executar qualquer coisa: aplicações, trabalhos em lote ou microsserviços. O Amazon ECS abstrai toda a complexidade da infraestrutura, para que você possa se concentrar em projetar, construir e executar aplicações em contêineres.

Com o Amazon ECS, você tem total visibilidade e controle do seu cluster, desde a criação e o encerramento de contêineres Docker até a visualização de informações detalhadas sobre o estado do cluster. Você pode integrar e usar facilmente seu próprio programador de contêineres ou conectar o Elastic Container Service a um processo de entrega de software atual (por exemplo, sistemas de integração e entrega contínuas).

Amazon Elastic Container Service

Comece a usar

Receba doze meses de acesso ao nível de uso gratuito da AWS e aproveite os recursos do AWS Basic Support incluindo atendimento ao cliente 24x7x365 e fóruns de suporte, entre outros recursos.

AmazonEC2ContainerService_ProductDetail

O Amazon Elastic Container Service oferece suporte para Docker e permite executar e gerenciar facilmente contêineres Docker em um cluster de instâncias do Amazon EC2. Cada instância do EC2 em um cluster gerenciado pelo Amazon ECS executa um daemon do Docker. Assim, qualquer aplicação que você empacotar como um contêiner localmente será implantada e executada no Amazon ECS sem a necessidade de alterações na configuração.

A administração de sua própria infraestrutura de gerenciamento de contêiner geralmente envolve instalar, operar e dimensionar seu próprio software de gerenciamento de cluster, sistemas de gerenciamento de configurações e soluções de monitoramento. Arquitetar e gerenciar a disponibilidade e a escalabilidade desses sistemas é difícil. O Amazon Elastic Container Service elimina a complexidade do gerenciamento de contêineres. Com o Amazon ECS, tudo que você precisa fazer é iniciar um cluster de instâncias de contêiner e especificar as tarefas que deseja executar; o Amazon ECS cuida de todo o gerenciamento de cluster para você.

O Amazon Elastic Container Service permite que você defina tarefas por meio de um modelo declarativo do JSON chamado Definição de Tarefas. Dentro de uma Definição de Tarefas, você pode especificar um ou mais contêineres necessários para sua tarefa, incluindo o repositório e imagem do Docker, requisitos de memória e de CPU, volumes de dados compartilhados e como os contêineres são vinculados entre si. Você pode iniciar quantas tarefas quiser a partir de um único arquivo de Definição de Tarefas, que pode registrar com o serviço. Arquivos de Definição de Tarefas também permitem que você faça o controle de versão da especificação da aplicação.

O Amazon Elastic Container Service inclui programadores que posicionam os contêineres em clusters de acordo com as necessidades de recursos (por exemplo, CPU ou RAM) e os requisitos de disponibilidade. Usando os agendadores disponíveis, você pode agendar aplicações e serviços de execução longa, bem como trabalhos em lote. As APIs do Amazon ECS também fornecem informações completas sobre o estado do cluster, o que lhe permite escrever seus próprios agendadores ou integrar agendadores de terceiros existentes (por exemplo, Marathon). O Amazon ECS é um sistema de simultaneidade otimista com estado compartilhado que apresenta o estado completo do cluster a todos os agendadores. É possível desenvolver seus próprios programadores ou integrar programadores de terceiros usando as APIs do Amazon ECS ou o Blox, um conjunto de projetos de código aberto para gerenciar e orquestrar contêineres. Consulte a página do GitHub do Blox para saber mais.

Recuperação automática de contêineres
O programador do Amazon ECS Service recuperará automaticamente os contêineres com problemas, assegurando que você tenha o número desejado de contêineres sustentando o seu aplicativo.

Implantação de contêineres
O Amazon ECS permite atualizar facilmente seus contêineres para novas versões. Você pode fazer o upload de uma nova versão da Definição de Tarefas da sua aplicação. O agendador do Amazon ECS iniciará novos contêineres automaticamente usando a imagem atualizada e interromperá os contêineres que estiverem executando a versão anterior. O Amazon ECS registrará e cancelará o registro de seus contêineres automaticamente no ELB associado.

O Amazon Elastic Container Service fornece um conjunto de APIs simples para permitir que você integre e amplie o serviço. As APIs possibilitam que você crie e exclua clusters, registre e cancele o registro de tarefas, inicie e encerre contêineres Docker e forneça informações detalhadas sobre o estado do seu cluster e suas instâncias. Você também pode usar o AWS CloudFormation para provisionar clusters do Amazon ECS, registrar as definições de tarefas e programar contêineres.

O Amazon Elastic Container Service oferece suporte às redes do Docker e é integrado à Amazon VPC para oferecer isolamento para contêineres. Dessa forma, você pode controlar a forma como os contêineres se conectam a outros serviços e ao tráfego externo. O Amazon ECS permite optar entre quatro modos de redes para contêineres que atendem a diferentes casos de uso:
 
  • Task Networking/awsvpc – este modo atribui a cada tarefa do ECS em execução uma interface de rede elástica dedicada, o que disponibiliza recursos completos de rede aos contêineres em uma VPC, da mesma forma que em instâncias EC2.
  • Bridge – este modo cria um bridge Linux que conecta todos os contêineres executados no host em uma rede local virtual, que pode ser acessada por meio da conexão de rede padrão do host.
  • Host – este modo adiciona contêineres diretamente à pilha de redes do host, o que os expõe na rede do host, sem isolamento.
  • None – este modo desabilita redes externas para contêineres.

O Amazon Elastic Container Service é integrado ao Elastic Load Balancing (ELB), o que permite distribuir o tráfego entre os contêineres. Você especifica a Definição de Tarefas e o ELB a ser utilizado, e o programador do Amazon ECS Service adiciona e remove automaticamente contêineres do ELB. É possível especificar uma porta dinâmica na definição de tarefa, que disponibiliza ao seu contêiner uma porta não utilizada quando estiver programada em uma instância EC2. Você também pode usar o roteamento baseado em caminho para compartilhar um ELB com vários serviços.

O Amazon Elastic Container Service pode ser usado com qualquer registro do Docker privado acessível ou de terceiros, ou com o Docker Hub, um repositório hospedado de imagens do Docker. Basta especificar o repositório em sua Definição de Tarefas. O Amazon ECS recuperará as imagens apropriadas para os aplicativos.

É possível enviar cada log de agente do ECS e de contêiner do Docker da instância do contêiner para o Amazon CloudWatch Logs para simplificar o diagnóstico de problemas. Você também pode registrar todas as suas chamadas de API do Amazon ECS e entregar os arquivos de log por meio do AWS CloudTrail. As informações registradas incluem a identidade do chamador da API, a hora da chamada da API, o endereço IP de origem do chamador da API, os parâmetros da solicitação e os elementos de resposta retornados pelo Amazon ECS. O CloudTrail fornece um histórico de chamadas de API feitas do Console de Gerenciamento do Amazon ECS, de AWS SDKs e do AWS CLI. Com ele, é possível fazer análise de segurança, acompanhamento de alterações nos recursos e auditoria de conformidade.

O Amazon Elastic Container Service disponibiliza recursos de monitoramento para seus contêineres e clusters. Você pode monitorar a média de utilização da CPU e a CPU agregada, como também a utilização da memória durante a execução de tarefas agrupadas por definição de tarefas, serviço ou cluster usando o Amazon CloudWatch. Você também pode definir alarmes do CloudWatch para avisá-lo quando seus contêineres ou clusters precisam ser aumentados ou diminuídos.

A ILC do Amazon Elastic Container Service (ILC do Amazon ECS) permite simplificar a experiência de desenvolvimento local, bem como configurar facilmente um cluster do Amazon ECS e seus recursos associados (por exemplo, uma instância EC2). O Amazon ECS CLI sustenta o Docker Compose, uma ferramenta de código aberto para definir e executar aplicações com vários contêineres. Você pode aplicar a mesma definição do Compose usada para definir uma aplicação com vários contêineres na sua máquina de desenvolvimento, como também na produção. O Amazon ECS CLI tem código aberto e está disponível para download aqui.

O Amazon Elastic Container Service permite especificar uma função do IAM para cada tarefa do ECS. Isso permite que as instâncias do contêiner do ECS tenham uma função mínima, que respeite a política de acesso de "menor privilégio" e permita que você gerencie a função da instância e a função da tarefa separadamente. Você também obterá visibilidade sobre qual tarefa está usando qual função, o que será rastreado nos logs do CloudTrail.