Monitora le modifiche ai tag con flussi di lavoro serverless e Amazon EventBridge - Risorse per l'etichettatura AWS

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 le modifiche ai tag con flussi di lavoro serverless e Amazon EventBridge

Amazon EventBridge supporta la modifica dei tag sulle AWS risorse. Usando questo EventBridge tipo, puoi creare EventBridge regole per abbinare le modifiche ai tag e indirizzare gli eventi verso uno o più obiettivi. Ad esempio, un target potrebbe essere una AWS Lambda funzione per richiamare flussi di lavoro automatizzati. Questo argomento fornisce un tutorial sull'utilizzo di Lambda per creare una soluzione serverless conveniente per elaborare in modo sicuro le modifiche ai tag sulle risorse. AWS

Le modifiche ai tag generano eventi EventBridge

EventBridge offre un flusso quasi in tempo reale di eventi di sistema che descrivono i cambiamenti nelle AWS risorse. Molte AWS risorse supportano i tag, che sono attributi personalizzati e definiti dall'utente per organizzare e classificare AWS facilmente le risorse. I casi d'uso più comuni dei tag sono l'allocazione dei costi, la categorizzazione, il controllo degli accessi, la sicurezza e l'automazione.

Con EventBridge, puoi monitorare le modifiche ai tag e tenere traccia dello stato dei tag sulle risorse. AWS In precedenza, per ottenere funzionalità simili, avresti potuto eseguire continuamente il polling delle API e orchestrare più chiamate. Ora, qualsiasi modifica a un tag, incluse le API dei singoli servizi, Tag Editor e l'API di tagging, avvierà la modifica del tag in base all'evento di risorsa. L'esempio seguente mostra un EventBridge evento tipico richiesto da una modifica del tag. Mostra le chiavi dei tag nuove, aggiornate o eliminate e i valori associati.

{ "version": "0", "id": "bddcf1d6-0251-35a1-aab0-adc1fb47c11c", "detail-type": "Tag Change on Resource", "source": "aws.tag", "account": "123456789012", "time": "2018-09-18T20:41:38Z", "region": "us-east-1", "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-0000000aaaaaaaaaa" ], "detail": { "changed-tag-keys": [ "a-new-key", "an-updated-key", "a-deleted-key" ], "tags": { "a-new-key": "tag-value-on-new-key-just-added", "an-updated-key": "tag-value-was-just-changed", "an-unchanged-key": "tag-value-still-the-same" }, "service": "ec2", "resource-type": "instance", "version": 3, } }

Tutti EventBridge gli eventi hanno gli stessi campi di primo livello:

  • versione: per impostazione predefinita, questo valore è impostato su 0 (zero) in tutti gli eventi.

  • id — Viene generato un valore univoco per ogni evento. Questo può essere utile per tracciare gli eventi man mano che passano dalle regole alle destinazioni e vengono elaborati.

  • detail-type: identifica, in combinazione con il source campo, i campi e i valori che appaiono nel campo di dettaglio.

  • source: identifica il servizio che è stato l'origine dell'evento. La fonte per le modifiche ai tag èaws.tag.

  • time: il timestamp dell'evento.

  • regione: identifica il Regione AWS luogo di origine dell'evento.

  • risorse: questo array JSON contiene Amazon Resource Names (ARN) che identificano le risorse coinvolte nell'evento. Questa è la risorsa in cui i tag sono stati modificati.

  • dettaglio — Un oggetto JSON, il cui contenuto è diverso a seconda del tipo di evento. Per la modifica dei tag sulla risorsa, sono inclusi i seguenti campi dettagliati:

    • changed-tag-keys— Le chiavi dei tag che sono state modificate da questo evento.

    • servizio: il servizio a cui appartiene la risorsa. In questo esempio, il servizio è ec2 Amazon EC2.

    • resource-type: il tipo di risorsa del servizio. In questo esempio, si tratta di un'istanza Amazon EC2.

    • version: la versione del set di tag. La versione inizia da 1 e aumenta quando i tag vengono modificati. È possibile utilizzare la versione per verificare l'ordine degli eventi di modifica dei tag.

    • tags: i tag allegati alla risorsa dopo la modifica.

