GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Löschen Sie ungenutzte EBS-Volumes (Elastic Block Storage) auf AWS mithilfe einer Lambda-Funktion

Amazon Elastic Block Store (EBS) ist ein benutzerfreundlicher, leistungsstarker Blockspeicherdienst. Es ist wie eine externe Festplatte, die an eine EC2-Instance angeschlossen und zum Speichern unserer Daten verwendet werden kann. Wenn die EBS-Volumes nicht verwendet und nicht benötigt werden und noch im Konto verfügbar sind, werden sie Ihnen von AWS unnötigerweise in Rechnung gestellt. Um einige Kosten zu sparen, werden wir die Lambda-Funktion sehen, die verwendet werden kann, um solche ungenutzten EBS-Volumes zu finden und zu löschen.

Voraussetzungen

  1. AWS-Konto (erstellen, falls Sie noch keins haben).
  2. Grundlegendes Verständnis von EC2-Instanz, klicken Sie hier, um mehr über EC2-Instanz zu erfahren.
  3. Grundlegendes Verständnis von Lambda, klicken Sie hier, um mehr über Lambda-Funktionen zu erfahren.

Was werden wir tun?

  1. Melden Sie sich bei AWS an.
  2. Erstellen Sie eine Lambda-Funktion, um ungenutzte EBS-Volumes zu löschen.

Melden Sie sich bei AWS an

  1. Klicken Sie hier, um zur AWS-Anmeldeseite zu gelangen.

Wenn wir auf den obigen Link klicken, sehen wir eine Webseite wie folgt, auf der wir uns mit unseren Anmeldedaten anmelden müssen.

Sobald wir uns erfolgreich bei AWS angemeldet haben, sehen wir die Hauptkonsole mit allen aufgelisteten Diensten.

Erstellen Sie eine Lambda-Funktion, um nicht verwendete EBS-Volumes zu löschen.

Klicken Sie oben links auf „Services“, suchen Sie nach „EC2“ und gehen Sie zum Haupt-Dashboard von EC2.

Scrollen Sie im Haupt-Dashboard von EC2 nach unten und klicken Sie unter „Elastic Block Storage auf „Volumes“. ".

Hier sehen Sie alle EBS-Volumes, die Sie in der ausgewählten Region haben. Volumes mit dem Status „Verfügbar“ sind ungenutzte Volumes und nicht mit einer der EC2-Instanzen verbunden. Diese Volumes können sicher gelöscht werden, wenn sie keine wichtigen Daten oder keine Daten enthalten.

Volumes können von dieser Konsole gelöscht werden, aber wenn es 100s-1000s von unused gibt Volumen, ist es besser, eine gewisse Automatisierung zu haben.

Um den Vorgang des Löschens ungenutzter Volumes zu automatisieren, können wir "Lambda-Funktionen" verwenden. Klicken Sie oben links auf dem Bildschirm auf „Dienste“ und suchen Sie nach „Lambda“.

Klicken Sie im Haupt-Dashboard von Lambda auf „Create Function“.

Erstellen Sie eine Funktion mit "Author from Scratch", benennen Sie die zu erstellende Funktion und wählen Sie die Laufzeit. Hier sehen wir eine Lambda-Funktion mit Python-Laufzeit, um den Prozess des Löschens der nicht verwendeten EBS-Volumes zu automatisieren. Klicken Sie auf "Funktion erstellen", um fortzufahren.

Sie sehen den folgenden Bildschirm mit dem Beispielfunktionscode.

Verwenden Sie den folgenden Code, um die ungenutzten EBS-Volumes zu löschen. Löschen Sie den vorhandenen Funktionscode und fügen Sie den folgenden Code in das Funktionscodefeld ein. Wenn Sie die spezifischen ungenutzten EBS-Volumes nicht löschen möchten, markieren Sie sie als „Name:DND“. Der folgende Code löscht solche Volumes nicht.

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)

Oder Sie können die Liste der unbenutzten EBS-Volumes angeben, die gelöscht werden müssen.

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)

Speichern Sie die Funktion, indem Sie auf die Schaltfläche Speichern klicken.

Bevor wir den Code ausführen/testen, müssen wir ein Ereignis erstellen. Wir werden ein einfaches Ereignis erstellen. Um ein Event zu erstellen, klicken Sie auf "Testevent auswählen" -> Testevent konfigurieren.

Benennen Sie auf dem folgenden Bildschirm die Veranstaltung und behalten Sie die Veranstaltungsvorlage unverändert bei und klicken Sie auf „Erstellen“.

Sobald der Code und das Ereignis fertig sind, müssen wir als Letztes, bevor wir die Funktion testen oder ausführen, der Lambda-Funktion die erforderlichen Richtlinien zuweisen. Um die erforderliche Richtlinie zuzuweisen, scrollen Sie nach unten und klicken Sie auf „View the delete-unused-ebs-volumes-role-ruemgr4x role“ und öffnen Sie sie im neuen Fenster.

Klicken Sie auf „Richtlinie anhängen“, um die erforderliche Richtlinie an diese IAM-Rolle anzuhängen.

Suchen Sie nach EC2 und hängen Sie die Richtlinie „AmazonEC2FullAccess“ an. Diese Richtlinie gewährt vollen Zugriff auf die Lambda-Funktion auf EC2-Instances.

Jetzt können wir die Funktion ausführen. Klicken Sie auf „Testen“.

Sobald Sie die Funktion ausgeführt haben, können Sie die Protokolle im Ausführungsergebnis sehen.

Sie können bestätigen, ob das ungenutzte EBS-Volume gelöscht wurde oder nicht, indem Sie zum Haupt-Dashboard der EC2-Instance gehen.

Hier, wie Sie sehen, ist das ungenutzte EBS-Volume nicht mehr in der Konsole verfügbar, was bedeutet, dass es erfolgreich von der Lambda-Funktion gelöscht wurde.

In diesem Artikel haben wir gesehen, wie man eine Lambda-Funktion schreibt, um die nicht verwendeten EBS-Volumes zu löschen. Dies kann uns helfen, zusätzliche Kosten für das AWS-Konto zu sparen.


Linux
  1. Erstellen Sie mit Terraform eine EC2-Instance auf AWS

  2. So erstellen Sie eine IAM-Rolle in AWS mit Terraform

  3. Bash-Anfängerserie Nr. 9:Verwenden von Funktionen in Bash

  4. Konfigurieren von Blockspeicher auf Linux-Servern

  5. Verwenden Sie watch, um eine Funktion wiederholt in Bash auszuführen?

Verwalten Sie AWS SQS-Warteschlangen mit aws-cli

So verwalten Sie AWS Cloudwatch mit aws-cli

Erstellen Sie mit Terraform einen S3-Bucket auf AWS

So erstellen Sie einen S3-Bucket mit Python Boto3 auf AWS

So erstellen Sie ein Ereignis in AWS Cloudwatch, um eine Lambda-Funktion auszulösen

So blockieren Sie einen Port mit einer Firewall in Linux