Amazon Elastic Block Store (EBS) è un servizio che fornisce spazio di archiviazione per le istanze di Amazon EC2. EBS è su cui si basa ogni volume delle istanze EC2. Quando ci si affida a un servizio per eseguire infrastrutture importanti, è saggio assicurarsi che i dati siano salvati. In questo post del blog, impara come gestire e automatizzare gli snapshot di EC2 utilizzando il linguaggio di scripting PowerShell.
Ogni volume EBS collegato a un’istanza EC2 può essere salvato tramite uno snapshot EBS. Ogni snapshot può essere creato in uno dei due modi; uno snapshot completo o incrementale. Beh, tecnicamente entrambi, ma… seguimi su questo.
Quando viene creato il primo backup snapshot per un’istanza EC2, viene creato un backup dell’intero volume. Quando vengono creati gli snapshot successivi, vengono salvati solo i dati a livello di blocco che sono cambiati rispetto all’ultimo snapshot. Tuttavia, a differenza dei tipici backup incrementali in un determinato momento, poiché gli snapshot possono essere concatenati, quando viene ripristinato uno snapshot, tutti i dati per quel volume vengono ripristinati, rendendolo simile a un backup completo.
Gli snapshot possono essere creati in modo asincrono, il che significa che gli snapshot possono essere creati in parallelo. Quando viene avviato, uno snapshot entra in una fase di attesa fino a quando tutti i blocchi necessari vengono copiati su Amazon S3, dove vengono archiviati tutti gli snapshot EBS.
Utilizzare PowerShell per creare snapshot AWS EC2.
Ci sono diversi modi in cui AWS ti consente di gestire gli snapshot di EBS. Puoi utilizzare la Console di gestione di AWS, la CLI di AWS, PowerShell o le API direttamente se lo desideri. In questo articolo, utilizzeremo PowerShell poiché il modulo AWSPowerShell offre un ottimo supporto per la gestione degli snapshot di EBS con i comandi PowerShell.
Prerequisiti
Prima di procedere, ci saranno alcuni prerequisiti che presumo tu abbia per ottenere il massimo da questo tutorial. Avrai bisogno di:
- Un account AWS
- Un’istanza EC2 con un volume collegato
- Autenticato con l’utente root o un utente IAM con l’autorizzazione CreateSnapshot (arn:aws:ec2:region::snapshot/*)
Una volta che hai tutti questi prerequisiti in ordine, siamo pronti a iniziare!
Trovare gli snapshot esistenti di EC2
Una delle prime attività che faremo è scoprire se ci sono già degli snapshot esistenti. Per capirlo, utilizziamo il comando Get-EC2Snapshot
. Questo comando cercherà tutti gli snapshot che sono già stati creati e li visualizzerà sulla console di PowerShell.
Noterai che gli snapshot di EC2 di AWS che vengono mostrati non sono quelli relativi alla tua istanza EC2. Questi sono tutti snapshot condivisi con te e disponibili per il ripristino sulle tue istanze EC2. Per scoprire tutti gli snapshot provenienti dalle tue istanze EC2, utilizza il parametro OwnerId
con il valore self
.
Creazione di un nuovo snapshot di EBS
Assumendo che tu abbia già creato un’istanza EC2, puoi ora creare uno snapshot. Puoi creare nuovi snapshot utilizzando il comando New-EC2Snapshot
, ma prima dovrai raccogliere l’ID del volume per ogni volume che desideri fotografare. Per fare ciò, dovremo prima trovare l’ID dell’istanza EC2 a cui il volume è collegato.
Una volta che conosci l’ID dell’istanza EC2, dovrai usarlo per trovare i volumi. Per trovare tutti i volumi collegati all’istanza EC2, utilizzerai il comando Get-EC2Volume
e filtrerai l’output solo per i volumi con un ID di istanza collegata a quello che stiamo cercando.
Ora che abbiamo i volumi, AWS consiglia di spegnere l’istanza o almeno smontare il volume. Procediamo con lo spegnimento dell’istanza.
Ora possiamo iterare su ciascuno di essi e passare l’ID del volume al parametro VolumeId
del comando New-EC2Snapshot
. Una volta fatto ciò, noterai che lo snapshot passerà allo stato di in attesa.
Puoi confermare che lo snapshot sia completato eseguendo nuovamente il comando Get-EC2Snapshot
e verificando che lo stato sia ora completato.
Assegnazione dei tag
Se hai molti snapshot da gestire, può essere difficile tenerli tutti separati. Per ordinare gli snapshot e categorizzarli per ogni scoperta, puoi anche assegnare loro dei tag. I tag sono una parte ubiqua di EC2 e possono essere utilizzati per i tuoi snapshot EBS.
Puoi assegnare i tag durante la creazione dello snapshot o successivamente. Per assegnare i tag durante la creazione dello snapshot, utilizza il parametro TagSpecification
su New-EC2Snapshot
.
Ad esempio, forse voglio contrassegnare questo snapshot di AWS EC2 che ho appena preso prima di apportare una modifica di produzione. Vorrei creare un tag chiamato Stage e assegnarlo come Dev. Per fare ciò, posso creare un oggetto TagSpecification, assegnare uno o più oggetti Tag alla proprietà Tags e quindi definire il tipo di risorsa a cui verrà allegato questo tag.
Una volta creato l’oggetto TagSpecification, posso quindi passarlo a New-EC2Snapshot
.
Creazione di una nuova AMI da Snapshots
Un’altra caratteristica interessante degli snapshot è che è possibile creare una nuova immagine (AMI) da uno snapshot. Se si dispone di uno snapshot del volume root di un’istanza EC2 solo Linux, è possibile creare facilmente una nuova AMI da tale snapshot di volume. Supponiamo che voglia creare una nuova immagine dallo snapshot appena creato. Posso farlo usando il comando New-EC2Image
.
I’ll first need to capture the snapshot ID.
In seguito, posso passare quell’ID come hashtable al parametro BlockDeviceMapping
su New-EC2Image
.
Rimozione degli snapshot di AWS EC2
Se abbiamo finito con lo snapshot, ora possiamo rimuoverli. Farlo è semplice. Basta collegare l’istanza restituita da Get-EC2Snapshot
a Remove-EC2Snapshot
. Tuttavia, potresti incorrere in questo errore se un’AMI è in uso.
In questo caso, l’AMI è registrata e devi prima annullarne la registrazione usando il comando Unregister-EC2Image
.
Riepilogo
PowerShell ti consente di gestire ogni aspetto degli snapshot EBS. Se gli scenari che abbiamo coperto qui non corrispondono a ciò che devi fare, ti suggerisco di dare un’occhiata a tutti i comandi disponibili per gli snapshot EC2 eseguendo Get-Command -Noun *ec2snapshot* -Module AWSPowerShell
. Questo ti darà un’idea di ciò che è possibile fare con PowerShell e gli snapshot EC2 (EBS).