Per ulteriori informazioni, consulta i modelli di EventBridge eventi di Amazon nella Amazon EventBridge User Guide.

Utilizzando EventBridge, puoi creare regole che corrispondono a modelli di eventi specifici in base ai diversi campi. Dimostriamo come farlo nel tutorial. Inoltre, mostriamo come un'istanza Amazon EC2 può essere interrotta automaticamente se un tag specificato non è associato all'istanza. Utilizziamo i EventBridge campi per creare un pattern che corrisponda agli eventi dei tag per l'istanza che avvia una funzione Lambda.

Lambda e serverless

AWS Lambda segue il paradigma serverless per eseguire codice nel cloud. Esegui il codice solo quando è necessario, senza pensare ai server. Paghi solo per il tempo di elaborazione esatto che utilizzi. Anche se si chiama serverless, ciò non significa che non ci siano server. In questo contesto, la modalità serverless significa che non è necessario fornire, configurare o gestire i server utilizzati per eseguire il codice. AWS fa tutto questo per te, così puoi concentrarti sul codice. Per ulteriori informazioni su Lambda, consulta la panoramica del AWS Lambda prodotto.

Tutorial: arresto automatico delle istanze Amazon EC2 prive dei tag obbligatori

Man mano che il tuo pool di AWS risorse e Account AWS quello che gestisci cresce, puoi utilizzare i tag per semplificare la categorizzazione delle risorse. I tag vengono comunemente utilizzati per casi d'uso critici come l'allocazione dei costi e la sicurezza. Per gestire efficacemente AWS le risorse, è necessario etichettarle in modo coerente. Spesso, quando una risorsa viene fornita, riceve tutti i tag appropriati. Tuttavia, un processo successivo può comportare una modifica dei tag che comporta un allontanamento dalla politica aziendale in materia di tag. Monitorando le modifiche ai tag, puoi individuare eventuali variazioni dei tag e rispondere immediatamente. In questo modo avrete maggiore fiducia nel fatto che i processi che dipendono dalla corretta categorizzazione delle risorse produrranno i risultati desiderati.

L'esempio seguente mostra come monitorare le modifiche ai tag sulle istanze Amazon EC2 per verificare che un'istanza specificata continui ad avere i tag richiesti. Se i tag dell'istanza cambiano e l'istanza non ha più i tag richiesti, viene richiamata una funzione Lambda per chiudere automaticamente l'istanza. Perché vorresti farlo? Garantisce che tutte le risorse siano etichettate in base alla politica aziendale in materia di tag, per un'efficace allocazione dei costi o per poter contare su una sicurezza basata sul controllo degli accessi basato sugli attributi (ABAC).

Importante

Ti consigliamo vivamente di eseguire questo tutorial in un account non di produzione in cui non sia possibile chiudere inavvertitamente istanze importanti.

Il codice di esempio in questo tutorial limita intenzionalmente l'impatto di questo scenario solo alle istanze presenti in un elenco di ID di istanza. È necessario aggiornare l'elenco con gli ID delle istanze che si desidera chiudere per il test. Questo aiuta a evitare che tu possa chiudere accidentalmente tutte le istanze in una regione del tuo Account AWS.

Dopo il test, assicurati che tutte le istanze siano etichettate in base alla strategia di tagging della tua azienda. Quindi, puoi rimuovere il codice che limita la funzione ai soli ID di istanza presenti nell'elenco.

Questo esempio utilizza JavaScript la versione 16.x diNode.js. L'esempio utilizza l' Account AWS ID di esempio 123456789012 e gli Regione AWS Stati Uniti orientali (Virginia settentrionale) (). us-east-1 Sostituiscili con l'ID e la regione del tuo account di prova.

Nota

