AWS Lambda ist ein Dienst von Amazon Web Services (AWS), der es Ihnen ermöglicht, Ihren Code als Reaktion auf Ereignisse auszuführen, ohne Server verwalten zu müssen. Es ist eine einfache und skalierbare Möglichkeit, Anwendungen zu erstellen.

In diesem Tutorial zeige ich Ihnen, wie Sie AWS Lambda mit drei anderen Diensten verwenden:

  • Amazon S3 zum Speichern von Dateien, Bildern und Videos

  • Amazon Simple Notification Service (SNS) zum Senden von Benachrichtigungen

  • Amazon EventBridge zum Planen von Nachrichten

Wir werden alles Schritt für Schritt durchgehen.

Am Ende, mit der Integration der anderen Dienste, werden Sie eine Goal Manifestation Quote App erstellt haben, die zufällige inspirierende Nachrichten sendet, um Sie motiviert und fokussiert auf Ihre Ziele zu halten.

Voraussetzungen

  • Ein AWS-Konto: Wenn Sie noch keines haben, melden Sie sich hier an.

  • Ein GitHub-Repository: Dies dient zum Speichern Ihres Quellcodes. Wenn Sie kein GitHub-Konto haben, können Sie eines hier erstellen.

  • Eine integrierte Entwicklungsumgebung (IDE) wie Visual Studio Code oder Sublime Text.

  • Grundkenntnisse in Webentwicklung und einer Programmiersprache Ihrer Wahl. Ich habe Python für dieses Tutorial verwendet.

  • Zenquote Random API

Was Sie lernen werden

  • Wie man einen Amazon S3-Bucket erstellt

  • Wie man den Amazon Simple Notification Service (SNS) verwendet

  • Wie man Amazon Lambda verwendet

  • Wie man Amazon EventBridge verwendet

Inhaltsverzeichnis

  1. Schritt 1: Richten Sie Ihre Entwicklungsumgebung ein

  2. Schritt 2: Erstellen Sie einen Amazon Simple Storage Service (S3)

  3. Schritt 3: Erstellen Sie einen Amazon Simple Notification Service (SNS)

  4. Schritt 4: Erstellen Sie eine IAM-Richtlinie

  5. Schritt 5: Erstellen Sie eine Amazon Lambda-Funktion

  6. Schritt 6: Erstellen Sie eine EventBridge

  7. Schritt 7: Laden Sie Ihren Code hoch

  8. Fazit

Schritt 1: Richten Sie Ihre Entwicklungsumgebung ein

In diesem Schritt richten Sie alles ein. Melden Sie sich zunächst bei Ihrem AWS-Konto an und installieren Sie Python, falls Sie es nicht in Ihrer IDE haben.

Schritt 2: Erstellen Sie einen Amazon Simple Storage Service (S3)

Bevor wir mit der Erstellung eines S3-Buckets beginnen, lassen Sie uns zunächst verstehen, was Amazon S3 ist:

Amazon S3 (Simple Storage Service) ist ein Dienst von Amazon, der es Ihnen ermöglicht, beliebige Mengen oder Arten von Daten, wie Fotos, Videos, Dokumente und Backups, jederzeit zu speichern und darauf zuzugreifen, wenn Sie es benötigen.

Jetzt, da Sie die Grundlagen von Amazon S3 kennen, kehren wir zum Tutorial zurück.

Erstellen Sie einen S3-Bucket

Es gibt mehrere Möglichkeiten, ein S3-Bucket zu erstellen, aber für dieses Tutorial verwenden wir die Ubuntu-Befehlszeile (CMD), Ihr Terminal oder Amazon CloudShell, je nachdem, womit Sie sich am wohlsten fühlen.

  • Geben Sie boto3 s3 in die Web-Suchleiste ein, um eine Liste verwandter Dokumentationen anzuzeigen.

  • Klicken Sie auf das erste Ergebnis.

  • Sobald die Dokumentation geöffnet ist, kopieren Sie den ersten Befehl, den Sie sehen.

  • Fügen Sie ihn in Ihre CMD ODER Ihr gewähltes Terminal ein – denken Sie aber vorher daran, „cd“ in das richtige Verzeichnis zu wechseln.

  • Scrollen Sie in der Dokumentation nach unten und klicken Sie auf „create_bucket.

  • Sobald es geöffnet ist, scrollen Sie nach unten zu „Request Syntax.“ Kopieren Sie den Bucket-Namen und die Bucket-Konfiguration.

  • Andere in der Anfrage-Syntax aufgeführte Variablen sind optional.

  • Sobald dies erledigt ist, stellen Sie sicher, dass Sie speichern.

  • Kehren Sie zurück und rufen Sie das Skript auf:
#python3 Ihr Dateiname
  • Das Ausführen des Skripts erstellt automatisch ein S3-Bucket in Ihrem Amazon S3.

  • Jetzt können Sie zur Konsole gehen, um zu überprüfen, ob es erstellt wurde:

Dateien hochladen

Mit dem erstellten Bucket können wir jetzt Dateien über die Konsole hochladen. Ich glaube, es gibt auch eine programmatische Möglichkeit, Dateien hochzuladen und zu testen, aber ich habe die Methoden in der Dokumentation noch nicht vollständig erkundet.

Klicken Sie auf den Bucket-Namen, um zur Objektseite weitergeleitet zu werden. Hier werden Sie Ihre Dateien zur Speicherung hochladen.

Klicken Sie auf die Hochladen-Schaltfläche, um eine Datei hochzuladen. Denken Sie daran, dass wir eine Zielmanifestationszitat-Anwendung erstellen.

Jetzt, da wir einen Speicher-Bucket eingerichtet haben:

  • Öffnen Sie ein Tool wie Google Drive, MS Word, WPS oder einen anderen Dokumenteneditor.

  • Schreiben Sie die Ziele auf, die Sie erreichen möchten.

  • Speichern Sie die Datei im PDF- oder DOCX-Format.

  • Nehmen Sie das Dokument und laden Sie es in Ihr Amazon S3 hoch.

Um zu überprüfen, ob es die richtige Datei ist:

  • Gehen Sie zum Tab Berechtigungen.

  • Scrollen Sie nach unten zu Öffentlichen Zugriff blockieren.

  • Klicken Sie auf Bearbeiten und deaktivieren Sie das Kontrollkästchen.

