

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
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts"></a>

*Naveen Suthar e Sandeep Gawande, Amazon Web Services*

## Resumo
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-summary"></a>

As [Amazon Machine Images (AMIs)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) 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](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-launch-template.html) do Amazon EC2 Auto Scaling e nos grupos de nós do Amazon Elastic Kubernetes Service (Amazon EKS).](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html)

Quando uma AMI compartilhada é [descontinuada](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-deprecate.html), tem seu [registro cancelado](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/deregister-ami.html) ou [deixa de ser compartilhada](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html), os Serviços da AWS que fazem referência à AMI nas contas de consumidor 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
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-prereqs"></a>

**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](https://developer.hashicorp.com/terraform/cli) (documentação do Terraform)
+ Terraform AWS Provider, [configurado (documentação](https://hashicorp.github.io/terraform-provider-aws/) do Terraform)
+ (Opcional, mas recomendado) Backend do Terraform, [configurado](https://developer.hashicorp.com/terraform/language/backend) (documentação do Terraform)
+ Git, [instalado](https://github.com/git-guides/install-git)

**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 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
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-architecture"></a>

**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**

![\[Arquitetura para monitorar o uso de AMIs compartilhadas e alertar os usuários se a AMI não for compartilhada ou se seu registro tiver sido cancelado\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/images/pattern-img/2d709249-0c68-47d7-be5d-46e8a73071ed/images/8c48c4dd-d681-4c32-9ba8-8f5ad2d66f64.png)


O diagrama mostra o seguinte fluxo de trabalho:

1. Uma AMI na conta de criador é compartilhada com uma conta de consumidor na mesma Região da AWS.

1. 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.

1. A função do Lambda armazena dados relacionados à AMI em uma tabela do DynamoDB na conta de criador.

1. 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.

1. A EventBridge regra inicia uma função Lambda na conta do consumidor. A função do Lambda faz o seguinte:

   1. A função do Lambda atualiza os dados relacionados à AMI em uma tabela do DynamoDB na conta de consumidor.

   1. A função do Lambda assume um perfil do IAM na conta de criador e atualiza a tabela do Lambda na conta de 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.

1. A AMI gerenciada centralmente na conta de criador foi descontinuada, teve seu registro cancelado ou não é compartilhada.

1. A EventBridge regra na conta do criador captura o `DeregisterImage` evento `ModifyImageAttribute` or com a `remove` ação e inicia a função Lambda.

1. 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.

1. 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
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-tools"></a>

**Serviços da AWS**
+ O [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) é um serviço de banco de dados NoSQL totalmente gerenciado que fornece performance rápida, previsível e escalável.
+  EventBridgeA [Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) é 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)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) 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](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) é 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)](https://docs.aws.amazon.com/ses/latest/dg/Welcome.html): ajuda você a enviar e receber e-mails usando seus próprios endereços de e-mail e domínios.

**Outras ferramentas**
+ O [HashiCorp Terraform](https://www.terraform.io/docs) é uma ferramenta de infraestrutura como código (IaC) que ajuda a provisionar e gerenciar recursos e infraestrutura de nuvem por meio de código.
+ [Python](https://www.python.org/) é 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](https://github.com/aws-samples/cross-account-ami-monitoring-terraform-samples).

## Práticas recomendadas
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-best-practices"></a>
+ Siga as [melhores práticas para trabalhar com AWS Lambda funções](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html).
+ Siga as [melhores práticas de construção AMIs](https://docs.aws.amazon.com/marketplace/latest/userguide/best-practices-for-building-your-amis.html).
+ 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e [nas melhores práticas de segurança](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html) 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](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html).

## Épicos
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-epics"></a>

### Personalize os arquivos de configuração do Terraform
<a name="customize-the-terraform-configuration-files"></a>


| Tarefa | Description | 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](https://aws.amazon.com/getting-started/guides/setup-environment/module-three/) no Centro de recursos de AWS introdução. | 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](https://github.com/aws-samples/cross-account-ami-monitoring-terraform-samples). GitHub <pre>git clone git@github.com:aws-samples/cross-account-ami-monitoring-terraform-samples.git</pre> | DevOps engenheiro | 
| Atualize o arquivo provider.tf. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html)Para obter mais informações sobre como configurar os provedores, consulte [Configurações de vários provedores](https://developer.hashicorp.com/terraform/language/providers/configuration#alias-multiple-provider-configurations) na documentação do Terraform. | DevOps engenheiro | 
| Atualize o arquivo terraform.tfvars. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | 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.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps engenheiro | 

### Implemente a solução usando o Terraform
<a name="deploy-the-solution-by-using-terraform"></a>


| Tarefa | Description | 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | 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](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#just-verify-email-proc) na documentação do Amazon SES. | AWS geral | 

### Validar a implantação de recursos
<a name="validate-resource-deployment"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Valide a implantação na conta de criador. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps engenheiro | 
| Valide a implantação na conta de consumidor. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps engenheiro | 

### Validar o monitoramento
<a name="validate-monitoring"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Crie uma AMI na conta de criador. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | 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](https://repost.aws/knowledge-center/launch-instance-custom-ami) (AWS re:POST Knowledge Center) ou [Criar um modelo de lançamento para um grupo do Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) (documentação do Amazon Auto EC2 Scaling). | DevOps engenheiro | 
| Valide o monitoramento e os alertas. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps engenheiro | 

### (Opcional) Interromper o monitoramento compartilhado AMIs
<a name="optional-stop-monitoring-shared-amis"></a>


| Tarefa | Description | Habilidades necessárias | 
| --- | --- | --- | 
| Excluir os recursos. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps engenheiro | 

## Solução de problemas
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-troubleshooting"></a>


| 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:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | 

## Recursos relacionados
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-resources"></a>

**AWS documentação**
+ [Criar funções do Lambda com Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html) (documentação do Lambda)
+ [Crie uma AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-ami.html) ( EC2 documentação da Amazon)
+ [Compartilhe uma AMI com uma AMI específica Contas da AWS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html) ( EC2 documentação da Amazon)
+ [Cancele o registro da sua AMI (documentação](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/deregister-ami.html) da Amazon EC2 )

**Documentação do Terraform**
+ [Instalar o Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli)
+ [Configuração de backend do Terraform](https://www.terraform.io/language/settings/backends/configuration)
+ [Provedor Terraform do AWS](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)
+ [Download binário do Terraform](https://developer.hashicorp.com/terraform/install)