Se la tua console utilizza una regione diversa come impostazione predefinita, assicurati di cambiare la regione che stai usando in questo tutorial ogni volta che cambi console. Una causa comune del fallimento di questo tutorial è che l'istanza e la funzione si trovano in due regioni diverse.

Se utilizzi una regione diversa da quellaus-east-1, assicurati di modificare tutti i riferimenti nei seguenti esempi di codice nella regione scelta.

Fase 1: Creazione della funzione Lambda

Creazione della funzione Lambda
  1. Apri la console di gestione di AWS Lambda.

  2. Scegli Crea funzione, quindi scegli Autore da zero.

  3. Per Function name (Nome funzione), immettere AutoEC2Termination.

  4. Per Runtime scegli Node.js 16.x.

  5. Mantieni tutti gli altri campi ai valori predefiniti e scegli Crea funzione.

  6. Nella scheda Codice della pagina dei AutoEC2Termination dettagli, apri il file index.js per visualizzarne il codice.

    • Se è aperta una scheda con index.js, puoi scegliere la casella di modifica in quella scheda per modificarne il codice.

    • Se una scheda con index.js non è aperta, fai clic con il pulsante destro del mouse sul file index.js nella cartella AutoEC2Terminator nel riquadro di navigazione. Quindi scegli Apri.

  7. Nella scheda index.js, incolla il codice seguente nella casella dell'editor, sostituendo tutto ciò che è già presente.

    Sostituisci il valore RegionToMonitor con la regione in cui desideri eseguire questa funzione.

    // Set the following line to specify which Region's instances you want to monitor // Only instances in this Region are succesfully stopped on a match const RegionToMonitor = "us-east-1" // Specify the instance ARNs to check. // This limits the function for safety to avoid the tutorial shutting down all instances in account // The first ARN is a "dummy" that matches the test event you create in Step 3. // Replace the second ARN with one that matches a real instance that you want to monitor and that you can // safely stop const InstanceList = [ "i-0000000aaaaaaaaaa", "i-05db4466d02744f07" ]; // The tag key name and value that marks a "valid" instance. Instances in the previous list that // do NOT have the following tag key and value are stopped by this function const ValidKeyName = "valid-key"; const ValidKeyValue = "valid-value"; // Load and configure the AWS SDK const AWS = require('aws-sdk'); // Set the AWS Region AWS.config.update({region: RegionToMonitor}); // Create EC2 service object. const ec2 = new AWS.EC2({apiVersion: '2016-11-15'}); exports.handler = (event, context, callback) => { // Retrieve the details of the reported event. var detail = event.detail; var tags = detail["tags"]; var service = detail["service"]; var resourceType = detail["resource-type"]; var resource = event.resources[0]; var resourceSplit = resource.split("/"); var instanceId = resourceSplit[resourceSplit.length - 1]; // If this event is not for an EC2 resource, then do nothing. if (!(service === "ec2")) { console.log("Event not for correct service -- no action (", service, ")" ); return; } // If this event is not about an instance, then do nothing. if (!(resourceType === "instance")) { console.log("Event not for correct resource type -- no action (", resourceType, ")" ); return; } // CAUTION - Removing the following 'if' statement causes the function to run against // every EC2 instance in the specified Region in the calling Account AWS. // If you do this and an instance is not tagged with the approved tag key // and value, this function stops that instance. // If this event is not for the ARN of an instance in our include list, then do nothing. if (InstanceList.indexOf(instanceId)<0) { console.log("Event not for one of the monitored instances -- no action (", resource, ")"); return; } console.log("Tags changed on monitored EC2 instance (",instanceId,")"); // Check attached tags for expected tag key and value pair if ( tags.hasOwnProperty(ValidKeyName) && tags[ValidKeyName] == "valid-value"){ // Required tags ARE present console.log("The instance has the required tag key and value -- no action"); callback(null, "no action"); return; } // Required tags NOT present console.log("This instance is missing the required tag key or value -- attempting to stop the instance"); var params = { InstanceIds: [instanceId], DryRun: true }; // call EC2 to stop the selected instances ec2.stopInstances(params, function(err, data) { if (err && err.code === 'DryRunOperation') { // dryrun succeeded, so proceed with "real" stop operation params.DryRun = false; ec2.stopInstances(params, function(err, data) { if (err) { console.log("Failed to stop instance"); callback(err, "fail"); } else if (data) { console.log("Successfully stopped instance", data.StoppingInstances); callback(null, "Success"); } }); } else { console.log("Dryrun attempt failed"); callback(err); } }); };
  8. Scegli Deploy per salvare le modifiche e rendere attiva la nuova versione della funzione.

