Erste Schritte / Praktische Übungen / ...
Erste Schritte mit AWS
Erstellen einer Serverless-Webanwendung
mit AWS Lambda, Amazon API Gateway, AWS Amplify, Amazon DynamoDB und Amazon Cognito

Modul 3: Erstellen eines Serverless-Backends
Sie verwenden AWS Lambda und Amazon DynamoDB, um einen Backend-Prozess zum Verarbeiten von Anforderungen für Ihre Webanwendung zu erstellen.
Übersicht
In diesem Modul verwenden Sie AWS Lambda und Amazon DynamoDB, um einen Backend-Prozess zum Verarbeiten von Anforderungen für Ihre Webanwendung zu erstellen. Die Browseranwendung, die Sie im ersten Modul bereitgestellt haben, ermöglicht es Benutzern, anzufordern, dass ein Einhorn an einen Ort ihrer Wahl geschickt wird. Damit diese Anforderungen erfüllt werden können, muss das im Browser ausgeführte JavaScript einen in der Cloud ausgeführten Service aufrufen.
Übersicht über die Architektur

Sie implementieren eine Lambda-Funktion, die jedes Mal aufgerufen wird, wenn ein Benutzer ein Einhorn anfordert. Die Funktion wählt ein Einhorn aus der Flotte aus, hält die Anforderung in einer DynamoDB-Tabelle fest und sendet anschließend eine Antwort an die Front-End-Anwendung mit Details zum bereitgestellten Einhorn.
Die Funktion wird im Browser mithilfe von Amazon API Gateway aufgerufen. Sie implementieren diese Verbindung im nächsten Modul. In diesem Modul testen Sie Ihre Funktion isoliert.
Veranschlagte Zeit
30 Minuten
Verwendete Services
Implementierung
-
Erstellen einer Amazon DynamoDB-Tabelle
Verwenden Sie die Amazon DynamoDB-Konsole, um eine neue DynamoDB-Tabelle zu erstellen. Nennen Sie die Tabelle Rides und geben Sie ihr einen Partitionsschlüssel namens RideId mit dem Typ „Zeichenfolge“. Beim Namen der Tabelle und dem Partitionsschlüssel muss die Groß- und Kleinschreibung beachtet werden. Stellen Sie sicher, dass Sie die exakten IDs wie angegeben verwenden. Verwenden Sie für die anderen Einstellungen die Standardwerte.
Notieren Sie sich nach dem Erstellen der Tabelle die ARN, die Sie im nächsten Schritt benötigen.
a. Wählen Sie in der AWS-Managementkonsole Services und dann unter „Datenbanken“ die Option DynamoDB aus.
b. Wählen Sie Tabelle erstellen.
c. Geben Sie Rides als Tabellennamen ein. Bitte beachten Sie die Groß- und Kleinschreibung.
d. Geben Sie RideId als Partitionsschlüssel ein und wählen Sie Zeichenfolge als Schlüsseltyp aus. Bitte beachten Sie die Groß- und Kleinschreibung.
e. Deaktivieren Sie das Kontrollkästchen Standardeinstellungen verwenden und wählen Sie Erstellen.
f. Scrollen Sie im Übersichtsbereich Ihrer neuen Tabelle nach unten und notieren Sie sich die ARN. Sie benötigen diese im nächsten Abschnitt.
-
Erstellen einer IAM-Rolle für Ihre Lambda-Funktion
Jeder Lambda-Funktion ist eine IAM-Rolle zugeordnet. Die Rolle definiert, mit welchen anderen AWS-Services die Funktion interagieren darf. Für diesen Workshop müssen Sie eine IAM-Rolle erstellen, die Ihrer Lambda-Funktion Berechtigungen zum Schreiben von Protokollen in Amazon CloudWatch Logs und Zugriff zum Schreiben von Elementen in Ihre DynamoDB-Tabelle erteilt.
Erstellen Sie mit der IAM-Konsole eine neue Rolle. Geben Sie WildRydesLambda als Namen ein und wählen Sie AWS Lambda als 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 dieser Rolle die verwaltete Richtlinie AWSLambdaBasicExecutionRole an, 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.
a. Klicken Sie in der AWS-Managementkonsole auf Services und wählen Sie anschließend im Abschnitt „Identität und Compliance“ die Option IAM.
b. Wählen Sie im linken Navigationsbereich Rollen und dann Neue Rolle erstellen.
c. Wählen Sie Lambda für den Rollentyp aus der Gruppe AWS-Service aus und klicken Sie dann auf Weiter: Berechtigungen.
Hinweis: Durch das Auswählen einer Rolle wird automatisch eine Vertrauensrichtlinie für Ihre Rolle erstellt, mit der AWS-Services diese Rolle in Ihrem Auftrag übernehmen dürfen. Wenn Sie diese Rolle mit der CLI, AWS CloudFormation oder einem anderen Mechanismus erstellt haben, geben Sie direkt eine Vertrauensrichtlinie an.
d. Geben Sie AWSLambdaBasicExecutionRole in das Textfeld Filter ein und aktivieren Sie das Kontrollkästchen neben dieser Rolle.
e. Klicken Sie auf Nächster Schritt.
f. Geben Sie WildRydesLambda als Rollennamen ein.
g. Wählen Sie Rolle erstellen.
h. Geben Sie WildRydesLambda in das Filterfeld auf der Seite der Rollen ein und wählen Sie die soeben erstellte Rolle aus.
i. 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.
j. Wählen Sie Einen Service auswählen.
k. Geben Sie DynamoDB in das Suchfeld Service suchen ein und wählen Sie DynamoDB aus, sobald es angezeigt wird.
l. Wählen Sie Aktionen auswählen.
m. Geben Sie PutItem in das Suchfeld Aktionen filtern ein und aktivieren Sie das Kontrollkästchen neben PutItem, sobald es angezeigt wird.
n. Wählen Sie den Abschnitt Ressourcen aus.
o. Wenn die Option Spezifisch ausgewählt ist, wählen Sie den Link „ARN hinzufügen“ im Abschnitt Tabelle.
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.
q. Wählen Sie Richtlinie überprüfen aus.
r. Geben Sie DynamoDBWriteAccess als Namen für die Richtlinie ein und wählen Sie Richtlinie erstellen.
-
Erstellen einer Lambda-Funktion zum Verarbeiten von Anforderungen
AWS Lambda führt Ihren Code als Reaktion von Ereignissen wie etwa eine HTTP-Anforderung aus. In diesem Schritt erstellen Sie die Kernfunktion, die API-Anforderungen von der Webanwendung zum Bereitstellen eines Einhorns verarbeitet. Im nächsten Modul verwenden Sie Amazon API Gateway zum Erstellen einer RESTful API, die einen HTTP-Endpunkt bereitstellt, der über die Browser Ihrer Benutzer aufgerufen werden kann. Anschließend verbinden Sie die in diesem Schritt erstellte Lambda-Funktion mit der API, um ein vollständig 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 die bereitgestellte Beispielimplementierung requestUnicorn.js für Ihren Funktionscode. Kopieren Sie sie einfach aus der Datei und fügen Sie sie im 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.
a. Wählen Sie Services und dann im Abschnitt „Berechnen“ die Option Lambda.
b. Klicken Sie auf Funktion erstellen.
c. Behalten Sie die Auswahl der Standardkarte Von Grund auf neu erstellen bei.
d. Geben Sie RequestUnicorn in das Feld Name ein.
e. Wählen Sie Node.js 6.10 für Laufzeit aus.
f. Stellen Sie sicher, dass Vorhandene Rolle wählen im Dropdown-Menü Rolle ausgewählt ist.
g. Wählen Sie WildRydesLambda aus dem Dropdown-Menü Vorhandene Rolle aus.
h. Klicken Sie auf Funktion erstellen.
i. Scrollen Sie nach unten zum Abschnitt Funktionscode und ersetzen Sie den auslaufenden Code im Code-Editor index.js durch den Inhalt von requestUnicorn.js.
j. Klicken Sie in der oberen rechten Ecke der Seite auf Speichern.
-
Überprüfen der Implementierung
In diesem Modul testen Sie die Funktion, die Sie mithilfe der AWS Lambda-Konsole erstellt haben. Im nächsten Modul fügen Sie eine REST API mit API Gateway hinzu, damit Sie Ihre Funktion über die browserbasierte Anwendung aufrufen können, die Sie im ersten Modul bereitgestellt haben.
a. Wählen Sie im Hauptbearbeitungsbildschirm der Funktion die Option Testereignis konfigurieren aus der Dropdown-Liste Testereignis auswählen... aus.
b. Behalten Sie die Auswahl von Neues Testereignis erstellen bei.
c. Geben Sie TestRequestEvent im Feld Ereignisname ein.
d. 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}}" }
e. Klicken Sie auf Erstellen.
f. Klicken Sie im Hauptfunktionsbearbeitungsbildschirm auf Testen und stellen Sie sicher, dass TestRequestEvent in der Dropdown-Liste ausgewählt ist.
g. Scrollen Sie zum Seitenanfang und erweitern Sie den Abschnitt Details des Abschnitts Ausführungsergebnis.
h. Überprüfen Sie, ob die Ausführung erfolgreich war und die Funktionsergebnisse folgendermaßen aussehen:
{ "statusCode": 201, "body": "{\"RideId\":\"SvLnijIAtg6inAFUBRT+Fg==\",\"Unicorn\":{\"Name\":\"Rocinante\",\"Color\":\"Yellow\",\"Gender\":\"Female\"},\"Eta\":\"30 seconds\"}", "headers": { "Access-Control-Allow-Origin": "*" } }