Una macchina EC2 si paga per il tempo in cui è accesa. Un server di sviluppo, di test o della intranet dell'ufficio che si usa solo in orario lavorativo resta acceso 168 ore a settimana e si usa forse 50. Spegnerlo di notte e nel fine settimana taglia la parte di calcolo della sua bolletta di oltre la metà, senza cambiare nulla di quello che fa. Questa guida spiega cosa risparmi davvero, cosa no, e come programmarlo perché avvenga da solo.
Alla fine chiariamo il dubbio classico: e in Lightsail? La risposta breve è che fermare una macchina Lightsail non fa risparmiare nulla, e conviene sapere perché.
Prima di iniziare: cosa significa ogni cosa
- EC2
- I server "su misura" di Amazon: scegli dimensione, disco e tutto il resto, e paghi per le ore in cui sono accesi. Più flessibile di Lightsail, con più cose da decidere.
- Istanza
- Così AWS chiama ogni macchina o server. Istanza e macchina sono la stessa cosa in questa guida.
- Fermare (stop) e terminare (terminate)
- Fermare è spegnere: la macchina e il suo disco restano lì e si può riaccendere. Terminare è eliminarla per sempre. Questa guida si limita a fermare.
- Disco EBS
- Il disco rigido della macchina EC2. Si paga a parte rispetto alla macchina e continua a essere addebitato anche se è spenta, perché i tuoi dati restano salvati.
- IP elastico
- Un indirizzo internet fisso che riservi e assegni alla tua macchina perché non cambi quando la spegni e la riaccendi. Senza, ogni avvio porta un indirizzo diverso.
- EventBridge Scheduler
- La "sveglia" di AWS: un servizio che esegue un'azione alle ore che gli indichi, come spegnere o accendere una macchina, senza che tu debba programmare nulla.
- Cron
- Il modo classico di scrivere un orario ripetitivo in informatica, con numeri separati da spazi (minuto, ora, giorno...). La guida ti dà le espressioni già pronte.
- Lightsail
- La versione semplice dei server di Amazon, con prezzo fisso al mese. Alla fine della guida spieghiamo perché lì spegnere non fa risparmiare.
Passo dopo passo
Capisci cosa smetti di pagare e cosa no
Fermando (stop) una EC2 smetti di pagare il calcolo dell'istanza, che è la parte grossa. Continui a pagare:
- Il disco EBS, perché i dati restano lì. Si paga per GB al mese, che la macchina sia accesa o no.
- Le istantanee di quel disco.
- L'IP elastico, se ne hai uno associato. AWS fa pagare gli indirizzi IPv4 pubblici, e un IP elastico assegnato a una macchina ferma si paga lo stesso.
Se la macchina ha una licenza a ore (Windows, alcune immagini del Marketplace), anche quella parte si ferma quando la fermi.
Verifica che la macchina regga lo spegnimento
Prima di automatizzare qualsiasi cosa, fai la prova a mano: ferma l'istanza dalla console EC2 e riavviala. Controlla tre cose: che i servizi partano da soli all'accensione (web, database, code), che la macchina mantenga lo stesso IP (solo se ha un IP elastico; senza, l'IP pubblico cambia a ogni avvio) e che non usi instance store (archiviazione dell'istanza), che si cancella quando la fermi. Se una di queste cose non va, sistemala prima.
Metti un tag alle macchine che si spengono
Nella console EC2, seleziona l'istanza, scheda Tag, e aggiungi per esempio
Horario = oficina. Non è obbligatorio, ma ti permette di vedere a colpo d'occhio quali macchine rientrano nello spegnimento e, se più avanti userai uno strumento di pianificazione, di selezionarle per tag invece che una a una.Crea la pianificazione di spegnimento con EventBridge Scheduler
Apri Amazon EventBridge, menu Scheduler, e clicca su Crea pianificazione. Dalle un nome (
apagar-dev-noche), scegli Pianificazione ricorrente con espressione cron, per esempio0 20 ? * MON-FRI *per le 20:00 dal lunedì al venerdì, e imposta il fuso orario sul tuo (Europe/Madrid) perché il cambio dell'ora non ti scombini tutto.Nella destinazione, scegli Tutte le API, cerca EC2 e l'azione StopInstances. Nel riquadro di input incolla l'identificativo della macchina:
{ "InstanceIds": ["i-0123456789abcdef0"] }Lascia che EventBridge crei un nuovo ruolo di esecuzione; gli darà esattamente il permesso per quell'azione di arresto. Salva.
Crea la pianificazione di accensione
Ripeti il passo precedente con nome
encender-dev-manana, cron0 7 ? * MON-FRI *e l'azione StartInstances, con lo stesso identificativo. Se la macchina impiega tempo ad avviarsi e le persone arrivano alle 8, metti le 7:30. Meglio avanzare un quarto d'ora che ricevere lamentele.Tieni d'occhio la prima settimana
Il giorno dopo guarda la scheda della macchina: l'"ultimo cambio di stato" deve coincidere con i tuoi orari. In EventBridge Scheduler ogni pianificazione mostra l'ultima esecuzione e se è fallita. Dopo qualche settimana vedrai l'effetto in Cost Explorer filtrando per quell'istanza o per il tag.
Perché in Lightsail fermare non fa risparmiare
Lightsail non si paga a ore di utilizzo, ma a pacchetto mensile: tanto al mese per una macchina di una certa dimensione, incluso il suo disco, il suo IP e una quota di trasferimento. Quel pacchetto si paga finché la macchina esiste, accesa o ferma che sia. AWS lo dice chiaramente nella sua documentazione: le istanze ferme continuano a essere addebitate.
Se vuoi davvero smettere di pagare una macchina Lightsail che non usi, la strada è un'altra: fare un'istantanea ed eliminare la macchina. Pagherai solo l'archiviazione dell'istantanea, molto più economica, e quando ti servirà creerai una macchina nuova a partire da essa (hai la guida passo dopo passo in questa stessa sezione). Per una macchina usata ogni giorno in orario d'ufficio, Lightsail semplicemente non è lo strumento per risparmiare spegnendo; o accetti il prezzo fisso o la sposti su EC2.
Cosa può andare storto
Il sito ha cambiato IP all'avvio
Non avevi un IP elastico. Assegnane uno da IP elastici nella console EC2 e associalo all'istanza; da lì in poi lo mantiene tra un arresto e l'altro. Ricorda che si paga, ma è una cifra piccola rispetto alle ore di calcolo che risparmi.
I servizi non partono da soli
Su Linux, verifica che siano abilitati all'avvio (systemctl enable nombre). Su Windows, che il servizio sia su "Automatico". È un problema della macchina, non dello spegnimento, ma lo spegnimento lo fa venire a galla.
La pianificazione non viene eseguita
Guarda il ruolo di esecuzione della pianificazione in EventBridge: ha bisogno dei permessi ec2:StopInstances e ec2:StartInstances su quell'istanza. Se hai copiato un ruolo da un'altra pianificazione, potrebbe mancargli una delle due azioni. E controlla il fuso orario: se hai lasciato UTC, l'orario è spostato di una o due ore.
Ci sono lavori notturni che non vengono più fatti
Copie, report, aggiornamenti automatici alle 3 del mattino... Se la macchina è spenta a quell'ora, non avvengono. Spostali nell'orario di accensione o, se sono pesanti, lasciali per una finestra in cui la macchina è viva (per esempio accendi alle 6 e programma la copia alle 6:15).
In Simplio
In Simplio avvii, fermi e riavvii le tue macchine EC2 e Lightsail con un pulsante, dal cellulare se serve, e ogni persona del tuo team vede solo le macchine che le hai assegnato. Nella schermata Costi vedi quanto ti sta costando ogni macchina al mese, per decidere quali vale la pena spegnere. E se una macchina che dovrebbe essere accesa risulta ferma, ti avvisa via email.
La stessa cosa, in AWS e in Simplio
| Nella console di AWS | In Simplio | |
|---|---|---|
| Programmare spegnimento e accensione | EventBridge Scheduler: 2 pianificazioni, espressioni cron, fuso orario, ruolo di permessi: 6 passi, 30 minuti | Avviare e fermare con un pulsante oggi; orario per macchina in una schermata, nel tuo fuso orario, quando sarà disponibile |
| Sapere quanto risparmi | Cost Explorer filtrando per istanza, il mese successivo | Costo mensile stimato di ogni macchina nella schermata Costi |
| Accorgerti se non si avvia | Creare in più un allarme in CloudWatch | Avviso via email se una macchina che dovrebbe essere accesa è ferma |