Questa funzione Lambda controlla i tag di un'istanza Amazon EC2, come riportato dall'evento di modifica del tag in. EventBridge In questo esempio, se all'istanza dell'evento manca la chiave di tag richiesta valid-key o se il tag non ha il valorevalid-value, la funzione tenta di fermare l'istanza. È possibile modificare questo controllo logico o i requisiti dei tag per i propri casi d'uso specifici.

Tieni aperta la finestra della console Lambda nel browser.

Fase 2: Configura le autorizzazioni IAM richieste

Prima che la funzione possa essere eseguita correttamente, è necessario concedere alla funzione l'autorizzazione a interrompere un'istanza EC2. Il ruolo AWS fornito lambda_basic_executionnon dispone di tale autorizzazione. In questo tutorial, modifichi la politica di autorizzazione IAM predefinita allegata al ruolo di esecuzione della funzione denominatoAutoEC2Termination-role-uniqueid. L'autorizzazione aggiuntiva minima richiesta per questo tutorial èec2:StopInstances.

Per ulteriori informazioni sulla creazione di policy IAM specifiche per Amazon EC2, consulta Amazon EC2: consente l'avvio o l'arresto di un'istanza EC2 e la modifica di un gruppo di sicurezza, a livello di codice e nella console nella IAM User Guide.

Per creare una policy di autorizzazione IAM e collegarla al ruolo di esecuzione della funzione Lambda
  1. In un'altra scheda o finestra del browser, apri la pagina Ruoli della console IAM.

  2. Inizia a digitare il nome del ruolo eAutoEC2Termination, quando appare nell'elenco, scegli il nome del ruolo.

  3. Nella pagina di riepilogo del ruolo, scegli la scheda Autorizzazioni e scegli il nome dell'unica politica già allegata.

  4. Nella pagina di riepilogo della politica, scegli Modifica politica.

  5. Nella scheda Visual Editor, scegli Aggiungi autorizzazioni aggiuntive.

  6. Per Service (Servizio ), scegli EC2.

  7. Per Azioni, scegli StopInstances. Puoi digitare Stop nella barra di ricerca e quindi scegliere StopInstances quando visualizzare.

  8. Per Risorse, scegli Tutte le risorse, scegli Rivedi politica, quindi scegli Salva modifiche.

    Ciò crea automaticamente una nuova versione della politica e imposta quella versione come predefinita.

    La politica finale dovrebbe essere simile all'esempio seguente.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2:StopInstances", "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "logs:CreateLogGroup", "Resource": "arn:aws:logs:us-east-1:123456789012:*" }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:us-east-1:123456789012:log-group:/aws/lambda/AutoEC2Termination:*" } ] }

Fase 3. Esegui un test preliminare della tua funzione Lambda

In questo passaggio, invii un evento di test alla tua funzione. La funzionalità di test Lambda funziona inviando un evento di test fornito manualmente. La funzione elabora l'evento di test come se l'evento provenisse da. EventBridge È possibile definire più eventi di test con valori diversi per esercitare tutte le diverse parti del codice. In questa fase, invii un evento di test che indica che i tag di un'istanza Amazon EC2 sono cambiati e che i nuovi tag non includono la chiave e il valore del tag richiesti.

