O Amazon EC2 Container Service (ECS) permite que você execute e gerencie aplicações habilitadas para Docker facilmente 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 agendador de contêiner ou conectar o EC2 Container Service ao seu processo de entrega de software atual (por exemplo, sistemas de integração contínua e de entrega).
Amazon EC2 Container Service
Comece a usarReceba 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.
O Amazon EC2 Container Service oferece suporte para Docker e permite que você execute e gerencie contêineres Docker facilmente 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 EC2 Container Service elimina a complexidade do gerenciamento de contêiner. 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 EC2 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 EC2 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 EC2 Container Service inclui agendadores que colocam contêineres em seus clusters com base em suas necessidades de recursos (por exemplo, CPU ou RAM) e 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 ECS é integrado ao Elastic Load Balancing (ELB), permitindo a distribuição do tráfego entre seus contêineres. Você especifica a definição de tarefas e o ELB a ser utilizado, e o programador do Amazon ECS Service adicionará contêineres e os removerá do ELB, tudo de forma automática. É 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 EC2 Container Service CLI (Amazon ECS CLI) permite a simplificação da sua experiência de desenvolvimento local, além de configurar facilmente um cluster do Amazon ECS e seus recursos associados (ex.: instância do 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 ECS 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.
É 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 EC2 Container Service pode ser usado com qualquer registro do Docker privado acessível ou de terceiros, ou com o Docker Hub, um repositório de imagens do Docker hospedado. Basta especificar o repositório em sua Definição de Tarefas. O Amazon ECS recuperará as imagens apropriadas para suas aplicações.
O Amazon EC2 Container Service permite que você especifique 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.