Come posso utilizzare il Pianificatore EventBridge per arrestare e avviare istanze Amazon EC2 a intervalli regolari?
Desidero utilizzare il Pianificatore Amazon EventBridge per arrestare e avviare automaticamente le mie istanze Amazon Elastic Compute Cloud (Amazon EC2).
Breve descrizione
Per arrestare e avviare automaticamente le istanze EC2, utilizza il Pianificatore EventBridge per chiamare direttamente le API Amazon EC2 StartInstances e ** StopInstances**. In alternativa, puoi utilizzare il pianificatore per richiamare una funzione AWS Lambda per arrestare e avviare l'istanza. È consigliabile utilizzare le API di Amazon EC2 come destinazione del pianificatore per evitare la necessità di creare funzioni Lambda aggiuntive.
Per una soluzione più avanzata, usa il Pianificatore di istanze su AWS.
Risoluzione
Prerequisito: ottieni gli ID delle istanze EC2 che desideri arrestare e avviare.
Usa il pianificatore per chiamare direttamente le API di Amazon EC2
Crea una policy e un ruolo IAM per il Pianificatore EventBridge
Completa i passaggi seguenti:
- Usa l'editor di policy JSON per creare una policy AWS Identity and Access Management (IAM) che consenta al Pianificatore EventBridge di interrompere e avviare la tua istanza.
Esempio di policy:
Nota: se utilizzi un volume Amazon Elastic Block Store (Amazon EBS) crittografato da una chiave del Servizio AWS di gestione delle chiavi (AWS KMS) gestita dal cliente, aggiungi kms:CreateGrant alla policy. Se la funzione Lambda non ha accesso alla chiave di crittografia, può solo arrestare ma non riavviare l'istanza. Per ulteriori informazioni, consulta Policy della chiave AWS KMS richiesta per l'uso con volumi crittografati.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:Start*", "ec2:Stop*" ], "Resource": "*" } ] } - Apri la console IAM.
- Scegli Ruoli e quindi Crea ruolo.
- Per Tipo di entità attendibile, scegli Policy di attendibilità personalizzata.
- Crea la seguente policy IAM:
Nota: Sostituisci AWS_ACCOUNT_ID con l'ID del tuo account AWS.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "scheduler.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "AWS_ACCOUNT_ID" } } } ] } - Scegli Avanti.
- Per le Policy di autorizzazione, seleziona la policy IAM che hai creato nel passaggio 1.
- Per Nome ruolo, inserisci un nome come EventBridge\ _Scheduler\ _Role.
- Scegli Crea ruolo.
Crea la pianificazione del Pianificatore EventBridge
Crea una pianificazione per l'API StopInstances e un'altra per l'API StartInstances. Configura le seguenti impostazioni quando crei la pianificazione:
- Per Target API, seleziona Tutte le API, quindi cerca ** Amazon EC2**.
- Seleziona **StopInstances ** o StartInstances, quindi inserisci gli ID delle istanze.
- Per Settings - optional (Impostazioni - facoltative), in Autorizzazioni, scegli Seleziona un ruolo esistente, quindi scegli il ruolo IAM che hai creato.
Usa il pianificatore per richiamare le funzioni Lambda
Crea una policy e un ruolo IAM per la funzione Lambda
Completa i passaggi seguenti:
- Usa l'editor di policy JSON per creare una policy IAM che consenta a Lambda di arrestare e avviare la tua istanza.
Esempio di policy:
Nota: se utilizzi un volume Amazon EBS crittografato con una chiave AWS KMS gestita dal cliente, aggiungi kms:CreateGrant alla policy. Se la funzione Lambda non ha accesso alla chiave di crittografia, può solo arrestare ma non riavviare l'istanza. Per ulteriori informazioni, consulta Policy della chiave AWS KMS richiesta per l'uso con volumi crittografati.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "ec2:Start*", "ec2:Stop*" ], "Resource": "*" } ] } - Crea un ruolo IAM per Lambda.
- Collega la policy IAM al ruolo IAM.
Crea funzioni Lambda per arrestare e avviare le istanze
Completa i passaggi seguenti:
- Apri la console Lambda.
- Scegli Crea funzione, quindi Crea da zero.
- In Informazioni di base, configura le impostazioni seguenti:
In Nome funzione inserisci un nome che descriva la funzione, come StopEC2Instances o StartEC2Instances.
Per Runtime, scegli Python 3.14.
In Autorizzazioni espandi la voce Modifica il ruolo di esecuzione predefinito.
In Ruolo di esecuzione scegli Utilizza un ruolo esistente.
In Ruolo esistente scegli il ruolo IAM che hai creato. - Scegli Crea funzione.
- Scegli la scheda Codice, quindi scegli la scheda lambda\ _funciton.py.
- Per Origine del codice, inserisci il codice seguente nell'editor di codice per configurare l'arresto dell'istanza:
Per configurare l'avvio dell'istanza, inserisci il codice seguente nell'editor di codice:import boto3 region = 'us-west-1' instances = ['i-12345acdb12345abcd', 'i-12345acdb12345abcd'] ec2 = boto3.client('ec2', region_name=region) def lambda_handler(event, context): ec2.stop_instances(InstanceIds=instances) print('stopped your instances: ' + str(instances))
Nota: sostituisci us-west-1 con la Regione AWS delle tue istanze e i-12345acdb12345abcd con gli ID delle tue istanze.import boto3 region = 'us-west-1' instances = ['i-12345acdb12345abcd', 'i-12345acdb12345abcd'] ec2 = boto3.client('ec2', region_name=region) def lambda_handler(event, context): ec2.start_instances(InstanceIds=instances) print('started your instances: ' + str(instances)) - Scegli Distribuisci.
- Scegli la scheda Configurazione, quindi Configurazione generale.
- Scegli Modifica.
- Per Timeout, seleziona 10 secondi, quindi scegli Salva.
Nota: se hai associato la funzione ad Amazon Virtual Private Cloud (Amazon VPC), verifica che la funzione possa raggiungere l'endpoint Amazon EC2 tramite Internet. Oppure, configura un endpoint di cloud privato virtuale (VPC) per Amazon EC2.
Testa le funzioni Lambda
Testa le funzioni Lambda per arresto istanza e avvio istanza.
Prima e dopo aver eseguito il test, controlla lo stato delle istanze per confermare che le funzioni vengano eseguite correttamente.
Per utilizzare AWS CloudTrail per confermare che la funzione Lambda ha interrotto o avviato l'istanza, completa i passaggi seguenti:
- Apri la console CloudTrail.
- Nel pannello di navigazione scegli Cronologia eventi.
- Nell'elenco a discesa Attributi di ricerca, scegli Nome evento.
- Nella barra di ricerca inserisci StopInstances per esaminare i risultati. Quindi, inserisci StartInstances.
Nota: se non ci sono risultati, la funzione Lambda non ha arrestato né avviato le istanze.
**Crea una pianificazione del Pianificatore EventBridge per eseguire le tue funzioni Lambda **
Crea una pianificazione per eseguire le tue funzioni Lambda. Per Seleziona destinazioni, seleziona Destinazioni modello, quindi scegli AWS Lambda Invoke. Usa le funzioni Lambda che hai creato.
- Argomenti
- Application IntegrationCompute
- Lingua
- Italiano
Video correlati


Contenuto pertinente
AWS UFFICIALEAggiornata 3 anni fa