Per testare la tua funzione Lambda
  1. Torna alla finestra o alla scheda con la console Lambda e apri la scheda Test per la tua funzione AutoEC2Termination.

  2. Scegli Crea nuovo evento.

  3. Per Event name (Nome evento) immettere SampleBadTagChangeEvent.

  4. Nell'Event JSON, sostituisci il testo con l'evento di esempio mostrato nel seguente testo di esempio. Non è necessario modificare gli account, la regione o l'ID dell'istanza affinché questo evento di test funzioni correttamente.

    { "version": "0", "id": "bddcf1d6-0251-35a1-aab0-adc1fb47c11c", "detail-type": "Tag Change on Resource", "source": "aws.tag", "account": "123456789012", "time": "2018-09-18T20:41:38Z", "region": "us-east-1", "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-0000000aaaaaaaaaa" ], "detail": { "changed-tag-keys": [ "valid-key" ], "tags": { "valid-key": "NOT-valid-value" }, "service": "ec2", "resource-type": "instance", "version": 3 } }
  5. Scegli Save (Salva), quindi Test .

    Il test sembra fallire, ma va bene.

    Dovresti vedere il seguente errore nella scheda Risultati dell'esecuzione in Risposta.

    { "errorType": "InvalidInstanceID.NotFound", "errorMessage": "The instance ID 'i-0000000aaaaaaaaaa' does not exist", ... }

    L'errore si verifica perché l'istanza specificata nell'evento di test non esiste.

    Le informazioni nella scheda Risultati di esecuzione, nella sezione Function Logs, dimostrano che la funzione Lambda ha tentato con successo di arrestare un'istanza EC2. Tuttavia, non è riuscita perché inizialmente il codice tenta un'DryRunoperazione per arrestare l'istanza, il che indica che l'ID dell'istanza non era valido.

    START RequestId: 390c1f8d-0d9b-4b44-b087-8de64479ab44 Version: $LATEST 2022-11-30T20:17:30.427Z 390c1f8d-0d9b-4b44-b087-8de64479ab44 INFO Tags changed on monitored EC2 instance ( i-0000000aaaaaaaaaa ) 2022-11-30T20:17:30.427Z 390c1f8d-0d9b-4b44-b087-8de64479ab44 INFO This instance is missing the required tag key or value -- attempting to stop the instance 2022-11-30T20:17:31.206Z 390c1f8d-0d9b-4b44-b087-8de64479ab44 INFO Dryrun attempt failed 2022-11-30T20:17:31.207Z 390c1f8d-0d9b-4b44-b087-8de64479ab44 ERROR Invoke Error {"errorType":"InvalidInstanceID.NotFound","errorMessage":"The instance ID 'i-0000000aaaaaaaaaa' does not exist","code":"InvalidInstanceID.NotFound","message":"The instance ID 'i-0000000aaaaaaaaaa' does not exist","time":"2022-11-30T20:17:31.205Z","requestId":"a5192c3b-142d-4cec-bdbc-685a9b7c7abf","statusCode":400,"retryable":false,"retryDelay":36.87870631147607,"stack":["InvalidInstanceID.NotFound: The instance ID 'i-0000000aaaaaaaaaa' does not exist"," at Request.extractError (/var/runtime/node_modules/aws-sdk/lib/services/ec2.js:50:35)"," at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:106:20)"," at Request.emit (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:78:10)"," at Request.emit (/var/runtime/node_modules/aws-sdk/lib/request.js:686:14)"," at Request.transition (/var/runtime/node_modules/aws-sdk/lib/request.js:22:10)"," at AcceptorStateMachine.runTo (/var/runtime/node_modules/aws-sdk/lib/state_machine.js:14:12)"," at /var/runtime/node_modules/aws-sdk/lib/state_machine.js:26:10"," at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:38:9)"," at Request.<anonymous> (/var/runtime/node_modules/aws-sdk/lib/request.js:688:12)"," at Request.callListeners (/var/runtime/node_modules/aws-sdk/lib/sequential_executor.js:116:18)"]} END RequestId: 390c1f8d-0d9b-4b44-b087-8de64479ab44
  6. Per dimostrare che il codice non tenta di interrompere l'istanza quando viene utilizzato il tag corretto, puoi creare e inviare un altro evento di test.

    Scegli la scheda Test sopra Code source. La console mostra l'evento SampleBadTagChangeEventdi test esistente.

  7. Scegli Crea nuovo evento.

  8. In Event Name (Nome evento), digitare SampleGoodTagChangeEvent.

  9. Nella riga 17, elimina NOT- per modificare il valore invalid-value.

  10. Nella parte superiore della finestra dell'evento Test, scegli Salva, quindi scegli Test.

    L'output mostra quanto segue, a dimostrazione del fatto che la funzione riconosce il tag valido e non tenta di chiudere l'istanza.

    START RequestId: 53631a49-2b54-42fe-bf61-85b9e91e86c4 Version: $LATEST 2022-12-01T23:24:12.244Z 53631a49-2b54-42fe-bf61-85b9e91e86c4 INFO Tags changed on monitored EC2 instance ( i-0000000aaaaaaaaaa ) 2022-12-01T23:24:12.244Z 53631a49-2b54-42fe-bf61-85b9e91e86c4 INFO The instance has the required tag key and value -- no action END RequestId: 53631a49-2b54-42fe-bf61-85b9e91e86c4

    Tieni la console Lambda aperta nel browser.

