As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Monitore o uso de uma Amazon Machine Image compartilhada em várias Contas da AWS
Criado por Naveen Suthar (AWS) e Sandeep Gawande (AWS)
Resumo
As Amazon Machine Images (AMIs) são usadas para criar instâncias do Amazon Elastic Compute Cloud (Amazon EC2) em seu ambiente Amazon Web Services (AWS). Você pode criar AMIs em uma conta separada e centralizada da AWS, que é chamada de conta de criador nesse padrão. Em seguida, você pode compartilhar a AMI entre várias Contas da AWS que estão na mesma Região da AWS, chamadas de contas de consumidores nesse padrão. O gerenciamento AMIs a partir de uma única conta fornece escalabilidade e simplifica a governança. Nas contas de consumidores, você pode fazer referência à AMI compartilhada nos modelos de lançamento do Amazon EC2 Auto Scaling e nos grupos de nós do Amazon Elastic Kubernetes Service (Amazon EKS).
Quando uma AMI compartilhada é preterida, cancelada ou não compartilhada, as que Serviços da AWS se referem à AMI nas contas de consumidores não podem usar essa AMI para iniciar novas instâncias. Qualquer evento de ajuste de escala automático ou re-execução da mesma instância falha. Isso pode acarretar problemas no ambiente de produção, como tempo de inatividade do aplicativo ou comprometimento do desempenho. Quando os eventos de compartilhamento e uso da AMI ocorrem em vários Contas da AWS, pode ser difícil monitorar essa atividade.
Esse padrão ajuda você a monitorar o uso e o status compartilhados da AMI em contas na mesma região. Ele usa serviços sem servidor Serviços da AWS, como Amazon EventBridge, Amazon AWS Lambda DynamoDB e Amazon Simple Email Service (Amazon SES). Você provisiona a infraestrutura como código (IaC) usando o HashiCorp Terraform. Essa solução fornece alertas quando um serviço em uma conta de consumidor faz referência a uma AMI com registro cancelado ou não compartilhada.
Pré-requisitos e limitações
Pré-requisitos
Duas ou mais contas ativas Contas da AWS: uma conta de criador e uma ou mais contas de consumidor
Um ou mais AMIs que são compartilhados da conta do criador para uma conta de consumidor
CLI do Terraform, instalada
(documentação do Terraform) Terraform AWS Provider, configurado (documentação
do Terraform) (Opcional, mas recomendado) Backend do Terraform, configurado
(documentação do Terraform) Git, instalado
Limitações
Esse padrão monitora o AMIs que foi compartilhado com contas específicas usando o ID da conta. Esse padrão não monitora AMIs o que foi compartilhado com uma organização usando o ID da organização.
AMIs só podem ser compartilhadas com contas que estejam dentro da mesma Região da AWS. Esse padrão monitora AMIs dentro de uma única região alvo. Para monitorar o uso AMIs em várias regiões, você implanta essa solução em cada região.
Esse padrão não monitora nenhum AMIs que tenha sido compartilhado antes da implantação dessa solução. Se você quiser monitorar o compartilhamento anterior AMIs, você pode cancelar o compartilhamento da AMI e depois compartilhá-la novamente com as contas do consumidor.
Versões do produto
Terraform versão 1.2.0 ou superior
Terraform AWS Provider versão 4.20 ou posterior
Arquitetura
Pilha de tecnologias de destino
Os seguintes recursos são provisionados como IaC por meio do Terraform:
Tabelas do Amazon DynamoDB
EventBridge Regras da Amazon
AWS Identity and Access Management Função (IAM)
AWS Lambda funções
Amazon SES
Arquitetura de destino

