Heim > Backend-Entwicklung > Python-Tutorial > Optimieren Sie die AWS-Kosten: Automatisieren Sie die Bereinigung ungenutzter EBS-Snapshots mit Lambda

Optimieren Sie die AWS-Kosten: Automatisieren Sie die Bereinigung ungenutzter EBS-Snapshots mit Lambda

DDD
Freigeben: 2024-12-19 01:18:10
Original
501 Leute haben es durchsucht

Eine Schritt-für-Schritt-Anleitung zum Erstellen und Bereitstellen einer kostensparenden Lambda-Funktion für das EBS-Snapshot-Management

? Einführung

Willkommen in der Welt von DevOps! Heute befassen wir uns mit einem spannenden Kostenoptimierungsprojekt, das sich mit einer häufigen Herausforderung von AWS-Benutzern befasst – der Verwaltung unnötiger EBS-Snapshots. In diesem Projekt erstellen wir ein Python-Programm, das Folgendes automatisch bereinigt:

  • Snapshots, die keinem Volume zugeordnet sind.
  • Snapshots von Instanzen, die nicht mehr ausgeführt werden.

Dieses praktische Projekt ist nicht nur eine großartige Möglichkeit, Ihre AWS-Speicherkosten zu senken, sondern auch eine Gelegenheit, Ihr Verständnis der Ressourcennutzung in AWS zu vertiefen. Unterwegs erkunden wir boto3, das AWS SDK für Python, um mit AWS-Ressourcen zu interagieren und sie entsprechend unseren Anforderungen zu manipulieren.

Beginnen wir mit dieser Reise, um kostensparende Maßnahmen zu automatisieren und Ihre DevOps-Fähigkeiten zu verbessern!


? Voraussetzungen

Bevor wir mit dem Aufbau unseres Kostenoptimierungsprojekts beginnen, stellen wir sicher, dass Sie über die erforderlichen Tools und Kenntnisse verfügen. Das brauchen Sie:

  • Python: Stellen Sie sicher, dass Python auf Ihrem System installiert ist. Version 3.7 oder höher wird empfohlen.
  • Grundlegende Python-Kenntnisse: Vertrautheit mit den Python-Grundlagen wird Ihnen helfen, das Skript effektiv zu verstehen und umzusetzen.
  • AWS-Konto: Sie benötigen Zugriff auf ein AWS-Konto, um mit Ressourcen wie EC2- und EBS-Snapshots interagieren zu können.
  • Grundlegendes Verständnis von EC2: Da wir mit dem EC2-Dashboard und Snapshots arbeiten werden, ist ein grundlegendes Verständnis von EC2-Instanzen von entscheidender Bedeutung.
  • AWS CLI: Installieren und konfigurieren Sie die AWS CLI auf Ihrem System mit dem folgenden Befehl:
aws configure
Nach dem Login kopieren
Nach dem Login kopieren

In diesem Schritt werden Ihre Zugriffsschlüssel, Ihre Region und Ihr Ausgabeformat eingerichtet, um eine nahtlose Kommunikation mit AWS-Diensten zu ermöglichen.

Sobald Sie diese Voraussetzungen erfüllt haben, können Sie mit dem Projekt fortfahren!


? Starten des Projekts

Der Quellcode für dieses Projekt ist in meinem GitHub-Repository verfügbar:

? GitHub Repo: AWS Cloud-Kostenoptimierung

Folgen Sie diesen Schritten, um Ihre Lambda-Funktion zu erstellen und zu konfigurieren:

Erstellen Sie eine Lambda-Funktion:

  • Navigieren Sie zur Lambda-Konsole in Ihrem AWS-Konto.
  • Klicken Sie auf Funktion erstellen und wählen Sie die Option Von Grund auf neu erstellen.
  • Geben Sie den Funktionsnamen an, z. B. ebs-volume-check, und wählen Sie Python 3.12 als Laufzeit aus.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Fügen Sie den Code hinzu:

  • Öffnen Sie im Code-Editor der AWS-Konsole die Datei lambda_function.py.
  • Kopieren Sie den Inhalt von script.py und fügen Sie ihn aus dem GitHub-Repository in den Editor ein. Hier ist der Codeausschnitt als Referenz:
aws configure
Nach dem Login kopieren
Nach dem Login kopieren