Fase 4. Crea la EventBridge regola che avvia la funzione

Ora puoi creare una EventBridge regola che corrisponda all'evento e punti alla tua funzione Lambda.

Per creare la regola EventBridge
  1. In un'altra scheda o finestra del browser, apri la EventBridge console nella pagina Crea regola.

  2. Per Nome, immetteteec2-instance-rule, quindi scegliete Avanti.

  3. Scorri verso il basso fino a Metodo di creazione e scegli Modello personalizzato (editor JSON).

  4. Nella casella di modifica, incolla il seguente testo del pattern, quindi scegli Avanti.

    { "source": [ "aws.tag" ], "detail-type": [ "Tag Change on Resource" ], "detail": { "service": [ "ec2" ], "resource-type": [ "instance" ] } }

    Questa regola corrisponde Tag Change on Resource agli eventi per le istanze Amazon EC2 e richiama ciò che specifichi come Target nel passaggio successivo.

  5. Quindi, aggiungi la tua funzione Lambda come destinazione. Nella casella Target 1, in Seleziona una destinazione, scegli la funzione Lambda.

  6. In Funzione, scegliete la funzione AutoEC2Termination creata in precedenza, quindi scegliete Avanti.

  7. Nella pagina Configura tag, scegli Avanti. Quindi, nella pagina Rivedi e crea, scegli Crea regola. Ciò concede inoltre automaticamente il permesso di EventBridge richiamare la funzione Lambda specificata.

Fase 5. Prova la soluzione completa

Puoi testare il risultato finale creando un'istanza EC2 e osservando cosa succede quando ne modifichi i tag.

Per testare la soluzione di monitoraggio con un'istanza reale
  1. Apri la console Amazon EC2 nella pagina Istanze.

  2. Crea un'istanza Amazon EC2. Prima di avviarla, allega un tag con la chiave valid-key e il valorevalid-value. Per informazioni su come creare e avviare un'istanza, consulta la Fase 1: Avvio di un'istanza nella Amazon EC2 User Guide. Nella procedura Per avviare un'istanza, nel passaggio 3, in cui inserisci il tag Name, scegli anche Aggiungi tag aggiuntivi, scegli Aggiungi tag, quindi inserisci la chiave valid-key e il valore divalid-value. Puoi procedere senza una key pair se questa istanza è destinata esclusivamente agli scopi di questo tutorial e prevedi di eliminarla dopo averla completata. Torna a questo tutorial quando raggiungi la fine del passaggio 1; non è necessario eseguire il passaggio 2: Connect alla tua istanza.

  3. Copia il file InstanceIddalla console.

  4. Passa dalla console Amazon EC2 alla console Lambda. Scegli la tua funzione AutoEC2Termination, scegli la scheda Codice, quindi scegli la scheda index.js per modificare il codice.

  5. Modifica la seconda voce InstanceList incollando il valore che hai copiato dalla console Amazon EC2. Assicurati che il RegionToMonitor valore corrisponda alla regione che contiene l'istanza che hai incollato.

  6. Scegli Deploy per rendere attive le modifiche. La funzione è ora pronta per essere attivata modificando i tag in quell'istanza nella regione specificata.

  7. Passa dalla console Lambda alla console Amazon EC2.

  8. Modifica i tag allegati all'istanza eliminando il tag valid-key o modificando il valore di quella chiave.

    Nota

    Per informazioni su come modificare i tag su un'istanza Amazon EC2 in esecuzione, consulta Aggiungere ed eliminare tag su una singola risorsa nella Amazon EC2 User Guide.

  9. Attendi qualche secondo, quindi aggiorna la console. L'istanza dovrebbe cambiare lo stato dell'istanza in Arresto e quindi in Arrestato.

  10. Passa dalla console Amazon EC2 alla console Lambda con la tua funzione e scegli la scheda Monitor.

  11. Scegli la scheda Registri e, nella tabella Richiamazioni recenti, scegli la voce più recente nella colonna. LogStream

    La CloudWatch console Amazon si apre sulla pagina Log events per l'ultima chiamata della funzione Lambda. L'ultima voce dovrebbe essere simile all'esempio seguente.

    2022-11-30T12:03:57.544-08:00 START RequestId: b5befd18-2c41-43c8-a320-3a4b2317cdac Version: $LATEST 2022-11-30T12:03:57.548-08:00 2022-11-30T20:03:57.548Z b5befd18-2c41-43c8-a320-3a4b2317cdac INFO Tags changed on monitored EC2 instance ( arn:aws:ec2:us-west-2:123456789012:instance/i-1234567890abcdef0 ) 2022-11-30T12:03:57.548-08:00 2022-11-30T20:03:57.548Z b5befd18-2c41-43c8-a320-3a4b2317cdac INFO This instance is missing the required tag key or value -- attempting to stop the instance 2022-11-30T12:03:58.488-08:00 2022-11-30T20:03:58.488Z b5befd18-2c41-43c8-a320-3a4b2317cdac INFO Successfully stopped instance [ { CurrentState: { Code: 64, Name: 'stopping' }, InstanceId: 'i-1234567890abcdef0', PreviousState: { Code: 16, Name: 'running' } } ] 2022-11-30T12:03:58.546-08:00 END RequestId: b5befd18-2c41-43c8-a320-3a4b2317cdac

Riepilogo

Questo tutorial ha dimostrato come creare una EventBridge regola da abbinare a una modifica di tag su un evento di risorse per le istanze Amazon EC2. La regola indicava una funzione Lambda che spegne automaticamente l'istanza se non ha il tag richiesto.

Il EventBridge supporto di Amazon per la modifica dei tag sulle AWS risorse offre la possibilità di creare un'automazione basata sugli eventi per molte risorse. Servizi AWS La combinazione di questa funzionalità AWS Lambda offre strumenti per creare soluzioni serverless che accedono alle AWS risorse in modo sicuro, scalabili su richiesta e sono convenienti.

Altri possibili casi d'uso dell' tag-change-on-resource EventBridge evento includono:

  • Lancia un avviso se qualcuno accede alla tua risorsa da un indirizzo IP insolito: utilizza un tag per memorizzare l'indirizzo IP di origine di ogni visitatore che accede alla tua risorsa. Le modifiche al tag generano un CloudWatch evento. È possibile utilizzare tale evento per confrontare l'indirizzo IP di origine con un elenco di indirizzi IP validi e attivare un'e-mail di avviso se l'indirizzo IP di origine non è valido.

  • Monitora se ci sono modifiche al controllo di accesso basato su tag per una risorsa: se hai impostato l'accesso a una risorsa utilizzando il controllo di accesso basato su attributi (tag) (ABAC), puoi utilizzare EventBridge gli eventi generati da qualsiasi modifica al tag per richiedere un controllo da parte del team di sicurezza.