

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Monitora l'uso di un'Amazon Machine Image condivisa su più Account AWS
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts"></a>

*Naveen Suthar e Sandeep Gawande, Amazon Web Services*

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

[Amazon Machine Images (AMIs)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html) vengono utilizzate per creare istanze Amazon Elastic Compute Cloud (Amazon EC2) nel tuo ambiente Amazon Web Services (AWS). Puoi creare AMIs un account AWS separato e centralizzato, chiamato *account creator* in questo modello. È quindi possibile condividere l'AMI tra più account Account AWS che si trovano nella stessa Regione AWS area, denominati *account consumer* secondo questo schema. La gestione AMIs da un unico account offre scalabilità e semplifica la governance. [Negli account consumer, puoi fare riferimento all'AMI condivisa nei [modelli di lancio](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-launch-template.html) di Amazon EC2 Auto Scaling e nei gruppi di nodi Amazon Elastic Kubernetes Service (Amazon EKS).](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html)

Quando un'AMI condivisa è [obsoleta, cancellata](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-deprecate.html) o [non [è condivisa](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/deregister-ami.html)](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html), quelle che Servizi AWS fanno riferimento all'AMI negli account consumer non possono utilizzare questa AMI per avviare nuove istanze. Qualsiasi evento di ridimensionamento automatico o riavvio della stessa istanza ha esito negativo. Ciò può causare problemi nell'ambiente di produzione, come tempi di inattività delle applicazioni o peggioramento delle prestazioni. Quando gli eventi di condivisione e utilizzo dell'AMI si verificano più volte Account AWS, può essere difficile monitorare questa attività.

Questo modello consente di monitorare l'utilizzo e lo stato delle AMI condivise tra gli account nella stessa regione. Utilizza sistemi serverless Servizi AWS, come Amazon EventBridge, Amazon AWS Lambda DynamoDB e Amazon Simple Email Service (Amazon SES). Effettua il provisioning dell'infrastruttura come codice (IaC) utilizzando Terraform. HashiCorp Questa soluzione fornisce avvisi quando un servizio in un account consumatore fa riferimento a un'AMI non registrata o non condivisa.

## Prerequisiti e limitazioni
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-prereqs"></a>