Stellen Sie den Code bereit:

  • Klicken Sie auf die Schaltfläche „Bereitstellen“, um die Änderungen zu speichern und anzuwenden.

Timeout erhöhen:

  • Standardmäßig beträgt das Timeout für eine Lambda-Funktion 3 Sekunden, was für diesen Vorgang nicht ausreicht.
  • Gehen Sie zur Registerkarte „Konfiguration“, wählen Sie „Allgemeine Konfiguration“ und erhöhen Sie das Timeout auf 10 Sekunden.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Testen Sie die Funktion:

  • Erstellen Sie ein Testereignis mit Dummy-Daten und rufen Sie die Funktion auf.
  • Während des Tests wird ein UnauthorizedOperation-Fehler auftreten.

Dieser Fehler tritt auf, weil der Lambda-Funktion die erforderlichen Berechtigungen fehlen, die wir im nächsten Schritt beheben werden.


? Erforderliche Berechtigungen hinzufügen

Damit die Lambda-Funktion mit EC2-Ressourcen interagieren kann, müssen wir ihrer Servicerolle spezifische Berechtigungen hinzufügen. Anstatt vollen Zugriff zu gewähren, folgen wir dem Prinzip der geringsten Rechte, um sicherzustellen, dass die Funktion nur über die Berechtigungen verfügt, die sie benötigt. Befolgen Sie diese Schritte:

Suchen Sie die Servicerolle:

  • Navigieren Sie zur Registerkarte „Konfiguration“ der Lambda-Funktion.
  • Suchen Sie im Abschnitt „Berechtigungen“ nach der Dienstrolle, die der Funktion zugeordnet ist. Dort wird der Rollenname angezeigt.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Öffnen Sie die Servicerolle in IAM:

  • Klicken Sie auf den Namen der Dienstrolle und Sie werden zur IAM-Konsole weitergeleitet.

Erstellen Sie eine Inline-Richtlinie:

  • Klicken Sie in der IAM-Konsole auf der Registerkarte „Berechtigungen“ auf „Berechtigungen hinzufügen“ und wählen Sie „Inline-Richtlinie erstellen“ aus.
  • Konfigurieren Sie die Richtlinie wie folgt:
  • Service: Wählen Sie EC2.
  • Aktionen: Wählen Sie nur die folgenden Berechtigungen:
  • DescribeSnapshots
  • DescribeInstances
  • DescribeVolumes
  • Snapshots löschen
  • Ressourcen: Legen Sie der Einfachheit halber die Berechtigungen so fest, dass sie für alle Ressourcen gelten. Wenn Sie eine strengere Kontrolle benötigen, geben Sie die Ressourcen-ARNs an.

Richtlinie überprüfen und zuweisen:

  • Klicken Sie auf Weiter und überprüfen Sie die Richtliniendetails.
  • Vergeben Sie einen Namen für die Richtlinie, z. B. ebs-permissions.
  • Klicken Sie auf Richtlinie erstellen, um sie auf die Servicerolle anzuwenden.

Die ebs-Berechtigungsrichtlinie sieht folgendermaßen aus:

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Sobald diese Inline-Richtlinie hinzugefügt wurde, verfügt die Lambda-Funktion über alle Berechtigungen, die sie zum effektiven Beschreiben und Löschen von Snapshots, Volumes und Instanzen benötigt.

Sobald die Berechtigungen vorhanden sind, testen wir die Funktion im nächsten Schritt noch einmal!


? Testen der Lambda-Funktion

Sobald die Berechtigungen vorhanden sind, ist es an der Zeit, unsere Lambda-Funktion anhand realer Szenarien zu testen. Befolgen Sie diese Schritte, um zu sehen, wie die Funktion funktioniert:

1. Erster Anwendungsfall: Snapshots gelöschter Instanzen bereinigen

Erstellen Sie eine EC2-Instanz:

  • Starten Sie eine t2.micro-Instanz und nennen Sie sie test-ebs.
  • Verwenden Sie ein Standard-AMI und stellen Sie sicher, dass die Instanz über ein Root-Volume verfügt.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Schnappschuss erstellen:

  • Gehen Sie zum EC2-Dashboard und erstellen Sie einen Snapshot von dem an test-ebs angeschlossenen Volume.
  • Warten Sie, bis die Snapshot-Erstellung abgeschlossen ist.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Instanz löschen:
Sobald der Snapshot fertig ist, beenden Sie die test-ebs-Instanz. Dadurch bleibt ein Snapshot einer nicht vorhandenen Instanz zurück, die nun überflüssig ist.

Führen Sie die Lambda-Funktion aus:

  • Navigieren Sie zu Ihrer Lambda-Funktion in der AWS-Konsole und testen Sie die Funktion.
  • Die Funktion erkennt, dass der Snapshot nicht an eine laufende Instanz angehängt ist und löscht ihn.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Überprüfen Sie den Löschvorgang im Abschnitt „Snapshots“ des EC2-Dashboards.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

2. Zweiter Anwendungsfall: Bereinigen von Snapshots gelöschter Volumes

Erstellen Sie ein EBS-Volume:

  • Erstellen Sie ein 1 GB großes GP3-EBS-Volume und nennen Sie es ebs-volume.

Schnappschuss erstellen:

  • Navigieren Sie zum Abschnitt „EBS-Volumes“ und erstellen Sie einen Snapshot von ebs-volume.
  • Warten Sie, bis der Snapshot erstellt wurde.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Volume löschen:
Sobald der Snapshot fertig ist, löschen Sie das ebs-Volume. Dadurch bleibt ein Snapshot zurück, der keinem Volume zugeordnet ist.

Führen Sie die Lambda-Funktion aus:

  • Testen Sie die Lambda-Funktion erneut.
  • Die Funktion erkennt, dass der Snapshot mit keinem Volume verknüpft ist und löscht ihn.
  • Bestätigen Sie den Löschvorgang im Abschnitt „Snapshots“ des EC2-Dashboards.

Optimise AWS Costs: Automate Unused EBS Snapshot Cleanup with Lambda

Durch die erfolgreiche Bewältigung dieser beiden Szenarien demonstriert die Lambda-Funktion ihre Fähigkeit, redundante EBS-Snapshots zu identifizieren und zu bereinigen, wodurch Kosten gespart und das Ressourcenmanagement optimiert werden.


? Abschluss

Herzlichen Glückwunsch! ? Sie haben gerade eine Kostenoptimierungslösung auf AWS mit Python und Lambda erstellt. In diesem Projekt haben wir untersucht, wie Sie redundante EBS-Snapshots, die keinen Zweck mehr erfüllen, identifizieren und bereinigen können, um Ihnen dabei zu helfen, Cloud-Kosten zu sparen und gleichzeitig das Ressourcenmanagement zu verbessern.

Hier ist eine kurze Zusammenfassung dessen, was wir erreicht haben:

  • Ich habe gelernt, wie man eine Lambda-Funktion von Grund auf erstellt und konfiguriert. Nutzte die boto3-Bibliothek von AWS, um programmgesteuert mit EC2-Ressourcen zu interagieren.
  • Es wurde das Prinzip der geringsten Rechte befolgt, um einen sicheren Zugriff auf AWS-Dienste zu gewährleisten.
  • Wir haben reale Szenarien getestet, um die Effizienz unserer Funktion beim Bereinigen nicht angehängter Snapshots zu überprüfen.

Dieses Projekt unterstreicht die Bedeutung der Ressourcenoptimierung in einer Cloud-Umgebung und vermittelt Ihnen praktische Erfahrung in der Automatisierung von AWS-Aufgaben mit Python.

Sie können diese Funktion gerne weiter anpassen und erweitern. Sie könnten beispielsweise eine CloudWatch-Regel einrichten, um die Funktion regelmäßig auszulösen, oder die Logik erweitern, um zusätzliche Bereinigungsszenarien zu verarbeiten.

Vielen Dank, dass Sie uns folgen, und bleiben Sie gespannt auf weitere spannende DevOps- und Cloud-Projekte! ?

? Für einen informativeren Blog folgen Sie mir auf Hashnode, X(Twitter) und LinkedIn.

Bis dahin viel Spaß beim Lernen! ?

Das obige ist der detaillierte Inhalt vonOptimieren Sie die AWS-Kosten: Automatisieren Sie die Bereinigung ungenutzter EBS-Snapshots mit Lambda. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage