Arquitetar instâncias gerenciadas do Amazon ECS
As instâncias gerenciadas do Amazon ECS são uma opção de computação totalmente gerenciada para o Amazon ECS que permite que você execute workloads em contêineres em toda a variedade de tipos de instância do Amazon EC2 enquanto transfere o gerenciamento da infraestrutura para a AWS. Com as instâncias gerenciadas do Amazon ECS, você pode acessar recursos computacionais específicos, como aceleração de GPU, arquiteturas de CPU próprias, alta performance de rede e tipos especializados de instância, enquanto a AWS lida com provisionamento, ajuste de escala, aplicação de patches e manutenção da infraestrutura subjacente.
Ao usar as instâncias gerenciadas do Amazon ECS, você empacota sua aplicação em contêineres e especifica seus requisitos computacionais. A AWS seleciona automaticamente os tipos de instância do Amazon EC2 de uso geral mais econômicos que atendem às suas necessidades de workload, ou você pode especificar os atributos de instância desejados, incluindo tipos de instância, fabricantes de CPU e aceleradores. As instâncias gerenciadas do Amazon ECS gerenciam completamente todos os aspectos da infraestrutura, incluindo escalabilidade, aplicação de patches e otimização de custos, sem comprometer o acesso aos recursos da AWS e as integrações do Amazon EC2.
As instâncias gerenciadas do Amazon ECS oferecem suporte a contêineres Linux com otimizações e configurações de segurança específicas da plataforma. Por padrão, as instâncias gerenciadas do Amazon ECS otimizam a utilização da infraestrutura colocando várias tarefas menores em instâncias maiores, ajudando a reduzir custos e melhorar os tempos de lançamento das tarefas.
Este tópico descreve os diferentes componentes das tarefas e dos serviços das instâncias gerenciadas do Amazon ECS e identifica as considerações especiais para usá-las com o Amazon ECS.
Introdução
Para começar a usar as instâncias gerenciadas do Amazon ECS, você cria os perfis do IAM necessários e habilita as instâncias gerenciadas do Amazon ECS em sua conta da AWS. Em seguida, você pode criar um provedor de capacidade e iniciar tarefas ou serviços usando o provedor de capacidade de instâncias gerenciadas do Amazon ECS.
Para obter instruções detalhadas sobre como começar, consulte:
Provedores de capacidade
As instâncias gerenciadas do Amazon ECS usam provedores de capacidade para gerenciar a capacidade computacional das workloads. Você pode usar o provedor de capacidade padrão ou criar provedores personalizados com requisitos de instância específicos.
As seguintes opções de provedores de capacidade estão disponíveis:
-
Provedor de capacidade padrão: seleciona automaticamente os tipos de instância de uso geral mais econômicos para seus requisitos de workload.
-
Provedores de capacidade personalizados: permitem que você especifique atributos de instância usando a seleção de tipo de instância baseada em atributo, incluindo contagem de vCPU, memória, fabricantes de CPU, tipos de acelerador e tipos específicos de instância.
Uma estratégia de provedor de capacidade só pode conter um tipo de provedor de capacidade da seguinte lista:
-
Instâncias gerenciadas do Amazon ECS
-
Grupo do Amazon EC2 Auto Scaling
-
Fargate/Fargate_SPOT
Seleção e otimização de instância
O Amazon ECS escolhe os tipos de instância para workloads de instâncias gerenciadas do Amazon ECS usando um dos seguintes métodos:
-
Seleção automática: ao usar o provedor de capacidade padrão, o Amazon ECS seleciona automaticamente os tipos de instância de uso geral mais econômicos que atendem aos requisitos de CPU e memória especificados na definição da tarefa.
-
Seleção baseada em atributo: ao usar provedores de capacidade personalizados, você pode especificar os atributos da instância como contagem de vCPU, tamanho da memória, fabricantes de CPU, tipos de acelerador e tipos específicos de instância. O Amazon ECS seleciona entre todos os tipos de instância que correspondem aos atributos especificados.
As instâncias gerenciadas do Amazon ECS otimizam a utilização e o custo da infraestrutura por meio de vários mecanismos:
-
Posicionamento multitarefa: por padrão, o Amazon ECS coloca várias tarefas menores em instâncias maiores para maximizar a utilização e reduzir os custos.
-
Consolidação de workload ativa: o Amazon ECS identifica quando as instâncias de contêiner estão realmente ociosas enquanto tenta evitar o encerramento prematuro, o que pode afetar a disponibilidade da aplicação ou a performance da implantação. O sistema respeita o número mínimo e máximo de tarefas definidas para um serviço, o comportamento de iniciar antes de parar e o comportamento de proteção de tarefas.
-
Dimensionamento correto: conforme os requisitos de workload mudam, o Amazon ECS lança instâncias substitutas que são dimensionadas adequadamente para as necessidades atuais.
O Amazon ECS usa janelas de eventos do Amazon EC2 para programar atividades de manutenção durante períodos de tempo preferenciais. As janelas de eventos permitem que você defina períodos recorrentes em que a AWS pode realizar a manutenção nas instâncias, ajudando a minimizar a interrupção das workloads ao alinhar a manutenção com a programação operacional. Para obter mais informações, consulte Eventos programados para sua instância no Guia do usuário do Amazon EC2 para instâncias do Linux.
Se você precisar de um isolamento forte, poderá configurar as instâncias gerenciadas do Amazon ECS para executar cada tarefa em uma instância separada, com limites de isolamento de segurança da VM.
Definições de tarefa
As tarefas que usam instâncias gerenciadas do Amazon ECS oferecem suporte à maioria dos parâmetros de definição de tarefa do Amazon ECS. As instâncias gerenciadas do Amazon ECS são compatíveis com as atuais definições de tarefas do Fargate usando a versão 1.4.0 da plataforma, facilitando a migração.
Para usar as instâncias gerenciadas do Amazon ECS, defina o parâmetro de definição de tarefa requiresCompatibilities para incluir MANAGED_INSTANCES. Suas definições de tarefa podem especificar a compatibilidade das instâncias gerenciadas do Fargate e do Amazon ECS para flexibilidade nas opções de implantação.
Arquitetura de sistema operacional e CPU
Há suporte para os seguintes sistemas operacionais:
-
Bottlerocket
Existem duas arquiteturas disponíveis para a definição de tarefa do Amazon ECS, ARM e X86_64.
Quando você executar contêineres do Linux nas instâncias gerenciadas do Amazon ECS, será possível usar a arquitetura de CPU X86_64 ou a arquitetura ARM64 para suas aplicações baseadas em ARM.
Atributos principais
Veja abaixo os principais recursos de instâncias gerenciadas do Amazon ECS:
-
Selecione tipos de instância do EC2 específicos para atender aos requisitos da sua aplicação, permitindo o acesso a recursos de hardware especializados, como computação acelerada por GPU, recursos específicos de CPU e memória grande.
-
Otimize a utilização e o custo dos recursos com várias tarefas em uma única instância por padrão, ao contrário do Fargate, que executa cada tarefa em seu próprio ambiente isolado.
-
Garanta a conformidade de segurança e a aplicação regular de patches com uma vida útil máxima da instância de 14 dias, após os quais as tarefas são migradas automaticamente para novas instâncias.
-
Habilite funções avançadas de rede e administração de sistema em contêineres usando recursos privilegiados do Linux, incluindo CAP_NET_ADMIN, CAP_SYS_ADMIN e CAP_BPF.
Perfis do IAM
As instâncias gerenciadas do Amazon ECS exigem dois perfis do IAM:
-
Perfil de infraestrutura: esse perfil permite que a AWS administre as instâncias gerenciadas do Amazon ECS em seu nome.
-
Perfil de instância: é uma forma de transmitir um perfil do IAM às instâncias gerenciadas do Amazon ECS. Esse perfil é usado para:
-
Definir as permissões do IAM para as instâncias gerenciadas do Amazon ECS que executam workloads de contêiner.
-
Permitir que a AWS gerencie essas instâncias em seu nome.
-
Permitir que as instâncias acessem os serviços da AWS de acordo com as permissões definidas no perfil.
-
Segurança e conformidade
As instâncias gerenciadas do Amazon ECS implementam várias camadas de segurança para proteger as workloads:
-
Configuração segura: as instâncias gerenciadas do Amazon ECS seguem as práticas recomendadas de segurança da AWS, incluindo nenhum acesso SSH, sistema de arquivos raiz imutável e controles de acesso obrigatórios de kernel via SELinux.
-
Aplicação automática de patches: a AWS atualiza as instâncias gerenciadas do Amazon ECS com os patches de segurança mais recentes, respeitando as janelas de manutenção que você configura.
-
Vida útil limitada da instância: a vida útil máxima de uma instância em execução é de 14 dias, garantindo que as aplicações sejam executadas em instâncias configuradas corretamente, com patches de segurança atualizados.
-
Capacidades privilegiadas: você tem a opção de habilitar recursos privilegiados do Linux para workloads que precisam deles, como soluções de monitoramento e observabilidade de rede.
As instâncias gerenciadas do Amazon ECS oferecem suporte aos mesmos programas de conformidade do Amazon ECS, incluindo PCI-DSS, HIPAA e FedRAMP. Nas regiões com suporte, as instâncias gerenciadas do Amazon ECS respeitam as configurações de endpoint FIPS da conta para ajudar a alcançar a conformidade com o FedRAMP.
Redes
As instâncias gerenciadas do Amazon ECS oferecem suporte aos modos de rede awsvpc e host. O modo de rede awsvpc fornece a cada tarefa sua própria interface de rede elástica e endereço IP privado na VPC. Isso permite controles refinados de grupo de segurança e ACL de rede da tarefa. No modo de rede host, as tarefas compartilham o namespace de rede do host da instância gerenciada do Amazon ECS. Para obter mais informações sobre a rede de tarefas nas instâncias gerenciadas do Amazon ECS, consulte Rede de tarefas do Amazon ECS para instâncias gerenciadas do Amazon ECS.
Armazenamento de instâncias
As instâncias gerenciadas do Amazon ECS oferecem suporte à configuração do tamanho do volume de dados do Amazon EBS anexado à instância. Esse armazenamento é compartilhado entre todas as tarefas executadas na instância e pode ser usado para bind mounts. O volume pode ser compartilhado e montado entre os contêineres usando os parâmetros volumes, mountPoint e volumesFrom na definição da tarefa.
Ele é anexado durante a criação da instância. Você pode especificar o tamanho do volume, em GiB, ao criar um provedor de capacidade das instâncias gerenciadas do Amazon ECS usando o parâmetro storageConfiguration.
{ ... "managedInstancesProvider": { "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRole", "instanceLaunchTemplate": { "ec2InstanceProfileArn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceProfile", "networkConfiguration": { "subnets": [ "subnet-abcdef01234567", "subnet-bcdefa98765432" ], "securityGroups": [ "sg-0123456789abcdef" ] }, "storageConfiguration": { "storageSizeinGiB" : 100 } } } ... }
O tamanho mínimo desse volume é 30 GiB, e o máximo é 16.384 GiB. Por padrão, o tamanho desse volume é 80 GiB.
A imagem de contêiner extraída, compactada e descompactada da tarefa é armazenada no volume. Para determinar a quantidade total de armazenamento de instâncias que sua tarefa precisa usar como bind mount, subtraia a quantidade de armazenamento usada pela imagem do contêiner da quantidade total de armazenamento de instâncias em que a tarefa está alocada.
A performance dos volumes do Amazon EBS anexados às instâncias gerenciadas do Amazon ECS é igual à correspondente performance das instâncias gerenciadas do Amazon EC2, conforme descrito na documentação Instâncias otimizadas para o Amazon EBS no Guia do usuário do Amazon EC2.
Você pode criar snapshots do volume para executar uma análise forense dos problemas de segurança ou para depurar sua aplicação. Para obter mais informações sobre como criar snapshots dos volumes do Amazon EBS, consulte Snapshots do Amazon EBS no Guia do usuário do Amazon EBS. Se você habilitar a criptografia do Amazon EBS por padrão, o volume será criptografado com a chave do AWS KMS especificada para criptografia por padrão. Para obter mais informações sobre criptografia por padrão, consulte Habilitar criptografia do Amazon EBS por padrão no Guia do usuário do Amazon EBS.
Além de usar o volume de dados anexado à instância, você também pode configurar volumes de dados para cada tarefa executada nas instâncias gerenciadas do Amazon ECS. Para obter mais informações sobre as opções disponíveis de armazenamento de tarefa, consulte Opções de armazenamento para tarefas do Amazon ECS.
Balanceamento de carga do serviço
O serviço do Amazon ECS que usa as instâncias gerenciadas pode ser configurado para usar o ELB na distribuição uniforme do tráfego entre as tarefas do serviço.
Os serviços do Amazon ECS nas instâncias gerenciadas oferecem suporte aos tipos de balanceadores de carga Application Load Balancer, Network Load Balancer e Gateway Load Balancer. Os Application Load Balancers roteiam o tráfego HTTP/HTTPS (camada 7), enquanto os Network Load Balancers roteiam o tráfego TCP ou UDP (camada 4).
Ao criar grupos de destino para esses serviços, você precisa escolher ip como o tipo de destino, e não instance. Isso ocorre porque as tarefas que usam o modo de rede awsvpc estão associadas a uma interface de rede elástica, e não diretamente a uma instância do Amazon EC2.
Monitoramento e observabilidade
As instâncias gerenciadas do Amazon ECS fornecem recursos abrangentes de monitoramento por meio de métricas do CloudWatch e integração com ferramentas de observabilidade:
-
Métricas do CloudWatch: monitore a utilização de CPU, memória, rede e armazenamento no nível da tarefa e da instância.
-
Insights de contêiner: obtenha métricas e registros detalhados de performance para suas aplicações em contêineres.
-
Integrações de terceiros: com recursos privilegiados habilitados, você pode executar soluções avançadas de monitoramento e observabilidade que exigem permissões elevadas do Linux.
Preço e otimização de custo
Com as instâncias gerenciadas do Amazon ECS, a cobrança é feita por toda a instância do Amazon EC2 que executa suas tarefas. O preço depende dos tipos de instância selecionados para suas workloads.
As instâncias gerenciadas do Amazon ECS oferecem vários recursos de otimização de custos:
-
Otimização multitarefa: maximize a utilização da instância executando várias tarefas em instâncias com o tamanho adequado.
Seus Savings Plans de computação e instância também se aplicam às workloads das instâncias gerenciadas do Amazon ECS.
Cotas de serviço
As workloads das instâncias gerenciadas do Amazon EC2 estão sujeitas às cotas de serviço de instâncias sob demanda do Amazon EC2. Seus serviços do Amazon ECS que usam as instâncias gerenciadas do Amazon ECS estão sujeitos às cotas do Amazon ECS.
Para obter mais informações sobre cotas de serviço, consulte:
-
Endpoints e cotas do Amazon EC2 na Referência geral da Amazon Web Services
Considerações sobre a migração
A migração para instâncias gerenciadas do Amazon ECS é simples para a maioria das workloads:
-
Do Fargate: exige apenas uma alteração na configuração do provedor de capacidade e a reimplantação. As definições das tarefas atuais que usam a versão 1.4.0 da plataforma são totalmente compatíveis.
-
Do EC2: semelhante à migração para o Fargate, mas você mantém o acesso aos recursos do Amazon EC2, como tipos de instância específicos.
Considere o seguinte ao planejar sua migração:
-
As aplicações devem tolerar a vida útil máxima da instância de 14 dias e as janelas de manutenção planejadas.
-
Tarefas de longa execução (que excedam 14 dias) não são adequadas para instâncias gerenciadas do Amazon ECS.
-
Não há suporte para AMIs personalizadas. As instâncias gerenciadas do Amazon ECS usam AMIs otimizadas para segurança e gerenciadas pela AWS.
Limitações e considerações
As seguintes limitações se aplicam às instâncias gerenciadas do Amazon ECS:
-
AMIs personalizadas: a AMI pertence à AWS e é gerenciada por ela.
-
Vida útil da instância: runtime máximo de 14 dias por instância para garantir a conformidade e a aplicação de patches de segurança.
-
Acesso SSH: não disponível por motivos de segurança. Use o Amazon ECS Exec para depuração e solução de problemas. Operações de gerenciamento somente por meio das APIs do Amazon ECS.
-
O Service Connect não está disponível para serviços executados em instâncias gerenciadas do Amazon ECS.