Wie oben gezeigt, ist es derzeit auf „Ein“ eingestellt. Deaktivieren Sie es, um es auf „Aus“ zu setzen.

  • Auf der gleichen Eimer-Einstellungsseite die Richtlinie ändern.

  • Scrollen Sie nach unten, und Sie werden feststellen, dass eine Eimer-Richtlinie automatisch generiert wurde.

  • Fahren Sie fort und kopieren Sie die Richtlinie.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-bucket-name/*"
    }
  ]
}
  • Gehen Sie zurück zum Eimer-Richtlinien-Editor und fügen Sie die Richtlinie ein.

Wenn Sie diese Schritte abgeschlossen haben, hat Ihr Objekt öffentlichen Zugriff.

Zurück zum Objekte-Tab und klicken Sie auf die unten angegebene Objekt-URL:

Mit dieser URL ist Ihr Upload jetzt sichtbar.

Schritt 3: Erstellen Sie einen Amazon Simple Notification Service (SNS)

SNS ist ein vollständig verwalteter Messaging-Dienst von AWS. Er ermöglicht die Kommunikation zwischen Anwendungen oder direkt mit Benutzern durch das Senden von Benachrichtigungen.

Um einen SNS zu erstellen, befolgen Sie diese Schritte:

1. Melden Sie sich beim AWS-Management-Console an

Gehen Sie dann zu Amazon SNS. Navigieren Sie zum SNS-Dashboard und wählen Sie Themen im linken Menü aus.

Um ein Thema zu erstellen:

  • Klicken Sie auf Thema erstellen.

  • Wählen Sie einen Themen-Typ: Standard (Standard) oder FIFO (für geordnete Nachrichten).

  • Geben Sie einen Namen für Ihr Thema ein. (zum Beispiel MyFirstSNSTopic).

  • Konfigurieren Sie optionale Einstellungen wie Verschlüsselung, Zustellwiederholungsrichtlinien oder Tags.

  • Klicken Sie auf Thema erstellen.

2. Abonnements hinzufügen:

Nachdem das Thema erstellt wurde, klicken Sie darauf, um die Detailseite zu öffnen. Wählen Sie den Abonnements-Tab aus.

Klicken Sie auf Abonnement erstellen und wählen Sie:

  • Protokoll kann E-Mail, SMS, HTTP/S, Lambda oder SQS sein.

  • Endpunkte wie E-Mail-Adresse, Telefonnummer oder URL.

Klicken Sie auf Abonnement erstellen.

3. Bestätigen Sie das Abonnement:

Wenn Sie E-Mail oder SMS ausgewählt haben, wird ein Bestätigungslink oder -code an den angegebenen Endpunkt gesendet. Befolgen Sie die Anweisungen, um das Abonnement zu bestätigen.

Jetzt, wo wir das erledigt haben, lassen Sie uns eine Amazon Lambda-Funktion erstellen, die das SNS auslöst, damit die Nachricht an Ihre E-Mail gesendet wird.

Schritt 4: Erstellen einer IAM-Richtlinie

Diese Richtlinie wird erstellt, um Amazon Lambda zu autorisieren, das Ereignis auszulösen und sicherzustellen, dass CloudWatch automatisch ausgelöst wird, um die Ereignisse der Anwendung zu überwachen.

Um eine Richtlinie zu erstellen, befolgen Sie diese Schritte:

1. Melden Sie sich bei der AWS Management Console an.

Wählen Sie im linken Menü Richtlinien. Dann:

  • Klicken Sie auf Richtlinie erstellen.

  • Wählen Sie die Registerkarte Visuell, und wählen Sie dann den Dienst SNS aus.

  • Als Nächstes klicken Sie auf die Registerkarte Auswählen, um eine benutzerdefinierte Richtlinie zu erstellen.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sns:Publish",
            "Resource": "arn:aws:sns:REGION:ACCOUNT_ID:goal_topic"
        }
    ]
}

Ersetzen Sie dann die folgenden Platzhalter durch Ihre Informationen:

  • region: Ihre AWS-Region (zum Beispiel us-east-1).

  • account-id: Ihre AWS-Konto-ID.

  • topic-name: Ihr SNS-Themenname.

2. Richtlinie anzeigen und erstellen:

Sie können dies tun, indem Sie diesen Schritten folgen:

  • Klicken Sie auf die Schaltfläche Überprüfen.

  • Geben Sie Ihrer Richtlinie einen Namen (zum Beispiel LambdaSNSPolicy) und optional eine Beschreibung.

  • Klicken Sie auf Richtlinie erstellen.

3. Richtlinie an die Lambda-Ausführungsrolle anhängen

Jetzt müssen Sie die Richtlinie an Ihre Lambda-Ausführungsrolle anhängen. Folgen Sie dazu diesen Schritten:

  • Gehen Sie zum Rollen-Abschnitt in der IAM-Konsole.

  • Suchen Sie nach und wählen Sie die Ausführungsrolle aus.

  • Suchen Sie anschließend nach der Richtlinie, die Sie gerade erstellt haben, und wählen Sie sie aus.

  • Klicken Sie auf Richtlinie anhängen.

Beide Richtlinien werden automatisch angehängt.

Schritt 5: Erstellen Sie eine Amazon Lambda-Funktion

Amazon Lambda ist ein Dienst von AWS, der es Ihnen ermöglicht, Code auszuführen, ohne Server verwalten zu müssen. Sie laden Ihren Code hoch, und Lambda führt ihn automatisch aus und skaliert ihn bei Bedarf.

Folgen Sie diesen Schritten, um eine Amazon Lambda-Funktion zu erstellen:

1. Melden Sie sich bei der AWS Management Console an:

Navigieren Sie zu AWS Lambda.

2. Erstellen Sie eine Funktion:

Klicken Sie auf Funktion erstellen und wählen Sie die Option Von Grund auf neu erstellen.

Geben Sie die Details ein:

  • Funktionsname: Geben Sie einen eindeutigen Namen ein (zum Beispiel SNSLambdaFunction).

  • Laufzeit: Wählen Sie die Laufzeit (zum Beispiel Python, Node.js, Java usw.).

  • Rolle: Wählen oder erstellen Sie eine Rolle. Wenn Sie bereits eine Rolle haben, wählen Sie Verwenden Sie eine vorhandene Rolle. Andernfalls wählen Sie Erstellen Sie eine neue Rolle mit grundlegenden Lambda-Berechtigungen.

  • Klicken Sie auf die Schaltfläche Funktion erstellen.

3. Fügen Sie den Code ein:

Gehen Sie auf der Seite der Lambda-Funktion zum Tab Konfiguration:

Denken Sie daran, dass wir versuchen, ein Zitat abzurufen. Ich werde die ARN des Themas, das wir hier erstellt haben, hinzufügen und meine API-Schlüssel einfügen. Aber für dieses Tutorial werde ich die API direkt verwenden, um die Daten abzurufen.

4. Schreiben Sie den Lambda-Code:

Gehen Sie zum Code-Tab in Ihrer Lambda-Funktion. Schreiben Sie dann den Code aus Ihrer IDE, um die eingehenden SNS-Nachrichten zu verarbeiten.

Beispiel:

Hier ist der Code:

import os
import json
import urllib.request
import boto3

def fetch_random_quote():
    """
    Fetches a random quote from the ZenQuotes API.
    """
    api_url = "https://zenquotes.io/api/random"
    try:
        with urllib.request.urlopen(api_url) as response:
            data = json.loads(response.read().decode())
            if data and isinstance(data, list):
                # Formatieren Sie das Zitat und den Autor
                quote = data[0].get("q", "No quote available")
                author = data[0].get("a", "Unknown author")
                return f'"{quote}" - {author}'
            else:
                return "No quote available."
    except Exception as e:
        print(f"Error fetching random quote: {e}")
        return "Failed to fetch quote."

def lambda_handler(event, context):
    """
    AWS Lambda handler function to fetch a random quote and publish it to an SNS topic.
    """
    # Holen Sie sich die SNS-Themen-ARN aus den Umgebungsvariablen
    sns_topic_arn = os.getenv("SNS_TOPIC_ARN")
    sns_client = boto3.client("sns")

    # Holen Sie sich ein zufälliges Zitat
    quote = fetch_random_quote()
    print(f"Fetched Quote: {quote}")

    # Veröffentlichen Sie das Zitat in SNS
    try:
        sns_client.publish(
            TopicArn=sns_topic_arn,
            Message=quote,
            Subject="Daily Random Quote to help you stay motivated and inspired to achieve your goals",
        )
        print("Quote published to SNS successfully.")
    except Exception as e:
        print(f"Error publishing to SNS: {e}")
        return {"statusCode": 500, "body": "Error publishing to SNS"}

    return {"statusCode": 200, "body": "Quote sent to SNS"}

5. Speichern:

Klicken Sie auf die Bereitstellen-Schaltfläche, um zu speichern.

6. Testen Sie Ihre Lambda-Funktion:

Gehen Sie zum Test-Tab und erstellen Sie ein neues Testereignis.

Dann speichern und führen Sie den Test aus. Wenn er erfolgreich ist, wird eine Nachricht gesendet:

Dies bedeutet, dass die Nachricht für Sie erstellt wurde

Zum Schluss überprüfen Sie Ihre E-Mail oder SMS, je nachdem, welchen Endpunkt Sie für dieses Tutorial verwendet haben. In meinem Fall habe ich E-Mail verwendet.

Schritt 6: Erstellen Sie einen EventBridge

Amazon EventBridge ist ein Dienst, der Ihnen hilft, Anwendungen und AWS-Dienste wie Amazon SNS und Amazon Lambda zu verbinden.

Um eine Amazon EventBridge-Regel zu erstellen, befolgen Sie diese Schritte:

1. Navigieren Sie zu EventBridge:

Geben Sie im Suchfeld EventBridge ein und wählen Sie es aus der Diensteliste aus.

2. Erstellen Sie eine Regel:

Im EventBridge-Konsole auf der linken Seite auf Regeln klicken. Klicken Sie dann auf die Schaltfläche Regel erstellen.

3. Regel-Details einrichten:

  • Name: Geben Sie einen eindeutigen Namen für Ihre Regel ein.

  • Beschreibung (optional): Fügen Sie eine Beschreibung hinzu, um zu erklären, was diese Regel tut.

4. Event Bus auswählen:

Wählen Sie den Standard-Event-Bus (oder einen anderen Event-Bus, wenn Sie einen erstellt haben).

5. Ereignismuster oder Zeitplan definieren:

Für Ereignismuster:

  • Wählen Sie einen AWS-Dienst als Ereignisquelle aus.

  • Wählen Sie den spezifischen Ereignistyp aus (zum Beispiel, ein S3-Datei-Upload oder eine Änderung des Zustands einer EC2-Instanz).

Für Zeitplan:

  • Wählen Sie die Zeitplan-Option, um die Regel in festgelegten Intervallen auszuführen (zum Beispiel, alle 5 Minuten).

  • Klicken Sie auf Weiter. Dies führt Sie zur spezifischen Detailseite, wo:

  • Scrollen Sie nach unten und klicken Sie auf den Cron-Zeitplaner. Der Cron-Zeitplaner legt fest, zu welcher Zeit die Nachricht gesendet wird.

  • Wählen Sie die Option „Aus“ für das flexible Zeitfenster.

  • Überprüfen Sie die Regel-Details, um sicherzustellen, dass alles korrekt ist.

  • Klicken Sie auf die Schaltfläche „Weiter“, um zur Ziel-Seite zu gelangen.

    Das obige Bild zeigt, wann die Nachrichten gesendet werden.

    • Auf der Ziel-Seite wählen Sie AWS Lambda, um Ihre Funktion aufzurufen.

  • Scrollen Sie nach unten, um die Funktion auszulösen und wählen Sie die erstellte Funktion aus.

  • Klicken Sie auf die Schaltfläche „Weiter“, um fortzufahren. Dadurch gelangen Sie zur Einstellungsseite. Wählen Sie unter dem Abschnitt Berechtigungen „Vorhandene Regel verwenden.“

  • Zuletzt gehen Sie zur Überprüfung und erstellen einen Zeitplan:

  • Auf der nächsten Seite werden Ihnen alle Details angezeigt:

Die Verwendung von EventBridge erstellt einen Zeitplan für die Benutzer.

Schritt 7: Laden Sie Ihren Code hoch

Laden Sie schließlich Ihren Code auf GitHub hoch und fügen Sie eine ordnungsgemäße Dokumentation hinzu, um zu erklären, wie der Code funktioniert.

Überprüfen Sie diese Dokumentation, wenn Sie nicht wissen, wie es geht: Ein Projekt auf GitHub hochladen.

Abschluss

Wenn Sie all diesen Schritten gefolgt sind, haben Sie eine Goal Manifestation Quote App erstellt, die AWS Lambda, Amazon S3, Amazon SNS und Amazon EventBridge verwendet. Diese App ruft motivierende Zitate ab und sendet sie an Abonnenten nach einem Zeitplan.

Sie finden den Repository-Link hier.

Teilen Sie gerne Ihren Fortschritt oder stellen Sie Fragen, wenn Sie Probleme haben.

Wenn Sie diesen Artikel hilfreich fanden, teilen Sie ihn mit anderen.

Verfolgen Sie meine Projekte, indem Sie mir auf Twitter, LinkedIn und GitHub folgen

.Vielen Dank fürs Lesen 💖.

Haftungsausschluss:
Die in diesem Artikel gezeigten Ressourcen, einschließlich des S3-Buckets und seiner ARN, wurden gelöscht und existieren nicht mehr. Die Details in den Screenshots dienen ausschließlich Demonstrationszwecken.