Arbeiten AWS SAM mit dem AWS Toolkit - AWS Cloud9

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 Anwendungen. Mit dem AWS Toolkit können Sie serverlose Anwendungen erstellen, die AWS LambdaFunktionen enthalten, und die Anwendungen dann in einem Stack bereitstellen. AWS CloudFormation

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

Dieses Beispiel zeigt, wie Sie mithilfe von () eine serverlose Anwendung mit dem AWS Toolkit erstellen.AWS Serverless Application ModelAWS SAM

  1. Ö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.

  2. 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 Typ Zip. Für weitere Informationen zu den Unterschieden zwischen Image und Zip Pakettypen finden Sie unter Lambda-Bereitstellungspakete im AWS Lambda Entwicklerhandbuch.

  3. 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.

  4. 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.

  5. 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.

Screenshot mit den verfügbaren Laufzeiten für SAM Anwendungen.

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

  1. Um Ihre Anwendungsdateien anzuzeigen, aus denen Ihre serverless Anwendung besteht, rufen Sie das Fenster Environment (Umgebung) auf.

  2. Öffnen Sie die template.yaml Datei im Anwendungsordner (z. B. my-sample-app).

  3. 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.

  4. 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 Datei template.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 den HelloWorldFunction vom Typ AWS::Serverless::Function.

    Weitere Informationen zu diesen und anderen Einträgen in launch.json finden Sie in Konfigurationsoptionen für das Debuggen von serverless Anwendungen.

  5. 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:
  • Es ist eine exportierte Funktion mit bis zu drei Parametern.

  • Es hat eine package.json-Datei im übergeordneten Ordner innerhalb des Arbeitsbereichsordners.

Python (3.7, 3.8, 3.9 und 3.10)

Die Suchfunktion bietet zudem die folgenden Funktionen:
  • Es ist eine Top-Level-Funktion.

  • Es hat eine requirements.txt-Datei im übergeordneten Ordner innerhalb des Arbeitsbereichsordners.

So führen und debuggen Sie eine serverless Anwendung direkt aus dem Anwendungscode

  1. Wenn Sie Serverless-Anwendungsdateien anzeigen möchten, navigieren Sie zum Anwendungsordner, indem Sie das Ordnersymbol neben dem Editor auswählen.

  2. Erweitern Sie im Anwendungsordner (z. B. my-sample-app) den Funktionsordner (in diesem Beispiel hello-world) und öffnen Sie die Datei. app.js

  3. 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 .

    Greifen Sie auf die Option Debug-Konfiguration hinzufügen in der Inline-Aktion für einen Lambda Funktionshandler zu.
  4. Wählen Sie die Laufzeit aus, in der Ihre SAM Anwendung ausgeführt wird.

  5. 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.

  6. 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
  1. 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": {} }
  2. Wählen Sie im Dropdown-Menü neben Run (Ausführen) die Startkonfiguration (mit dem Namen myConfig im vorherigen Beispiel) aus.

  3. (Optional) Fügen Sie Ihrem Lambda Projektcode Haltepunkte hinzu.

  4. Wählen Sie das Symbol Run (Ausführen) neben der grünen Schaltfläche „Wiedergeben“ aus.

  5. Zeigen Sie im Ausgabefenster die Ergebnisse an.

Konfiguration

Wenn Sie den invokeTarget.targetEigenschaftswertapi 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 wurdetemplate.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.pathzeigt auf eine Datei, die die Payload enthält. JSON

payload.jsongibt 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 sicherImage, 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

  1. Öffnen Sie im AWS Explorer-Fenster das Kontextmenü (Rechtsklick) für den Lambda-Knoten und wählen Sie SAMAnwendung synchronisieren aus.

  2. Wählen Sie die aus AWS-Region , für die Bereitstellung verwendet werden soll.

  3. Wählen Sie die template.yaml-Datei aus, die für die Bereitstellung verwendet werden soll.

  4. 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.

  5. Wenn Ihre serverlose Anwendung eine Funktion mit Pakettyp enthältImage, 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.

  6. Geben Sie einen Namen für den bereitgestellten Stack ein, entweder einen neuen Stacknamen oder einen vorhandenen Stacknamen.

  7. Ü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.

  1. Öffnen Sie den AWS Explorer.

  2. Im Fenster AWS Explorer erweitern Sie die Region mit der bereitgestellten Anwendung, die Sie löschen möchten, und erweitern Sie dann AWS CloudFormation.

  3. Ö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.

  4. 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.