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
Creato da Naveen Suthar (AWS) e Sandeep Gawande (AWS)
Archivio di cross-account-ami-auditing codice | Ambiente: PoC o pilota | Tecnologie: gestione e governance; Senza server DevOps; Operazioni |
Servizi AWS: Amazon DynamoDB; AWS Lambda; Amazon EventBridge |
Riepilogo
Amazon Machine Images (AMI) vengono utilizzate per creare istanze Amazon Elastic Compute Cloud (Amazon EC2) nel tuo ambiente Amazon Web Services (AWS). Puoi creare AMI in un account AWS separato e centralizzato, chiamato account creator in questo modello. Puoi quindi condividere l'AMI tra più account AWS che si trovano nella stessa regione AWS, che in questo modello vengono chiamati account consumer. La gestione delle AMI da un singolo account offre scalabilità e semplifica la governance. Negli account consumer, puoi fare riferimento all'AMI condivisa nei modelli di avvio di Amazon EC2 Auto Scaling e nei gruppi di nodi Amazon Elastic Kubernetes Service (Amazon EKS).
Quando un'AMI condivisa è obsoleta, cancellatao non condivisa, i servizi AWS che fanno riferimento all'AMI negli account consumer non possono utilizzare questa AMI per lanciare 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 si verificano eventi di condivisione e utilizzo dell'AMI in più 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 servizi AWS serverless, come Amazon, Amazon DynamoDB EventBridge, AWS Lambda 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
Prerequisiti
Due o più account AWS attivi: un account Creator e uno o più account consumer
Una o più AMI condivise dall'account del creatore a un account consumer
Terraform CLI,
installata (documentazione Terraform) Terraform AWS Provider, configurato
(documentazione Terraform) (Facoltativo, ma consigliato) Backend Terraform, configurato
(documentazione Terraform) Git, installato
Limitazioni
Questo modello monitora le AMI che sono state condivise con account specifici utilizzando l'ID dell'account. Questo modello non monitora le AMI che sono state condivise con un'organizzazione utilizzando l'ID dell'organizzazione.
Le AMI possono essere condivise solo con account che si trovano all'interno della stessa regione AWS. Questo modello monitora le AMI all'interno di un'unica regione di destinazione. Per monitorare l'uso delle AMI in più regioni, è necessario implementare questa soluzione in ciascuna regione.
Questo modello non monitora le AMI condivise prima dell'implementazione di questa soluzione. Se desideri monitorare le AMI condivise in precedenza, 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
Architettura
Stack tecnologico Target
Le seguenti risorse vengono fornite come IaC tramite Terraform:
Tabelle Amazon DynamoDB
EventBridge Regole di Amazon
Ruolo di AWS Identity and Access Management (IAM)
Funzioni AWS Lambda
Amazon SES
Architettura Target
![Architettura per monitorare l'uso condiviso dell'AMI e avvisare gli utenti se l'AMI non è condivisa o non è registrata](images/pattern-img/2d709249-0c68-47d7-be5d-46e8a73071ed/images/8c48c4dd-d681-4c32-9ba8-8f5ad2d66f64.png)
Il diagramma mostra il flusso di lavoro seguente:
Un'AMI nell'account Creator è condivisa con un account consumer nella stessa regione AWS.
Quando l'AMI è condivisa, una EventBridge regola Amazon nell'account creatore acquisisce l'
ModifyImageAttribute
evento e avvia una funzione Lambda nell'account creatore.La funzione Lambda archivia i dati relativi all'AMI in una tabella DynamoDB nell'account creatore.
Quando un servizio AWS nell'account consumer utilizza l'AMI condivisa per avviare un'istanza Amazon EC2 o quando l'AMI condivisa è associata a un modello di lancio, una EventBridge regola nell'account consumer rileva l'uso dell'AMI condivisa.
La EventBridge regola avvia una funzione Lambda nell'account consumer. La funzione Lambda; svolge le operazioni seguenti:
La funzione Lambda aggiorna i dati relativi all'AMI in una tabella DynamoDB nell'account consumer.
La funzione Lambda assume un ruolo IAM nell'account creatore e aggiorna la tabella DynamoDB 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.
L'AMI gestita centralmente nell'account del creatore è obsoleta, cancellata o non è condivisa.
La EventBridge regola nell'account creatore acquisisce l'
DeregisterImage
eventoModifyImageAttribute
or con l'remove
azione e avvia la funzione Lambda.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 sono presenti ID di istanza o ID modello di avvio associati all'AMI, il processo è completo.Se nella
Mapping
tabella sono associati ID di istanza o ID modello di avvio all'AMI, la funzione Lambda utilizza Amazon SES per inviare una notifica e-mail agli abbonati configurati.
Strumenti
Servizi AWS
Amazon DynamoDB è un servizio di database NoSQL interamente gestito che offre prestazioni elevate, prevedibili e scalabili.
Amazon EventBridge è 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, funzioni AWS Lambda, endpoint di invocazione HTTP che utilizzano destinazioni API o bus di eventi in altri account AWS.
AWS Identity and Access Management (IAM) ti aiuta a gestire in modo sicuro l'accesso alle tue risorse AWS controllando chi è autenticato e autorizzato a utilizzarle.
AWS Lambda è un servizio di elaborazione che ti aiuta a eseguire codice senza dover fornire o gestire server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di calcolo che utilizzi.
Amazon Simple Email Service (Amazon SES) 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
è uno strumento open source di infrastruttura come codice (IaC) che ti aiuta a utilizzare il codice per fornire e gestire l'infrastruttura e le risorse cloud. Python
è un linguaggio di programmazione per computer generico.
Deposito di codice
Il codice per questo pattern è disponibile nel repository GitHub cross-account-ami-monitoring-terraform-samples
Best practice
Segui le best practice per lavorare con le funzioni di AWS Lambda.
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 best practice relative alla concessione dei privilegi minimi e alla sicurezza nella documentazione IAM.
Configura il monitoraggio e gli avvisi per le funzioni di AWS Lambda. Per ulteriori informazioni, consulta Monitoraggio e risoluzione dei problemi delle funzioni Lambda.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea i profili denominati della CLI AWS. | Per l'account creatore e ogni account consumer, crea un profilo denominato AWS Command Line Interface (AWS CLI). Per istruzioni, consulta Configurare l'AWS CLI nell'AWS | DevOps ingegnere |
Clonare il repository. | Inserire il seguente comando. Questo clona il repository cross-account-ami-monitoring-terraform-samples utilizzando SSH
| DevOps ingegnere |
Aggiorna il file provider.tf. |
Per ulteriori informazioni sulla configurazione dei provider, consulta Configurazioni di più provider | DevOps ingegnere |
Aggiorna il file terraform.tfvars. |
| 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.
| DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Distribuire la soluzione. | Nella CLI Terraform, inserisci i seguenti comandi per distribuire le risorse AWS negli account creator e consumer:
| 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 nella documentazione di Amazon SES. | Informazioni generali su AWS |
Attività | Descrizione | Competenze richieste |
---|---|---|
Convalida la distribuzione nell'account creatore. |
| DevOps ingegnere |
Convalida l'implementazione nell'account consumer. |
| DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un'AMI nell'account del creatore. |
| DevOps ingegnere |
Usa l'AMI nell'account del consumatore. | Nell'account consumer, utilizza l'AMI condivisa per creare un'istanza EC2 o un modello di avvio. Per istruzioni, consulta Come avviare un'istanza EC2 da un'AMI personalizzata | DevOps ingegnere |
Convalida il monitoraggio e gli avvisi. |
| DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Eliminare le risorse. |
| DevOps ingegnere |
Risoluzione dei problemi
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:
|
Risorse correlate
Documentazione AWS
Creazione di funzioni Lambda con Python (documentazione Lambda)
Creare un'AMI (documentazione Amazon EC2)
Condividi un'AMI con account AWS specifici (documentazione Amazon EC2)
Annulla la registrazione dell'AMI (documentazione Amazon EC2)
Documentazione Terraform