**Prerequisiti**
+ Due o più account attivi Account AWS: un account Creator e uno o più account consumer
+ Uno o più AMIs condivisi dall'account creatore a un account consumatore
+ Terraform CLI[,](https://developer.hashicorp.com/terraform/cli) installata (documentazione Terraform)
+ Terraform AWS Provider, [configurato](https://hashicorp.github.io/terraform-provider-aws/) (documentazione Terraform)
+ (Facoltativo, ma consigliato) Backend Terraform, [configurato](https://developer.hashicorp.com/terraform/language/backend) (documentazione Terraform)
+ Git, [installato](https://github.com/git-guides/install-git)

**Limitazioni**
+ Questo modello monitora AMIs ciò che è stato condiviso con account specifici utilizzando l'ID dell'account. Questo modello non monitora AMIs ciò che è stato condiviso con un'organizzazione utilizzando l'ID dell'organizzazione.
+ AMIs può essere condiviso solo con account che si trovano all'interno della stessa Regione AWS. Questo modello esegue il monitoraggio AMIs all'interno di un'unica regione di destinazione. Per monitorare l'utilizzo AMIs in più regioni, è necessario implementare questa soluzione in ciascuna regione.
+ Questo modello non monitora nulla di AMIs ciò che è stato condiviso prima dell'implementazione di questa soluzione. Se desideri monitorare i dati precedentemente condivisi AMIs, puoi annullare la condivisione dell'AMI e ricondividerla con gli account utente.

**Versioni del prodotto**
+ Terraform versione 1.2.0 o successiva
+ Terraform AWS Provider versione 4.20 o successiva

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

**Stack tecnologico Target**

Le seguenti risorse vengono fornite come IaC tramite Terraform:
+ Tabelle Amazon DynamoDB
+  EventBridge Regole di Amazon
+ AWS Identity and Access Management ruolo (IAM)
+ AWS Lambda funzioni
+ Amazon SES

**Architettura di destinazione**

![Architettura per monitorare l'uso condiviso dell'AMI e avvisare gli utenti se l'AMI non è condivisa o non è registrata](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/2d709249-0c68-47d7-be5d-46e8a73071ed/images/8c48c4dd-d681-4c32-9ba8-8f5ad2d66f64.png)


Il diagramma mostra il flusso di lavoro seguente:

1. Un'AMI nell'account del creatore viene condivisa con un account consumatore nello stesso Regione AWS.

1. Quando l'AMI è condivisa, una EventBridge regola nell'account creatore acquisisce l'`ModifyImageAttribute`evento e avvia una funzione Lambda nell'account creatore.

1. La funzione Lambda archivia i dati relativi all'AMI in una tabella DynamoDB nell'account creatore.

1. Quando un Servizio AWS account consumer utilizza l'AMI condivisa per avviare un' EC2 istanza Amazon o quando l'AMI condivisa è associata a un modello di avvio, una EventBridge regola nell'account consumer rileva l'uso dell'AMI condivisa.

1. La EventBridge regola avvia una funzione Lambda nell'account consumer. La funzione Lambda; svolge le operazioni seguenti:

   1. La funzione Lambda aggiorna i dati relativi all'AMI in una tabella DynamoDB nell'account consumer.

   1. La funzione Lambda assume un ruolo IAM nell'account creatore e aggiorna la tabella Lambda nell'account creatore. Nella `Mapping` tabella, crea un elemento che associa l'ID dell'istanza o l'ID del modello di avvio al rispettivo ID AMI.

1. L'AMI gestita centralmente nell'account del creatore è obsoleta, cancellata o non è condivisa.

1. La EventBridge regola nell'account creatore acquisisce l'`DeregisterImage`evento `ModifyImageAttribute` or con l'`remove`azione e avvia la funzione Lambda.

1. La funzione Lambda controlla la tabella DynamoDB per determinare se l'AMI viene utilizzata in uno qualsiasi degli account consumer. Se nella `Mapping` tabella non è presente alcuna istanza IDs o modello di avvio IDs associato all'AMI, il processo è completo.

1. Se un'istanza IDs o un modello di avvio IDs sono associati all'AMI nella `Mapping` tabella, la funzione Lambda utilizza Amazon SES per inviare una notifica e-mail agli abbonati configurati.

## Tools (Strumenti)
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-tools"></a>

**Servizi AWS**
+ [Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html) è un servizio di database NoSQL interamente gestito che offre prestazioni elevate, prevedibili e scalabili.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) è un servizio di bus eventi senza server che ti aiuta a connettere le tue applicazioni con dati in tempo reale provenienti da una varietà di fonti. Ad esempio, AWS Lambda funzioni, endpoint di invocazione HTTP che utilizzano destinazioni API o bus di eventi in altro modo. Account AWS
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) ti aiuta a gestire in modo sicuro l'accesso alle tue risorse AWS controllando chi è autenticato e autorizzato a utilizzarle.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) è un servizio di calcolo che consente di eseguire il codice senza gestire i server o effettuarne il provisioning. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
+ [Amazon Simple Email Service (Amazon SES)](https://docs.aws.amazon.com/ses/latest/dg/Welcome.html) Simple Email Service (Amazon SES) ti aiuta a inviare e ricevere e-mail utilizzando i tuoi indirizzi e-mail e domini.

**Altri strumenti**
+ [HashiCorp Terraform](https://www.terraform.io/docs) è uno strumento Infrastructure as Code (IaC) che consente di utilizzare il codice per fornire e gestire l'infrastruttura e le risorse cloud.
+ [Python](https://www.python.org/) è un linguaggio di programmazione per computer generico.

**Archivio di codice**

Il codice per questo pattern è disponibile nel repository GitHub [cross-account-ami-monitoring-terraform-samples](https://github.com/aws-samples/cross-account-ami-monitoring-terraform-samples).

## Best practice
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-best-practices"></a>
+ Segui le [migliori pratiche](https://docs.aws.amazon.com/lambda/latest/dg/best-practices.html) per lavorare con le funzioni. AWS Lambda 
+ Segui le [migliori pratiche per la costruzione AMIs](https://docs.aws.amazon.com/marketplace/latest/userguide/best-practices-for-building-your-amis.html).
+ Quando crei il ruolo IAM, segui il principio del privilegio minimo e concedi le autorizzazioni minime necessarie per eseguire un'attività. Per ulteriori informazioni, consulta le [migliori pratiche relative alla [concessione dei privilegi minimi](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#grant-least-priv) e alla sicurezza nella documentazione](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPracticesAndUseCases.html) IAM.
+ Imposta il monitoraggio e gli avvisi per le AWS Lambda funzioni. Per ulteriori informazioni, consulta [Monitoraggio e risoluzione dei problemi delle funzioni Lambda](https://docs.aws.amazon.com/lambda/latest/dg/lambda-monitoring.html).

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

### Personalizza i file di configurazione Terraform
<a name="customize-the-terraform-configuration-files"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea i profili AWS CLI denominati. | Per l'account creatore e ogni account consumatore, crea un profilo denominato AWS Command Line Interface (AWS CLI). Per istruzioni, consulta [Configurare il AWS CLI](https://aws.amazon.com/getting-started/guides/setup-environment/module-three/) nel Centro risorse AWS introduttive. | DevOps ingegnere | 
| Clonare il repository. | Inserire il seguente comando. Questo clona il repository [cross-account-ami-monitoring-terraform-samples utilizzando 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 ingegnere | 
| Aggiorna il file provider.tf. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html)Per ulteriori informazioni sulla configurazione dei provider, consulta [Configurazioni di più provider](https://developer.hashicorp.com/terraform/language/providers/configuration#alias-multiple-provider-configurations) nella documentazione di Terraform. | DevOps ingegnere | 
| Aggiorna il file terraform.tfvars. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps ingegnere | 
| Aggiorna il file.tf principale. | Completa questi passaggi solo se stai distribuendo questa soluzione su più di un account consumatore. Se si implementa questa soluzione su un solo account consumer, non è necessaria alcuna modifica di questo file.[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps ingegnere | 

### Implementa la soluzione utilizzando Terraform
<a name="deploy-the-solution-by-using-terraform"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Distribuire la soluzione. | Nella CLI Terraform, inserisci i seguenti comandi per distribuire le risorse AWS negli account creatore e consumatore:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps ingegnere | 
| Verifica l'identità dell'indirizzo e-mail. | Quando hai implementato il piano Terraform, Terraform ha creato un indirizzo e-mail per ogni account consumer in Amazon SES. Prima di poter inviare notifiche a quell'indirizzo e-mail, devi verificare l'indirizzo e-mail. Per istruzioni, consulta [Verifica dell'identità di un indirizzo e-mail](https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#just-verify-email-proc) nella documentazione di Amazon SES. | Informazioni generali su AWS | 

### Convalida la distribuzione delle risorse
<a name="validate-resource-deployment"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Convalida la distribuzione nell'account creatore. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps ingegnere | 
| Convalida l'implementazione nell'account consumer. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps ingegnere | 

### Convalida il monitoraggio
<a name="validate-monitoring"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un'AMI nell'account del creatore. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps ingegnere | 
| Usa l'AMI nell'account del consumatore. | Nell'account consumer, utilizza l'AMI condivisa per creare un' EC2 istanza Amazon o un modello di avvio. Per istruzioni, consulta [Come posso avviare un' EC2 istanza Amazon da un'AMI personalizzata](https://repost.aws/knowledge-center/launch-instance-custom-ami) (AWS re:POST Knowledge Center) o [Creare un modello di avvio per un gruppo di Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html) (documentazione di Amazon Auto EC2 Scaling). | DevOps ingegnere | 
| Convalida il monitoraggio e gli avvisi. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps ingegnere | 

### (Facoltativo) Interrompi il monitoraggio condiviso AMIs
<a name="optional-stop-monitoring-shared-amis"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Eliminare le risorse. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | DevOps ingegnere | 

## risoluzione dei problemi
<a name="monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| Non ho ricevuto un avviso via e-mail. | Potrebbero esserci diversi motivi per cui l'e-mail di Amazon SES non è stata inviata. Verifica quanto segue:[See the AWS documentation website for more details](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/monitor-use-of-a-shared-amazon-machine-image-across-multiple-aws-accounts.html) | 

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

**AWS documentazione**
+ [Creazione di funzioni Lambda con Python](https://docs.aws.amazon.com/lambda/latest/dg/lambda-python.html) (documentazione Lambda)
+ [Creare un AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-ami.html) ( EC2 documentazione Amazon)
+ [Condividi un'AMI con specifiche Account AWS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/sharingamis-explicit.html) ( EC2 documentazione Amazon)
+ [Annulla la registrazione dell'AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/deregister-ami.html) (documentazione Amazon EC2 )

**Documentazione Terraform**
+ [Installa Terraform](https://learn.hashicorp.com/tutorials/terraform/install-cli)
+ [Configurazione del backend Terraform](https://www.terraform.io/language/settings/backends/configuration)
+ [Fornitore AWS Terraform](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)
+ [Scarica il file binario di Terraform](https://developer.hashicorp.com/terraform/install)