Ricerca nel sito web

Elimina i volumi EBS (Elastic Block Storage) inutilizzati su AWS utilizzando una funzione Lambda


Su questa pagina

  1. Prerequisiti
  2. Accedi ad AWS
  3. Crea una funzione Lambda per eliminare i volumi EBS inutilizzati.

Amazon Elastic Block Store (EBS) è un servizio di storage a blocchi ad alte prestazioni facile da usare. È come un disco esterno che può essere collegato a un'istanza EC2 e utilizzato per archiviare i nostri dati su di esso. Se i volumi EBS non sono in uso e non sono necessari e sono ancora disponibili nell'account, ti verranno addebitati da AWS inutilmente. Per risparmiare qualche costo, vedremo la funzione Lambda che può essere utilizzata per trovare ed eliminare tali volumi EBS inutilizzati.

Prerequisiti

  1. Account AWS (crealo se non ne hai uno).
  2. Comprensione di base dell'istanza EC2, fai clic qui per saperne di più sull'istanza EC2.
  3. Comprensione di base di Lambda, fai clic qui per saperne di più sulle funzioni Lambda.

Che cosa faremo?

  1. Accedi ad AWS.
  2. Crea una funzione Lambda per eliminare i volumi EBS inutilizzati.

Accedi ad AWS

  1. Fai clic qui per accedere alla pagina di accesso di AWS.

Quando colpiamo il link sopra, vedremo una pagina web come segue in cui ci viene richiesto di accedere utilizzando i nostri dati di accesso.

Una volta effettuato l'accesso ad AWS con successo, vedremo la console principale con tutti i servizi elencati.

Crea una funzione Lambda per eliminare i volumi EBS inutilizzati.

Fai clic su \Servizi\ in alto a sinistra, cerca \EC2\ e vai alla dashboard principale di EC2.

Nella dashboard principale di EC2, scorri verso il basso e fai clic su \Volumi\ sotto \Elastic Block Storage\.

Qui vedrai tutti i volumi EBS che hai nella regione selezionata. I volumi con lo stato \disponibile\ sono volumi inutilizzati e non sono collegati a nessuna delle istanze EC2. Questi volumi possono essere eliminati in modo sicuro se non contengono dati importanti o se non contengono dati.

I volumi possono essere eliminati da questa console, ma se ci sono centinaia o migliaia di volumi inutilizzati, è meglio disporre di un po' di automazione.

Per automatizzare il processo di eliminazione dei volumi inutilizzati possiamo utilizzare \Funzioni Lambda\. Fare clic su \Servizi\ in alto a sinistra dello schermo e cercare \Lambda\.

Nella dashboard principale di Lambda, fai clic su \Crea funzione\.

Crea una funzione con \Autore da zero\, dai un nome alla funzione da creare e scegli il Runtime. Qui vedremo una funzione Lambda con Python Runtime per automatizzare il processo di eliminazione dei volumi EBS inutilizzati. Fare clic su \Crea funzione\ per procedere ulteriormente.

Verrà visualizzata la seguente schermata con il codice della funzione di esempio.

Utilizzare il codice seguente per eliminare i volumi EBS inutilizzati. Elimina il codice funzione esistente e incolla il seguente codice nella casella del codice funzione. Se non desideri eliminare gli specifici volumi EBS inutilizzati, contrassegnali come \Nome: DND\. Il codice seguente non eliminerà tali volumi.

import boto3
ec2 = boto3.resource('ec2',region_name='eu-west-3')
def lambda_handler(event, context):
    for vol in ec2.volumes.all():
        if  vol.state=='available':
            if vol.tags is None:
                vid=vol.id
                v=ec2.Volume(vol.id)
                v.delete()
                print ('Deleted ' +vid)
                continue
            for tag in vol.tags:
                if tag['Key'] == 'Name':
                    value=tag['Value']
                    if value != 'DND' and vol.state=='available':
                        vid=vol.id
                        v=ec2.Volume(vol.id)
                        v.delete()
                        print ('Deleted ' +vid)

Oppure puoi specificare l'elenco dei volumi EBS inutilizzati che devono essere eliminati.

import boto3
ec2 = boto3.resource('ec2',region_name='eu-west-3')
volume_ids = ['vol-029af2107c0a0807d', ‘vol-029af2107c0a08123’]
def lambda_handler(event, context):
    for volid in volume_ids:
        vid=volid
        v=ec2.Volume(vid)
        v.delete()
        print ('Deleted ' +vid)

Salvare la funzione facendo clic sul pulsante Salva.

Prima di eseguire/testare il codice, dobbiamo creare un evento. Creeremo un semplice evento. Per creare un evento, fai clic su \Seleziona un evento di test\ -> Configura evento di test.

Nella schermata seguente, assegna un nome all'evento e mantieni il modello di evento così com'è e fai clic su \Crea\.

Una volta che il codice e l'evento sono pronti, l'ultima cosa che rimane prima di testare o eseguire la funzione è assegnare le policy richieste alla funzione Lambda. Per assegnare il criterio richiesto, scorri verso il basso e fai clic su \Visualizza il ruolo delete-unused-ebs-volumes-role-ruemgr4x\ e aprilo nella nuova finestra.

Fai clic su \Allega policy\ per allegare la policy richiesta a questo ruolo IAM.

Cerca EC2 e allega \AmazonEC2FullAccess policy. Questa policy fornirà l'accesso completo alla funzione Lambda sulle istanze EC2.

Ora siamo pronti per eseguire la funzione. Fare clic su \Test\.

Una volta eseguita la funzione, è possibile visualizzare i log in Execution Result.

Puoi confermare se il volume EBS inutilizzato è stato eliminato o meno accedendo alla dashboard principale dell'istanza EC2.

Qui, come puoi vedere, il volume EBS inutilizzato non è più disponibile nella console, il che significa che è stato eliminato con successo dalla funzione Lambda.

In questo articolo abbiamo visto come scrivere una funzione Lambda per eliminare i volumi EBS inutilizzati. Questo può aiutarci a risparmiare qualche costo aggiuntivo sull'account AWS.