GNU/Linux >> Linux Esercitazione >  >> Linux

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

Amazon Elastic Block Store (EBS) è un servizio di archiviazione 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, non sono necessari e sono ancora disponibili nell'account, ti verranno addebitati inutilmente da AWS. Per risparmiare sui costi, vedremo la funzione Lambda che può essere utilizzata per trovare ed eliminare tali volumi EBS inutilizzati.

Prerequisiti

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

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 andare alla pagina di accesso di AWS.

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

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

Crea una funzione Lambda per eliminare i volumi EBS inutilizzati.

Clicca 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" in "Blocco elastico Archiviazione ".

Qui vedrai tutti i volumi EBS che hai nella regione selezionata. I volumi con lo stato "disponibile" sono volumi inutilizzati e non sono allegati a nessuna delle istanze EC2. Questi volumi possono essere eliminati in sicurezza se non hanno dati importanti o se non hanno dati su di essi.

I volumi possono essere eliminati da questa console, ma se sono presenti 100-1000 inutilizzati volumi, è meglio disporre di un po' di automazione.

Per automatizzare il processo di eliminazione dei volumi inutilizzati possiamo usare "Funzioni Lambda". Clicca su "Servizi" in alto a sinistra dello schermo e cerca "Lambda".

Nella dashboard principale di Lambda, fare clic su "Crea funzione".

Crea una funzione con "Autore da zero", nomina la 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 schermata seguente con il codice funzione di esempio.

Utilizza il codice seguente per eliminare i volumi EBS inutilizzati. Elimina il codice funzione esistente e incolla il codice seguente nella casella del codice funzione. Se non si desidera eliminare i volumi EBS specifici inutilizzati, contrassegnarli 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)

Salva 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 successiva, 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 politiche richieste alla funzione Lambda. Per assegnare la politica richiesta, 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 la policy "AmazonEC2FullAccess". Questa policy consentirà l'accesso completo alla funzione Lambda sulle istanze EC2.

Ora siamo pronti per eseguire la funzione. Clicca su "Test".

Una volta eseguita la funzione, puoi vedere i log in Risultato esecuzione.

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

Qui, come vedi, 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 alcuni costi aggiuntivi sull'account AWS.


Linux
  1. Bash Beginner Series #9:Utilizzo delle funzioni in Bash

  2. Configurazione dell'archiviazione a blocchi sui server Linux

  3. Configurazione dell'archiviazione a blocchi sui server Windows

  4. Elimina le righe vuote usando sed

  5. Usare watch per eseguire ripetutamente una funzione in Bash?

Gestisci le code AWS SQS utilizzando aws-cli

Come gestire AWS Cloudwatch utilizzando aws-cli

Crea un bucket S3 su AWS utilizzando Terraform

Come creare un bucket S3 utilizzando Python Boto3 su AWS

Come creare un evento in AWS Cloudwatch per attivare una funzione Lambda

Come bloccare una porta utilizzando un firewall in Linux