Come posso utilizzare Instance Scheduler con CloudFormation per pianificare le istanze EC2?
Desidero utilizzare AWS Instance Scheduler con AWS CloudFormation per pianificare le istanze di Amazon Elastic Compute Cloud (Amazon EC2).
Risoluzione
Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Per automatizzare la distribuzione di AWS Instance Scheduler, utilizza i modelli di CloudFormation.
Nota: se utilizzi Instance Scheduler per le istanze Amazon EC2 con un Amazon Elastic Block Store (Amazon EBS) crittografato, le istanze non vengono avviate. Devi aggiungere la policy della chiave al Servizio AWS di gestione delle chiavi (AWS KMS) per consentire al ruolo utente chiave di utilizzarla.
Installa Instance Scheduler
Installa Instance Scheduler. Quindi, per verificare che l'installazione sia avvenuta correttamente, esegui questo comando:
$ scheduler-cli --version
Crea uno stack CloudFormation con il modello Instance Scheduler
Per distribuire una funzione AWS Lambda, una tabella Amazon DynamoDB, una regola Amazon EventBridge e metriche personalizzati di Amazon CloudWatch, completa i seguenti passaggi:
- Apri la Console di gestione AWS.
- Apri la console CloudFormation con il modello Instance Scheduler. Per impostazione predefinita, il modello viene avviato nella Regione Stati Uniti orientali (Virginia settentrionale). Oppure vai alla pagina Fase 1. Avviare lo stack di hub e scegli Launch Solution (Avvia soluzione).
Nella barra di navigazione, seleziona la Regione AWS in cui desideri avviare lo stack con il modello, quindi scegli Next (Avanti).
In Stack name (Nome stack), assegna un nome allo stack.
In Instance Scheduler TagName puoi mantenere il valore predefinito Schedule (Pianificazione) o personalizzarlo.
In Frequency (Frequenza), scegli una frequenza in minuti per eseguire il pianificatore. Ad esempio, puoi scegliere 5 minuti.
Nota: la frequenza è il numero di minuti che trascorrono prima che EventBridge avvii nuovamente la funzione Lambda per l'Instance Scheduler. Se hai un numero elevato di istanze, usa la frequenza più alta possibile per evitare limitazioni. Se la frequenza non è sufficiente per le esigenze del caso d'uso, puoi modificare la proprietà Frequency (Frequenza) in un secondo momento.
In Enable CloudWatch Metrics (Abilita metriche di CloudWatch), scegli Yes (Sì).
In Enable CloudWatch Logs (Abilita CloudWatch Logs), scegli Yes (Sì).
(Facoltativo) In Started tags (Tag avviati), inserisci state=started.
(Facoltativo) In Stopped tags (Tag arrestati), inserisci state=stopped.
Per la pianificazione multi-account, specifica il parametro Cross-account roles (Ruoli multi-account). Inserisci i nomi delle risorse Amazon (ARN) per ogni ruolo degli account secondari, separati da virgole. Se non utilizzi la pianificazione multi-account, lascia il parametro vuoto. - Scegli Next (Avanti).
- Nella pagina Options (Opzioni), scegli Next (Avanti).
- Rivedi le impostazioni, quindi scegli I acknowledge that AWS CloudFormation might create IAM resources (Accetto che AWS CloudFormation possa creare risorse IAM).
- Scegli Create (Crea).
Crea i periodi
Per creare periodi, puoi utilizzare l'interfaccia a riga di comando Instance Scheduler CLI, la console DynamoDB o risorse personalizzate. Per ulteriori informazioni sui periodi, consulta Orari di inizio e fine.
Utilizza Instance Scheduler CLI
Connettiti a Instance Scheduler CLI, quindi esegui questi comandi AWS CLI create-period:
$ scheduler-cli create-period --stack your_stack_name --region aa-example-1 --name mon-fri-9-5 --begintime 9:00 --endtime 16:59 --weekdays mon-fri $ scheduler-cli create-period --stack your_stack_name --region aa-example-1 --name sat-9-12 --begintime 9:00 --endtime 11:59 --weekdays sat
Nota: sostituisci your_stack_name con il nome dello stack che hai scelto nel passaggio 2 e aa-example-1 con la tua Regione.
Utilizza la console DynamoDB
Per creare periodi, completa i seguenti passaggi:
- Apri la console DynamoDB.
- Scegli Tabelle, quindi seleziona la tabella di configurazione.
Nota: il modello Instance Scheduler crea automaticamente una tabella DynamoDB di stato e una di configurazione. La tabella di stato memorizza lo stato delle istanze che il modello arresta e avvia. La tabella di configurazione consente di specificare i periodi e le pianificazioni per le esigenze del caso d'uso. - Scegli Esplora gli elementi della tabella.
- Quindi scegli Crea elemento.
- Scegli la vista JSON, quindi utilizza il seguente modello JSON:
Nota: il modello JSON precedente crea il primo periodo. Utilizza un modello JSON simile per il secondo periodo. Sostituisci mon-fri-9-5 con il nome del tuo periodo, 9:00 con la tua ora di inizio e 16:59 con la tua ora di fine.{ "type": { "S": "period" }, "name": { "S": "mon-fri-9-5" }, "begintime": { "S": "9:00" }, "endtime": { "S": "16:59" }, "weekdays": { "SS": [ "mon-fri" ] } }
Crea una pianificazione
Per creare una pianificazione, puoi utilizzare l'interfaccia a riga di comando Instance Scheduler CLI, la console DynamoDB o risorse personalizzate.
Utilizza Instance Scheduler CLI
Per creare una pianificazione, esegui questo comando CLI create-schedule:
$ scheduler-cli create-schedule --stack your_stack_name --name m-f9-5-sat9-12 --region aa-example-1 --periods mon-fri-9-5,sat-9-12 --timezone UTC
Nota: sostituisci your_stack_name con il nome del tuo stack, aa-example-1 con la tua Regione e mon-fri-9-5,sat-9-12 con la tua pianificazione.
Utilizza la console DynamoDB
Per creare una pianificazione, completa i seguenti passaggi:
- Apri la console DynamoDB.
- Scegli Tabelle, quindi seleziona la tabella di configurazione.
- Scegli Esplora gli elementi della tabella.
- Quindi scegli Crea elemento.
- Scegli la vista JSON, quindi utilizza il seguente modello JSON:
{ "type": { "S": "schedule" }, "name": { "S": "m-f9-5-sat9-12" }, "timezone": { "S": "UTC" }, "periods": { "SS": [ "mon-fri-9-5" ] } }
Aggiungi un tag all'istanza e verifica la pianificazione
Istanze con tag
Quando utilizzi uno stack CloudFormation con Instance Scheduler, devi definire il parametro Instance Scheduler TagName. Il valore predefinito per questo parametro è Pianifica.
Instance Scheduler monitora i tag delle istanze. Se la chiave del ](https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/operator-guide.html#tag-instances-for-scheduling)tag dell'istanza[ corrisponde al tag del pianificatore definito, Instance Scheduler applica la pianificazione impostata per il valore del tag dell'istanza. Ad esempio, la chiave di un tag è impostata su Schedule (Pianificazione) e il valore è impostato su m-f9-5-sat9-12. In questo esempio, le istanze iniziano alle 9:00 e si arrestano alle 17:00 dal lunedì al venerdì. Le istanze iniziano anche alle 9:00 e si interrompono alle 12:00 di sabato.
Nota: le chiavi e i valori dei tag fanno distinzione tra maiuscole e minuscole. Se avvii manualmente le istanze al di fuori del periodo di esecuzione, Instance Scheduler non ne arresta l'esecuzione. Inoltre, Instance Scheduler non avvia un'istanza se l'istanza viene arrestata manualmente durante il periodo di esecuzione, a meno che non applichi la pianificazione. Per ulteriori informazioni, consulta Definizioni di pianificazione.
Utilizza pianificazioni predefinite
Oltre alle pianificazioni personalizzate, puoi anche utilizzare una delle pianificazioni predefinite della tabella di configurazione. I passaggi seguenti verificano la pianificazione predefinita denominata running (in esecuzione):
- Apri la console Amazon EC2.
- Scegli le istanze interrotte a cui aggiungere il tag.
- Scegli la vista Tag, quindi scegli Gestisci tag.
- Scegli Aggiungi tag.
- In Chiave, inserisci Pianifica.
- In Valore, inserisci In esecuzione.
- Scegli Salva.
- Aggiorna la console Amazon EC2 e attendi l'avvio della funzione Lambda.
Nota: se la funzione Lambda viene avviata ed eseguita senza errori, in Instance State (Stato istanza) compare running (in esecuzione). Dipende dalla pianificazione che stai verificando. Nella console CloudWatch, puoi controllare le metriche di CloudWatch per gli errori e le invocazioni Lambda. - Apri la console DynamoDB.
- Scegli Tabelle, quindi seleziona la tabella di stato.
- Scegli Esplora gli elementi della tabella e verifica che l'istanza con il tag sia avviata.
Importante: è possibile che ti vengano addebitati costi aggiuntivi in base alla frequenza e alla durata della funzione Lambda che utilizzi. È inoltre possibile che ti vengano addebitati costi aggiuntivi per le tabelle DynamoDB o le regole EventBridge che crei.
Pianificazioni multi-account
Per pianificare istanze in account secondari utilizzando Instance Scheduler, distribuisci il modello aws-instance-scheduler-remote di CloudFormation. Questo modello crea il ruolo che consente a Instance Scheduler nell'account principale di gestire le istanze nell'account secondario.
Nota: è necessario fornire l'ARN del ruolo come parametro per lo stack dell'Instance Scheduler nell'account principale. Assicurati di creare o aggiornare lo stack di Instance Scheduler con il parametro corretto.
Per avviare lo stack remoto negli account secondari, completa i seguenti passaggi:
-
Apri la Console di gestione AWS dell'account secondario e avvia il modello aws-instance-scheduler-remote di CloudFormation. Puoi anche scaricare il modello per utilizzarlo in futuro.
Nota: per impostazione predefinita, il modello viene avviato nella regione Stati Uniti orientali (Virginia settentrionale).
-
Nella barra di navigazione, seleziona la Regione in cui desideri avviare lo stack con il modello, quindi scegli Next (Avanti).
-
Nella pagina Select Template (Seleziona modello), verifica di aver selezionato il modello corretto, quindi scegli Next (Avanti).
-
Nella pagina Specifica dettagli, assegna un nome allo stack remoto.
-
In Parameters (Parametri), rivedi e modifica il parametro Primary account (Account principale). Inserisci il numero dell'account principale.
-
Scegli Next (Avanti).
-
Nella pagina Options (Opzioni), scegli Next (Avanti).
-
Rivedi le impostazioni, quindi scegli I acknowledge that AWS CloudFormation might create IAM resources (Accetto che AWS CloudFormation possa creare risorse IAM).
-
Scegli Create (Crea).
-
Scegli la scheda Outputs (Output) dello stack, quindi copia il valore CrossAccountRole.
-
Nell'account principale, seleziona lo stack CloudFormation, quindi scegli Update (Aggiorna).
-
Nella pagina Update stack (Aggiorna stack), scegli Use current template (Utilizza il modello corrente).
-
Nel parametro Cross-account roles (Ruoli multi-account), incolla il valore CrossAccountRole.
-
Scegli Next (Avanti), quindi seleziona I acknowledge that AWS CloudFormation might create IAM resources (Accetto che AWS CloudFormation possa creare risorse IAM).
-
Scegli Update Stack (Aggiorna stack).
- Argomenti
- Management & Governance
- Lingua
- Italiano
Video correlati

