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 die Tabelle Rides auf und geben Sie ihr 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. Geben Sie der Tabelle den Namen RidesBitte beachten Sie die Groß- und Kleinschreibung.

    4. Geben Sie RideId als Partitionsschlüssel ein und wählen Sie String für den Schlüsseltyp aus. 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. Geben Sie WildRydesLambda als Namen ein und wählen Sie als Rollentyp AWS Lambda 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 dieser Rolle die verwaltete Richtlinie AWSLambdaBasicExecutionRole hinzu, um die erforderlichen Berechtigungen für CloudWatch Logs zu erteilen. Erstellen Sie außerdem eine benutzerdefinierte Inline-Richtlinie für Ihre Rolle, die die Aktion ddb:PutItem für die Tabelle zulässt, 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 Lambda für den Rollentyp aus der Gruppe AWS-Service aus und klicken Sie dann auf Weiter: Berechtigungen.

      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. Geben Sie AWSLambdaBasicExecutionRole in das Textfeld Filter ein und aktivieren Sie das Kontrollkästchen neben dieser Rolle.

    5. Wählen Sie Nächster Schritt.

    6. Geben Sie WildRydesLambda als Rollennamen ein.

    7. Wählen Sie Rolle erstellen.

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

    9. Wählen Sie auf der Registerkarte Berechtigungen den Link Inline-Richtlinie hinzufügen in der unteren rechten Ecke aus, um eine neue Inline-Richtlinie zu erstellen.

    10. Wählen Sie Einen Service auswählen aus.

    11. Geben Sie DynamoDB in das Suchfeld Service suchen ein und wählen Sie DynamoDB aus, sobald es angezeigt wird.

    12. Wählen Sie Aktionen auswählen aus.

    13. Geben Sie PutItem in das Suchfeld Filteraktionen ein und aktivieren Sie das Kontrollkästchen neben PutItem, sobald es angezeigt wird.

    14. Wählen Sie den Abschnitt Ressourcen aus. 

    15. Wenn die Option Spezifisch ausgewählt ist, wählen Sie den Link "ARN hinzufügen" im Abschnitt Tabelle aus.

    16. Fügen Sie die ARN der Tabelle, die Sie im vorhergehenden Abschnitt erstellt haben, in das Feld ARN für Tabelle festlegen ein und wählen Sie Hinzufügen aus.

    17. Wählen Sie Prüfrichtlinie aus.

    18. Geben Sie DynamoDBWriteAccess als Namen für die Richtlinie ein und wählen Sie Richtlinie erstellen aus.

  • 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 die API-Anfragen verarbeitet. 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.

    Stellen Sie sicher, 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 aus.

    2. Klicken Sie auf Funktion erstellen.

    3. Behalten Sie die Auswahl der Standardkarte Neu erstellen bei.

    4. Geben Sie RequestUnicorn in das Feld Name ein.

    5. Wählen Sie Node.js 6.10 bei Laufzeit aus.

    6. Stellen Sie sicher, dass Wählen Sie eine existierende Rolle im Dropdown-Menü Rolle ausgewählt ist.

    7. Wählen Sie WildRydesLambda aus dem Dropdown-Menü Bestehende Rolle aus.

    8. Klicken Sie auf Funktion erstellen.

    9. Scrollen Sie nach unten zum Abschnitt Funktionscode und ersetzen Sie den auslaufenden Code im Code-Editor index.js durch den Inhalt von requestUnicorn.js.

    10. Klicken Sie auf "Speichern" in der oberen rechten Ecke der Seite.

  • 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 im Hauptbearbeitungsbildschirm der Funktion die Option Testereignis konfigurieren aus der Dropdown-Liste Testereignis auswählen... aus.

    2. Behalten Sie die Auswahl von Neues Testereignis erstellen bei.

    3. Geben Sie TestRequestEvent im Feld Ereignisname ein.

    4. 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. Klicken Sie auf Erstellen.

    2. Klicken Sie im Hauptfunktionsbearbeitungsbildschirm auf Test und stellen Sie sicher, dass TestRequestEvent in der Dropdown-Liste ausgewählt ist.

    3. Scrollen Sie zum Seitenanfang und erweitern Sie den Abschnitt Details des Abschnitts Ausführungsergebnis.

    4. Ü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": "*"
        }
    }