O diagrama mostra o seguinte fluxo de trabalho:
Uma AMI na conta do criador é compartilhada com uma conta de consumidor na mesma Região da AWS.
Quando a AMI é compartilhada, uma EventBridge regra na conta do criador captura o
ModifyImageAttribute
evento e inicia uma função Lambda na conta do criador.A função do Lambda armazena dados relacionados à AMI em uma tabela do DynamoDB na conta de criador.
Quando uma AWS service (Serviço da AWS) conta do consumidor usa a AMI compartilhada para iniciar uma EC2 instância da Amazon ou quando a AMI compartilhada é associada a um modelo de execução, uma EventBridge regra na conta do consumidor captura o uso da AMI compartilhada.
A EventBridge regra inicia uma função Lambda na conta do consumidor. A função do Lambda faz o seguinte:
A função do Lambda atualiza os dados relacionados à AMI em uma tabela do DynamoDB na conta de consumidor.
A função Lambda assume uma função do IAM na conta do criador e atualiza a tabela Lambda na conta do criador. Na tabela
Mapping
, ela cria um item que mapeia o ID da instância ou o ID do modelo de execução para o ID de sua respectiva AMI.
A AMI gerenciada centralmente na conta de criador foi descontinuada, teve seu registro cancelado ou não é compartilhada.
A EventBridge regra na conta do criador captura o
DeregisterImage
eventoModifyImageAttribute
or com aremove
ação e inicia a função Lambda.A função do Lambda verifica a tabela do DynamoDB para determinar se a AMI é usada em alguma das contas de consumidor. Se não houver instância IDs ou modelo de execução IDs associado à AMI na
Mapping
tabela, o processo estará concluído.Se alguma instância IDs ou modelo de execução IDs estiver associado à AMI na
Mapping
tabela, a função Lambda usa o Amazon SES para enviar uma notificação por e-mail aos assinantes configurados.
Ferramentas
Serviços da AWS
O Amazon DynamoDB é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.
EventBridgeA Amazon é um serviço de ônibus de eventos sem servidor que ajuda você a conectar seus aplicativos com dados em tempo real de várias fontes. Por exemplo, AWS Lambda funções, endpoints de invocação HTTP usando destinos de API ou barramentos de eventos em outros. Contas da AWS
AWS Identity and Access Management (IAM) ajuda você a gerenciar com segurança o acesso aos seus recursos da AWS controlando quem está autenticado e autorizado a usá-los.
O AWS Lambda é um serviço de computação que ajuda a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.
Amazon Simple Email Service (Amazon SES): ajuda você a enviar e receber e-mails usando seus próprios endereços de e-mail e domínios.
Outras ferramentas
HashiCorp O Terraform
é uma ferramenta de infraestrutura como código (IaC) que ajuda você a usar o código para provisionar e gerenciar a infraestrutura e os recursos da nuvem. Python
é uma linguagem de programação de computador de uso geral.
Repositório de código
O código desse padrão está disponível no repositório GitHub cross-account-ami-monitoring-terraform-samples
Práticas recomendadas
Siga as melhores práticas para trabalhar com AWS Lambda funções.
Siga as melhores práticas de construção AMIs.
Ao criar o perfil do IAM, siga o princípio do privilégio mínimo e conceda as permissões mínimas necessárias para executar uma tarefa. Para obter mais informações, consulte Concessão de privilégio mínimo e nas melhores práticas de segurança na documentação do IAM.
Configure o monitoramento e o alerta para as AWS Lambda funções. Para obter mais informações, consulte Monitorar e solucionar problemas de funções do Lambda.
Épicos
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie os perfis AWS CLI nomeados. | Para a conta do criador e a conta de cada consumidor, crie um perfil chamado AWS Command Line Interface (AWS CLI). Para obter instruções, consulte Configurar o AWS CLI | DevOps engenheiro |
Clonar o repositório. | Insira o comando da a seguir. Isso clona o repositório cross-account-ami-monitoring-terraform-samples usando SSH
| DevOps engenheiro |
Atualize o arquivo provider.tf. |
Para obter mais informações sobre como configurar os provedores, consulte Configurações de vários provedores | DevOps engenheiro |
Atualize o arquivo terraform.tfvars. |
| DevOps engenheiro |
Atualize o arquivo main.tf. | Conclua essas etapas somente se você estiver implantando essa solução em mais de uma conta de consumidor. Se você estiver implantando essa solução em apenas uma conta de consumidor, nenhuma modificação desse arquivo será necessária.
| DevOps engenheiro |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Implante a solução. | Na CLI do Terraform, insira os seguintes comandos para implantar os recursos AWS nas contas de criador e consumidor:
| DevOps engenheiro |
Verifique a identidade do endereço de e-mail. | Quando você implantou o plano Terraform, o Terraform criou uma identidade de endereço de e-mail para cada conta de consumidor no Amazon SES. Antes de enviar notificações para esse endereço de e-mail, você deve verificá-lo. Para obter instruções, consulte Verificação da identidade de um endereço de e-mail na documentação do Amazon SES. | AWS geral |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Valide a implantação na conta de criador. |
| DevOps engenheiro |
Valide a implantação na conta de consumidor. |
| DevOps engenheiro |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Crie uma AMI na conta de criador. |
| DevOps engenheiro |
Use a AMI na conta de consumidor. | Na conta do consumidor, use a AMI compartilhada para criar uma EC2 instância da Amazon ou um modelo de execução. Para obter instruções, consulte Como faço para iniciar uma EC2 instância da Amazon a partir de uma AMI personalizada | DevOps engenheiro |
Valide o monitoramento e os alertas. |
| DevOps engenheiro |
Tarefa | Descrição | Habilidades necessárias |
---|---|---|
Excluir os recursos. |
| DevOps engenheiro |
Solução de problemas
Problema | Solução |
---|---|
Não recebi um alerta por e-mail. | Pode haver vários motivos pelos quais o e-mail do Amazon SES não foi enviado. Verifique o seguinte:
|
Recursos relacionados
AWS documentação
Criar funções do Lambda com Python (documentação do Lambda)
Crie uma AMI ( EC2 documentação da Amazon)
Compartilhe uma AMI com uma AMI específica Contas da AWS ( EC2 documentação da Amazon)
Cancele o registro da sua AMI (documentação da Amazon EC2 )
Documentação do Terraform