AWS Cloud9 ist für Neukunden nicht mehr verfügbar. Bestandskunden von AWS Cloud9 können den Service weiterhin wie gewohnt nutzen. Weitere Informationen
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Arbeiten AWS SAM mit dem AWS Toolkit
Das AWS Toolkit bietet Unterstützung für serverlose
Erstellen einer serverless Anwendung
Dieses Beispiel zeigt, wie Sie das AWS Toolkit verwenden, um eine serverlose Anwendung zu erstellen. Informationen zum Ausführen und Debuggen von Serverless-Anwendungen finden Sie unter Testen und Debuggen von serverless Anwendungen.
Zu den notwendigen Voraussetzungen für die Erstellung einer serverlosen Anwendung gehören die und die AWS SAM CLI. AWS CLI Diese sind in enthalten. AWS Cloud9 Wenn AWS SAM CLI es nicht installiert oder veraltet ist, müssen Sie möglicherweise eine Installation oder ein Upgrade durchführen. Anweisungen zur Installation AWS SAM CLI finden Sie unter Installation von AWS SAM CLI und Anweisungen zum Upgrade von finden Sie unter Aktualisieren von AWS SAM CLI. AWS SAM CLI
Erstellen einer serverless Anwendung mit dem AWS Toolkit
-
Öffnen Sie im AWS Explorer das Kontextmenü (Rechtsklick) für den Lambda-Knoten und wählen Sie dann SAMLambda-Anwendung erstellen.
Anmerkung
Alternativ können Sie das Menüsymbol gegenüber der Überschrift AWS: Explorer auswählen und SAMLambda-Anwendung erstellen auswählen.
-
Wählen Sie die Laufzeit für Ihre SAM Anwendung aus. Wählen Sie in diesem Beispiel nodejs12.x.
Anmerkung
Wenn Sie eine der Laufzeiten mit „(Image)“ auswählen, ist Ihre Anwendung Pakettyp
Image
. Wenn Sie eine der Laufzeiten ohne „(Image)“ auswählen, ist Ihre Anwendung der TypZip
. Für weitere Informationen zu den Unterschieden zwischenImage
undZip
Pakettypen finden Sie unter Lambda-Bereitstellungspakete im AWS Lambda Entwicklerhandbuch. -
Wählen Sie eine der folgenden Vorlagen für Ihre Serverless-App aus:
-
AWS SAM Hello World: Eine einfache Vorlage mit einer Lambda-Funktion, die die klassische „Hello World“ -Meldung zurückgibt.
-
AWS Step Functions Beispiel-App: Eine Beispielanwendung, die einen Aktienhandels-Workflow ausführt. Schrittfunktionen orchestrieren die Interaktionen der beteiligten Lambda Funktionen.
-
-
Wählen Sie einen Speicherort für Ihr neues Projekt aus. Wenn verfügbar, können Sie einen vorhandenen Workspace-Ordner auswählen. Andernfalls suchen Sie nach einem anderen Ordner. Wenn Sie auf Select a different folder (Einen anderen Ordner auswählen) klicken, wird ein Dialogfeld angezeigt, in dem Sie einen Ordnerspeicherort festlegen können.
-
Geben Sie einen Namen für Ihre Anwendung ein. Wählen Sie für dieses Beispiel
my-sam-app-nodejs
. Nachdem Sie die Eingabetaste gedrückt haben, benötigt das AWS Toolkit einen Moment, um das Projekt zu erstellen.
Wenn das Projekt erstellt wurde, können Sie die Dateien Ihrer Anwendung im Fenster Umgebung anzeigen. Dieser wird im Explorer-Fenster aufgelistet.
Testen und Debuggen von serverless Anwendungen
Sie können das AWS Toolkit verwenden, um zu konfigurieren, wie serverlose Anwendungen debuggt und lokal in Ihrer Entwicklungsumgebung ausgeführt werden. Sie können eine serverlose Anwendung debuggen, die durch eine Vorlage () definiert ist. AWS Serverless Application Model AWS SAM Diese Vorlage verwendet eine einfache YAML Syntax, um Ressourcen wie FunktionenAPIs, Datenbanken und Zuordnungen von Ereignisquellen zu beschreiben, aus denen eine serverlose Anwendung besteht.
Einen genaueren Blick auf die AWS SAM Vorlage finden Sie in der Anatomie der AWS SAM Vorlage im Entwicklerhandbuch.AWS Serverless Application Model
Alternativ können Sie serverlose Anwendungen, die keiner Vorlage zugewiesen wurden, schnell debuggen. SAM
Sie beginnen mit der Konfiguration des Debug-Verhaltens, indem Sie Inline-Aktionen verwenden, um eine geeignete Funktion zu identifizieren. AWS Lambda Um die durch die SAM Vorlage definierte Infrastruktur zu verwenden, verwenden Sie die Inline-Aktion in der entsprechenden YAML -formatierten Datei. Um die Funktion direkt ohne Vorlage zu testen, verwenden Sie den kontextbezogenen Link für den Lambda Handler in der Anwendungsdatei.
Anmerkung
In diesem Beispiel debuggen wir eine Anwendung, die verwendet. JavaScript Sie können jedoch die im AWS Toolkit verfügbaren Debugging-Funktionen in den folgenden Sprachen und Laufzeiten verwenden:
-
JavaScript — Node.js 10. x, 12. x, 14. x
-
Python — 3.7, 3.8, 3.9, 3.10 (Serverlose Python 2.7- und 3.6-Anwendungen können mit dem Toolkit ausgeführt, aber nicht debuggt werden.) AWS
Ihre Sprachauswahl wirkt sich auch auf die Art und Weise aus, wie kontextbezogene Links auf berechtigte Lambda Handler hinweisen. Weitere Informationen finden Sie unter Ausführen und Debuggen von serverless Funktionen direkt aus dem Code.
Verwenden von SAM Vorlagen zum Ausführen und Debuggen serverloser Anwendungen
Bei Anwendungen, die mithilfe einer SAM Vorlage ausgeführt und debuggt werden, beschreibt eine YAML -formatierte Datei das Verhalten der Anwendung und die Ressourcen, die sie verwendet. Wenn Sie mit dem AWS Toolkit eine serverlose Anwendung erstellen, template.yaml
wird automatisch eine Datei mit dem Namen für Ihr Projekt generiert.
In diesem Verfahren verwenden Sie die Beispielanwendung, die in Erstellen einer serverless Anwendung erstellt wurde.
Um eine SAM Vorlage zum Ausführen und Debuggen einer serverlosen Anwendung zu verwenden
-
Um Ihre Anwendungsdateien anzuzeigen, aus denen Ihre serverless Anwendung besteht, rufen Sie das Fenster Environment (Umgebung) auf.
-
Öffnen Sie die
template.yaml
Datei im Anwendungsordner (z. B. my-sample-app). -
Wählen Sie für
template.yaml
die Option Edit Launch Configuration (Startkonfiguration bearbeiten) aus.Ein neuer Editor zeigt die
launch.json
-Datei, die eine Debugging-Konfiguration mit Standardattributen bereitstellt. -
Bearbeiten oder bestätigen Sie Werte für die folgenden Konfigurationseigenschaften:
-
"name"
– Geben Sie einen leserfreundlichen Namen ein, der in der im Dropdown-Feld Configuration (Konfiguration) der Ansicht Run (Ausführen) angezeigt wird. -
"target"
– Vergewissern Sie sich, dass der Wert"template"
ist. Auf diese Weise ist die SAM Vorlage der Einstiegspunkt für die Debug-Sitzung. -
"templatePath"
— Geben Sie einen relativen oder absoluten Pfad für die Dateitemplate.yaml
an. -
"logicalId"
— Stellen Sie sicher, dass der Name mit dem Namen übereinstimmt, der im Abschnitt Ressourcen der SAM Vorlage angegeben ist. In diesem Fall handelt es sich um denHelloWorldFunction
vom TypAWS::Serverless::Function
.
Weitere Informationen zu diesen und anderen Einträgen in
launch.json
finden Sie in Konfigurationsoptionen für das Debuggen von serverless Anwendungen. -
-
Wenn Sie mit Ihrer Debug-Konfiguration zufrieden sind, speichern Sie
launch.json
. Wählen Sie dann die grüne Schaltfläche „Abspielen“ neben, um mit dem Debuggen RUNzu beginnen.Anmerkung
Wenn Ihre SAM Anwendung nicht ausgeführt werden kann, überprüfen Sie im Ausgabefenster, ob der Fehler durch ein Docker-Image verursacht wird, das nicht erstellt wird. Sie müssen möglicherweise Speicherplatz in Ihrer Umgebung freigeben.
Weitere Informationen finden Sie unter Fehler beim lokalen Ausführen von SAM Anwendungen im AWS Toolkit, da die AWS Cloud9 Umgebung nicht über genügend Festplattenspeicher verfügt.
Wenn die Debugging-Sitzungen gestartet werden, zeigt das DEBUGCONSOLEPanel die Debugging-Ausgabe und alle Werte an, die von der Lambda-Funktion zurückgegeben werden. Beim Debuggen von SAM Anwendungen wird das AWS Toolkit im Bedienfeld „Ausgabe“ als Ausgabekanal ausgewählt.
Anmerkung
Wenn bei diesem Vorgang ein Docker-Mounting-Fehler auftritt, müssen Windows-Benutzer die Anmeldeinformationen für ihre freigegebenen Laufwerke in Docker Settings (Docker-Einstellungen) möglicherweise aktualisieren. Ein Docker-Mounting-Fehler sieht etwa folgendermaßen aus.
Fetching lambci/lambda:nodejs10.x Docker container image...... 2019-07-12 13:36:58 Mounting C:\Users\<username>\AppData\Local\Temp\ ... as /var/task:ro,delegated inside runtime container Traceback (most recent call last): ...requests.exceptions.HTTPError: 500 Server Error: Internal Server Error ...
Ausführen und Debuggen von serverless Funktionen direkt aus dem Code
Beim Testen der AWS SAM Anwendung können Sie wählen, ob nur die Lambda-Funktion ausgeführt und debuggt werden soll. Schließen Sie andere Ressourcen aus, die durch die SAM Vorlage definiert sind. Bei diesem Ansatz wird eine Inline-Aktion verwendet, um Lambda-Funktionshandler im Quellcode zu identifizieren, der direkt aufgerufen werden kann.
Die Lambda Handler, die von kontextbezogenen Links erkannt werden, hängen von der Sprache und der Laufzeit ab, die Sie für Ihre Anwendung verwenden.
Sprache/Laufzeit | Bedingungen für Lambda Funktionen, die durch kontextbezogene Links identifiziert werden |
---|---|
JavaScript (Node.js 10.x, 12.x und 14.x) |
Die Suchfunktion bietet zudem die folgenden Funktionen:
|
Python (3.7, 3.8, 3.9 und 3.10) |
Die Suchfunktion bietet zudem die folgenden Funktionen:
|
So führen und debuggen Sie eine serverless Anwendung direkt aus dem Anwendungscode
-
Wenn Sie Serverless-Anwendungsdateien anzeigen möchten, navigieren Sie zum Anwendungsordner, indem Sie das Ordnersymbol neben dem Editor auswählen.
-
Erweitern Sie im Anwendungsordner (z. B. my-sample-app) den Funktionsordner (in diesem Beispiel hello-world) und öffnen Sie die Datei.
app.js
-
Wählen Sie in der Inline-Aktion, die eine berechtigte Lambda Handler-Funktion identifiziert,
Add Debug Configuration
aus. Wenn die Option zum Hinzufügen einer Debug-Konfiguration nicht angezeigt wird, müssen Sie CodeLenses aktivieren. Informationen zum Aktivieren von Code Lenses finden Sie unter AWS Toolkit-Codelinsen aktivieren . -
Wählen Sie die Laufzeit aus, in der Ihre SAM Anwendung ausgeführt wird.
-
Klicken Sie im Editor für die Datei
launch.json
, bearbeiten oder bestätigen Sie Werte für die folgenden Konfigurationseigenschaften:-
"name"
— Geben Sie einen leserfreundlichen Namen ein. -
"target"
— Stellen Sie sicher, dass der Wert"code"
ist, sodass ein Lambda Funktionshandler direkt aufgerufen wird. -
"lambdaHandler"
– Geben Sie den Namen der Methode innerhalb Ihres Codes ein, die die Lambda-Funktion zum Ausführen Ihrer Funktion aufruft. Für Anwendungen in JavaScript ist die Standardeinstellung beispielsweiseapp.lambdaHandler
. -
"projectRoot"
— Geben Sie den Pfad zur Anwendungsdatei ein, die die Lambda -Funktion enthält. -
"runtime"
– Geben Sie eine gültige Laufzeit für die Lambda-Ausführungsumgebung ein oder bestätigen Sie diese (z. B."nodejs.12x"
). -
"payload"
— Wählen Sie eine der folgenden Optionen zum Definieren der Ereignis-Nutzlast aus, die Sie Ihrer Lambda -Funktion als Eingabe bereitstellen möchten:-
"json"
: JSON -formatierte Schlüssel-Wert-Paare, die die Nutzlast des Ereignisses definieren. -
"path"
: Ein Pfad zu der Datei, die als Ereignisnutzlast verwendet wird.
-
-
-
Wenn Sie mit der Debug-Konfiguration zufrieden sind, klicken Sie auf den grünen Wiedergabepfeil neben, um mit dem Debuggen zu beginnen. RUN
Wenn die Debugging-Sitzungen gestartet werden, zeigt das DEBUGCONSOLEPanel die Debugging-Ausgabe und alle Werte an, die von der Lambda-Funktion zurückgegeben werden. Beim Debuggen von SAM Anwendungen wird AWS Toolkit im Bedienfeld „Ausgabe“ als Ausgabekanal ausgewählt.
Anmerkung
Wenn Docker in Fehlermeldungen erwähnt wird, lesen Sie diesen Hinweis.
Lokale Amazon API Gateway-Ressourcen ausführen und debuggen
Sie können lokale AWS SAM API Gateway-Ressourcen ausführen oder debuggen, die in angegeben sind. template.yaml
Führen Sie dazu eine AWS Cloud9 Startkonfiguration von type=aws-sam
mit dem invokeTarget.target=api
aus.
Anmerkung
APIGateway unterstützt zwei Typen vonAPIs. Sie sind REST und HTTPAPIs. Die API Gateway-Funktion mit dem AWS Toolkit unterstützt REST APIs jedoch nur. Manchmal HTTP APIs werden sie „APIGateway V2" genanntAPIs.
Um lokale API Gateway-Ressourcen auszuführen und zu debuggen
-
Wählen Sie einen der folgenden Ansätze, um eine Startkonfiguration für eine AWS SAM API Gateway-Ressource zu erstellen:
-
Option 1: Rufen Sie den Handler-Quellcode (insbesondere die .js-, .cs- oder .py-Datei) in Ihrem AWS SAM -Projekt auf. Bewegen Sie den Mauszeiger über den Lambda-Handler und wählen Sie Add Debug Configuration (Debug-Konfiguration hinzufügen) aus. Wenn die Option zum Hinzufügen einer Debug-Konfiguration nicht angezeigt wird, müssen Sie CodeLenses aktivieren. Informationen zum Aktivieren von CodeLenses finden Sie unter AWS Toolkit-Codelinsen aktivieren .) Wählen Sie dann im Menü den Eintrag mit der Bezeichnung API Event aus.
-
Option 2 Bearbeiten
launch.json
und erstellen Sie eine neue Startkonfiguration mithilfe der folgenden Syntax.{ "type": "aws-sam", "request": "direct-invoke", "name": "myConfig", "invokeTarget": { "target": "api", "templatePath": "n12/template.yaml", "logicalId": "HelloWorldFunction" }, "api": { "path": "/hello", "httpMethod": "post", "payload": { "json": {} } }, "sam": {}, "aws": {} }
-
-
Wählen Sie im Dropdown-Menü neben Run (Ausführen) die Startkonfiguration (mit dem Namen
myConfig
im vorherigen Beispiel) aus. -
(Optional) Fügen Sie Ihrem Lambda Projektcode Haltepunkte hinzu.
-
Wählen Sie das Symbol Run (Ausführen) neben der grünen Schaltfläche „Wiedergeben“ aus.
-
Zeigen Sie im Ausgabefenster die Ergebnisse an.
Konfiguration
Wenn Sie den invokeTarget.target
Eigenschaftswertapi
benutzen, ändert das Toolkit die Validierung und das Verhalten der Startkonfiguration, um ein api
-Feld zu unterstützen.
{ "type": "aws-sam", "request": "direct-invoke", "name": "myConfig", "invokeTarget": { "target": "api", "templatePath": "n12/template.yaml", "logicalId": "HelloWorldFunction" }, "api": { "path": "/hello", "httpMethod": "post", "payload": { "json": {} }, "querystring": "abc=def&qrs=tuv", "headers": { "cookie": "name=value; name2=value2; name3=value3" } }, "sam": {}, "aws": {} }
Ersetzen Sie die Werte im Beispiel wie folgt:
- invokeTarget.logicalId
-
Eine API Ressource.
- Pfad
-
Der API Pfad, den die Startkonfiguration anfordert (z. B.
"path": "/hello"
).Muss ein gültiger API Pfad sein, der aus dem aufgelöst wurde
template.yaml
, der von angegeben wurdeinvokeTarget.templatePath
. - httpMethod
-
Verwenden Sie eines der folgenden Verben: „delete“, „get“, „head“, „options“, „patch“, „post“ und „put“.
- Nutzlast
-
Die JSON Payload (HTTPBody), die in der Anfrage gesendet werden soll, hat dieselbe Struktur und dieselben Regeln wie das Feld lambda.payload.
payload.path
zeigt auf eine Datei, die die Payload enthält. JSONpayload.json
gibt eine JSON Inline-Payload an. - Header
-
Optionale Zuordnung von Name-Wert-Paaren. Verwenden Sie es, um HTTP Header anzugeben, die in die Anfrage aufgenommen werden sollen.
"headers": { "accept-encoding": "deflate, gzip;q=1.0, *;q=0.5", "accept-language": "fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5", "cookie": "name=value; name2=value2; name3=value3", "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36", }
- querystring
-
(Optional) Verwenden Sie diese Zeichenfolge, um die
querystring
der Anforderung festzulegen (z. B."querystring": "abc=def&ghi=jkl"
). - AWS
-
Wie AWS Verbindungsinformationen bereitgestellt werden. Weitere Informationen finden Sie in der Tabelle AWS -Verbindung (
aws
) Eigenschaften in Konfigurationsoptionen für das Debuggen von serverless Anwendungen. - sam
-
Wie der die Anwendung AWS SAM CLI erstellt. Weitere Informationen finden Sie in den AWS SAM CLI(“
sam
„) -Eigenschaften unterKonfigurationsoptionen für das Debuggen von serverless Anwendungen.
Synchronisieren einer serverlosen Anwendung
Dieses Beispiel zeigt, wie Sie die serverlose Anwendung, die im vorherigen Thema (Erstellen einer serverless Anwendung) erstellt wurde, mit der Verwendung von synchronisieren. AWS AWS Toolkit for Visual Studio Code
Voraussetzungen
-
Achten Sie darauf, einen global eindeutigen Namen für den Amazon-S3-Bucket auszuwählen.
-
Stellen Sie sicher, dass die von Ihnen konfigurierten Anmeldeinformationen den entsprechenden Lese-/Schreibzugriff auf die folgenden Dienste beinhalten: Amazon S3, AWS CloudFormation AWS Lambda, und Amazon API Gateway.
-
Stellen Sie bei Anwendungen mit Bereitstellungstyp sicher
Image
, dass Sie sowohl über einen weltweit eindeutigen Amazon S3 S3-Bucket-Namen als auch über ein ECR Amazon-Repository verfügenURI, das Sie für die Bereitstellung verwenden können.
Synchronisieren einer serverlosen Anwendung
-
Öffnen Sie im AWS Explorer-Fenster das Kontextmenü (Rechtsklick) für den Lambda-Knoten und wählen Sie SAMAnwendung synchronisieren aus.
-
Wählen Sie die aus AWS-Region , für die Bereitstellung verwendet werden soll.
-
Wählen Sie die
template.yaml
-Datei aus, die für die Bereitstellung verwendet werden soll. -
Geben Sie den Namen eines Amazon-S3-Buckets ein, den diese Bereitstellung verwenden kann. Der Bucket muss sich in der Region befinden, in der die Bereitstellung erfolgt.
Warnung
Der Amazon-S3-Bucket-Name muss unter den in Amazon S3 vorhandenen Bucket-Namen global eindeutig sein. Fügen Sie dem im folgenden Beispiel angegebenen Namen einen eindeutigen Bezeichner hinzu oder wählen Sie einen anderen Namen aus.
-
Wenn Ihre serverlose Anwendung eine Funktion mit Pakettyp enthält
Image
, geben Sie den Namen eines ECR Amazon-Repositorys ein, das diese Bereitstellung verwenden kann. Der Bucket muss sich in der Region befinden, in der Sie bereitstellen. -
Geben Sie einen Namen für den bereitgestellten Stack ein, entweder einen neuen Stacknamen oder einen vorhandenen Stacknamen.
-
Überprüfen Sie den Erfolg der Bereitstellung auf der Registerkarte AWS Toolkit von der Konsole.
Wenn ein Fehler auftritt, wird rechts unten eine Meldung angezeigt.
Wenn dies der Fall ist, überprüfen Sie den Text auf der Registerkarte AWS Toolkit, um Details zu erhalten. Im Folgenden finden Sie ein Beispiel für Fehlerdetails.
Error with child process: Unable to upload artifact HelloWorldFunction referenced by CodeUri parameter of HelloWorldFunction resource. S3 Bucket does not exist. Execute the command to create a new bucket aws s3 mb s3://pbart-my-sam-app-bucket An error occurred while deploying a SAM Application. Check the logs for more information by running the "View AWS Toolkit Logs" command from the Command Palette.
In diesem Beispiel ist der Fehler aufgetreten, weil der Amazon-S3-Bucket nicht vorhanden war.
Wenn die Bereitstellung abgeschlossen ist, wird Ihre Anwendung im AWS Explorer aufgeführt. Weitere Informationen zum Abrufen und Debuggen der Lambda-Funktion, die als Teil der Anwendung erstellt wurde, finden Sie unter Aufrufen von Lambda-Funktionen.
Löschen einer serverless Anwendung aus der AWS Cloud
Das Löschen einer serverlosen Anwendung beinhaltet das Löschen des AWS CloudFormation Stacks, den Sie zuvor in der Cloud bereitgestellt haben. AWS Beachten Sie, dass dieses Verfahren Ihr Anwendungsverzeichnis nicht von Ihrem lokalen Host löscht.
-
Öffnen Sie den AWS Explorer.
-
Im Fenster AWS Explorer erweitern Sie die Region mit der bereitgestellten Anwendung, die Sie löschen möchten, und erweitern Sie dann AWS CloudFormation.
-
Öffnen Sie das Kontextmenü (Rechtsklick) für den Namen des AWS CloudFormation Stacks, der der serverlosen Anwendung entspricht, die Sie löschen möchten. Wählen Sie dann CloudFormation Stack löschen.
-
Um zu bestätigen, dass Sie den ausgewählten Stack löschen möchten, wählen Sie die Option Delete (Löschen) aus.
Wenn das Löschen des Stacks erfolgreich ist, entfernt das AWS Toolkit den Stack-Namen aus der AWS CloudFormation Liste im AWS Explorer.