In diesem Modul verwenden Sie AWS Lambda und Amazon DynamoDB, um für Ihre Webanwendung einen Backend-Prozess für die Bearbeitung von Anforderungen zu erstellen. Mit der Browseranwendung, die Sie im ersten Modul bereitgestellt haben, können Benutzer darum bitten, dass ein Unicorn an einen Ort ihrer Wahl gesendet wird. Um diese Anforderungen zu erfüllen, muss das im Browser ausgeführte JavaScript einen in der Cloud ausgeführten Dienst aufrufen.

Serverless_Web_App_LP_assets-04

Sie implementieren eine Lambda-Funktion, die jedes Mal aufgerufen wird, wenn ein Benutzer ein Unicorn anfordert. Die Funktion wählt ein Unicorn aus der Flotte aus, zeichnet die Anforderung in einer DynamoDB-Tabelle auf und übergibt dann die Details zum entsandten Unicorn an die Frontend-Anwendung.

Die Funktion wird über Amazon API Gateway vom Browser aus aufgerufen. Sie implementieren diese Verbindung im nächsten Modul. In diesem Modul testen Sie einfach Ihre isolierte Funktion.

Benötigte Zeit: 30 Minuten

Verwendete Services: AWS Lambda, Amazon DynamoDB


Folgen Sie der nachfolgenden Schritt-für-Schritt-Anleitung, um Ihren serverlosen Backend-Prozess zu erstellen. Klicken Sie auf jede Schrittnummer, um den Abschnitt zu erweitern.

  • Schritt 1. Erstellen einer Amazon DynamoDB-Tabelle

    Verwenden Sie die Amazon DynamoDB-Konsole, um eine neue DynamoDB-Tabelle zu erstellen. Rufen Sie Ihre Tabelle Rides auf und geben Sie ihm einen Partitionsschlüssel namens RideId mit dem Typ String. Der Tabellenname und der Partitionsschlüssel beachten die Groß- und Kleinschreibung. Stellen Sie sicher, dass Sie die korrekten IDs verwenden. Verwenden Sie für alle anderen Einstellungen die Standardeinstellungen.

    Notieren Sie nach der Erstellung der Tabelle die ARN für die Verwendung im nächsten Schritt.


    1. Wählen Sie in der AWS-Managementkonsole Services und dann unter Datenbanken DynamoDB aus.

    2. Wählen Sie Tabelle erstellen.

    3. Verwenden Sie Rides als Tabellennamen. Bitte beachten Sie die Groß- und Kleinschreibung.

    4. Verwenden Sie RideId als Partitionsschlüssel und wählen Sie String für den Schlüsseltyp. Bitte beachten Sie die Groß- und Kleinschreibung.

    5. Aktivieren Sie das Kontrollkästchen Standardeinstellungen verwenden und wählen Sie Erstellen.

    6. Scrollen Sie ans Ende des Übersichtsbereichs Ihrer neuen Tabelle und notieren Sie die ARN. Sie verwenden diese im nächsten Abschnitt.

  • Schritt 2. Erstellen einer IAM-Rolle für Ihre Lambda-Funktion

    Jeder Lambda-Funktion ist eine IAM-Rolle zugeordnet. Diese Rolle definiert, mit welchen anderen AWS-Services die Funktion interagieren darf. Für die Zwecke dieses Workshops müssen Sie eine IAM-Rolle erstellen, die Ihrer Lambda-Funktion die Berechtigung erteilt, Protokolle in Amazon CloudWatch Logs zu schreiben und auf Elemente in Ihrer DynamoDB-Tabelle zuzugreifen.

    Verwenden Sie die IAM-Konsole, um eine neue Rolle zu erstellen. Nennen Sie sie WildRydesLambda und wählen Sie AWS Lambda für den Rollentyp aus. Sie müssen Richtlinien anfügen, die Ihren Funktionen Berechtigungen zum Schreiben in Amazon CloudWatch Logs und zum Einfügen von Elementen in Ihre DynamoDB-Tabelle erteilen.

    Fügen Sie der verwalteten Richtlinie namens AWSLambdaBasicExecutionRole dieser Rolle bei, um die erforderlichen Berechtigungen für CloudWatch Logs zu erteilen. Erstellen Sie außerdem eine benutzerdefinierte Inline-Richtlinie für Ihre Rolle, die Aktion ddb:PutItem für die Tabelle ermöglicht, die Sie im vorherigen Abschnitt erstellt haben.


    1. Klicken Sie in der AWS-Managementkonsole auf Services und wählen Sie dann IAM im Abschnitt Sicherheit, Identität und Compliance.

    2. Wählen Sie Rollen in der linken Navigationsleiste und dann Neue Rolle erstellen.

    3. Wählen Sie AWS Lambda für den Rollentyp aus.

      Hinweis: Wenn Sie einen Rollentyp auswählen, wird für Ihre Rolle automatisch eine Vertrauensrichtlinie erstellt, über die AWS-Services diese Rolle in Ihrem Namen übernehmen können. Wenn Sie diese Rolle mit der CLI, AWS CloudFormation oder einem anderen Mechanismus erstellen, geben Sie direkt eine Vertrauensrichtlinie an.

    4. Beginnen Sie, AWSLambdaBasicExecutionRole in das Textfeld Filter einzutragen und aktivieren Sie das Kontrollkästchen neben dieser Rolle.

    5. Wählen Sie Nächster Schritt.

    6. Verwenden Sie WildRydesLambda als Rollennamen.

    7. Wählen Sie Rolle erstellen.

    8. Tragen Sie WildRydesLambda in das Filterfeld auf der Seite der Rollen ein und wählen Sie die soeben erstellte Rolle aus.

    9. Erweitern Sie auf der Registerkarte Berechtigungen den Abschnitt Inline-Richtlinien und wählen Sie die Verknüpfung Hier klicken, um eine neue Inline-Richtlinie zu erstellen.

    10. Stellen Sie sicher, dass Richtliniengenerator ausgewählt ist und wählen Sie Auswählen.

    11. Wählen Sie Amazon DynamoDB aus der Dropdown-Liste AWS-Service aus.

    12. Wählen Sie PutItem aus der Aktionenliste aus.

    13. Fügen Sie die ARN der Tabelle, die Sie im vorherigen Abschnitt erstellt haben, in das Feld Amazon-Ressourcenname (ARN) ein.

    14. Wählen Sie Anweisung hinzufügen.

    15. Wählen Sie Nächster Schritt und dann Richtlinie anwenden.

  • Schritt 3. Erstellen einer Lambda-Funktion für die Bearbeitung von Anfragen

    AWS Lambda führt Ihren Code als Reaktion auf Ereignisse wie eine HTTP-Anforderung aus. In diesem Schritt erstellen Sie die Kernfunktion, die API-Anforderungen von der Webanwendung verarbeitet, um ein Unicorn loszuschicken. Im nächsten Modul verwenden Sie Amazon API Gateway, um eine RESTful API zu erstellen, die einen HTTP-Endpunkt verfügbar macht, der von den Browsern Ihrer Benutzer aufgerufen werden kann. Sie verbinden dann die Lambda-Funktion, die Sie in diesem Schritt erstellen, mit dieser API, um ein voll funktionsfähiges Backend für Ihre Webanwendung zu erstellen.

    Verwenden Sie die AWS Lambda-Konsole, um eine neue Lambda-Funktion namens RequestUnicorn zu erstellen, die API-Anfragen verarbeiten wird. Verwenden Sie für Ihren Funktionscode die angegebene Beispielimplementierung requestUnicorn.js. Kopieren Sie ihn einfach aus dieser Datei heraus und fügen Sie ihn in den Editor der AWS Lambda-Konsole ein.

    Achten Sie darauf, dass Sie Ihre Funktion so konfigurieren, dass sie die IAM-Rolle WildRydesLambda verwendet, die Sie im vorherigen Abschnitt erstellt haben.


    1. Wählen Sie Services und dann im Abschnitt Berechnen Lambda.

    2. Wählen Sie Funktion erstellen.

    3. Wählen Sie Vollkommen neu erstellen.

    4. Verwenden Sie RequestUnicorn ins Feld Name ein.

    5. Wählen Sie WildRydesLambda aus der Dropdown-Liste Vorhandene Rolle aus.

    6. Wählen Sie Funktion erstellen.

    7. Kopieren Sie den Code aus requestUnicorn.js und fügen Sie ihn in den Eingabebereich für den Code ein.

    8. Stellen Sie sicher, dass Node.js 6.10 unter Laufzeit ausgewählt ist.

    9. Behalten Sie die Standardeinstellung index.handler für das Handler-Feld.

  • Schritt 4. Ihre Implementierung prüfen

    In diesem Modul testen Sie die Funktion, die Sie mit der AWS Lambda-Konsole erstellt haben. Im nächsten Modul fügen Sie mit API Gateway eine REST API hinzu, damit Sie Ihre Funktion über die browserbasierte Anwendung aufrufen können, die Sie im ersten Modul implementiert haben.


    1. Wählen Sie das Dropdown-Menü Testereignis auswählen und anschließend Testereignis konfigurieren.

    2. Kopieren Sie das folgende Testereignis und fügen Sie es in den Editor ein:

    {
        "path": "/ride",
        "httpMethod": "POST",
        "headers": {
            "Accept": "*/*",
            "Authorization": "eyJraWQiOiJLTzRVMWZs",
            "content-type": "application/json; charset=UTF-8"
        },
        "queryStringParameters": null,
        "pathParameters": null,
        "requestContext": {
            "authorizer": {
                "claims": {
                    "cognito:username": "the_username"
                }
            }
        },
        "body": "{\"PickupLocation\":{\"Latitude\":47.6174755835663,\"Longitude\":-122.28837066650185}}"
    }
    1. Geben Sie einen Ereignisnamen ein, wählen Sie Erstellen und dann Testen.

    2. Überprüfen Sie, ob die Ausführung erfolgreich war und das Funktionsergebnis wie folgt aussieht:

    {
        "statusCode": 201,
        "body": "{\"RideId\":\"SvLnijIAtg6inAFUBRT+Fg==\",\"Unicorn\":{\"Name\":\"Rocinante\",\"Color\":\"Yellow\",\"Gender\":\"Female\"},\"Eta\":\"30 seconds\"}",
        "headers": {
            "Access-Control-Allow-Origin": "*"
        }
    }