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.
Einführung in das Bauen mit AWS SAM
Verwenden Sie den AWS Serverless Application Model Befehl Command Line Interface (AWS SAMCLI)sam build
, um Ihre serverlose Anwendung auf nachfolgende Schritte in Ihrem Entwicklungsworkflow vorzubereiten, z. B. lokale Tests oder die Bereitstellung auf der. AWS Cloud Mit diesem Befehl wird ein .aws-sam
Verzeichnis erstellt, das Ihre Anwendung in einem Format und an einem Speicherort strukturiert, die sam local
sam deploy
erforderlich sind.
-
Eine Einführung in das finden AWS SAMCLI Sie unterWas ist das? AWS SAMCLI.
-
Eine Liste der
sam build
Befehlsoptionen finden Sie untersam build. -
Ein Beispiel für die Verwendung
sam build
während eines typischen Entwicklungsworkflows finden Sie unterSchritt 2: Erstellen Sie Ihre Anwendung.
Anmerkung
sam build
Für die Verwendung müssen Sie mit den grundlegenden Komponenten einer serverlosen Anwendung auf Ihrem Entwicklungscomputer beginnen. Dazu gehören eine AWS SAM Vorlage, AWS Lambda Funktionscode und alle sprachspezifischen Dateien und Abhängigkeiten. Weitere Informationen hierzu finden Sie unter Erstellen Sie Ihre Bewerbung in AWS SAM.
Themen
Anwendungen mit Sam Build erstellen
Ziehen Sie vor der Verwendung in Betrachtsam build
, Folgendes zu konfigurieren:
-
Lambda-Funktionen und -Layer — Der
sam build
Befehl kann Lambda-Funktionen und -Layer erstellen. Weitere Informationen zu Lambda-Schichten finden Sie unterAufbau von Lambda-Schichten in AWS SAM. -
Lambda-Laufzeit — Die Laufzeit bietet eine sprachspezifische Umgebung, in der Ihre Funktion in einer Ausführungsumgebung ausgeführt wird, wenn sie aufgerufen wird. Sie können native und benutzerdefinierte Laufzeiten konfigurieren.
-
Native Laufzeit — Verfassen Sie Ihre Lambda-Funktionen in einer unterstützten Lambda-Laufzeit und erstellen Sie Funktionen für die Verwendung einer nativen Lambda-Laufzeit in der. AWS Cloud
-
Benutzerdefinierte Laufzeit — Verfassen Sie Ihre Lambda-Funktionen mit einer beliebigen Programmiersprache und erstellen Sie Ihre Laufzeit mit einem benutzerdefinierten Prozess, der in einem Builder makefile oder einem Drittanbieter definiert ist, z. B. esbuild Weitere Informationen hierzu finden Sie unter Erstellen von Lambda-Funktionen mit benutzerdefinierten Laufzeiten in AWS SAM.
-
-
Lambda-Pakettyp — Lambda-Funktionen können in den folgenden Lambda-Bereitstellungspakettypen verpackt werden:
-
ZIP-Dateiarchiv — Enthält Ihren Anwendungscode und seine Abhängigkeiten.
-
Container-Image — Enthält das Basisbetriebssystem, die Laufzeit, Lambda-Erweiterungen, Ihren Anwendungscode und dessen Abhängigkeiten.
-
Diese Anwendungseinstellungen können konfiguriert werden, wenn eine Anwendung initialisiert wird mit. sam init
-
Weitere Informationen zur Verwendung von finden Sie
sam init
unterErstellen Sie Ihre Bewerbung in AWS SAM. -
Weitere Informationen zur Konfiguration dieser Einstellungen in Ihrer Anwendung finden Sie unterStandard-Build mit AWS SAM.
So erstellen Sie eine Anwendung
-
cd
zur Wurzel Ihres Projekts. Dies ist derselbe Speicherort wie Ihre AWS SAM Vorlage.$
cd
sam-app
-
Führen Sie Folgendes aus:
sam-app $
sam build
<arguments>
<options>
Anmerkung
Eine häufig verwendete Option ist
--use-container
. Weitere Informationen hierzu finden Sie unter Eine Lambda-Funktion innerhalb eines bereitgestellten Containers erstellen.Das Folgende ist ein Beispiel für die AWS SAMCLI Ausgabe:
sam-app $
sam build
Starting Build use cache Manifest file is changed (new hash: 3298f1304...d4d421) or dependency folder (.aws-sam/deps/4d3dfad6-a267-47a6-a6cd-e07d6fae318c) is missing for (HelloWorldFunction), downloading dependencies and copying/building source Building codeuri: /Users/.../sam-app/hello_world runtime: python3.12 metadata: {} architecture: x86_64 functions: HelloWorldFunction Running PythonPipBuilder:CleanUp Running PythonPipBuilder:ResolveDependencies Running PythonPipBuilder:CopySource Running PythonPipBuilder:CopySource Build Succeeded Built Artifacts : .aws-sam/build Built Template : .aws-sam/build/template.yaml Commands you can use next ========================= [*] Validate SAM template: sam validate [*] Invoke Function: sam local invoke [*] Test Function in the Cloud: sam sync --stack-name {{stack-name}} --watch [*] Deploy: sam deploy --guided -
Das AWS SAMCLI erstellt ein
.aws-sam
Build-Verzeichnis. Im Folgenden wird ein Beispiel gezeigt:.aws-sam ├── build │ ├── HelloWorldFunction │ │ ├── __init__.py │ │ ├── app.py │ │ └── requirements.txt │ └── template.yaml └── build.toml
Je nachdem, wie Ihre Anwendung konfiguriert ist, AWS SAMCLI macht der Folgendes:
-
Lädt Abhängigkeiten im
.aws-sam/build
Verzeichnis herunter, installiert und organisiert sie. -
Bereitet Ihren Lambda-Code vor. Dies kann das Kompilieren Ihres Codes, das Erstellen ausführbarer Binärdateien und das Erstellen von Container-Images umfassen.
-
Kopiert Build-Artefakte in das
.aws-sam
Verzeichnis. Das Format hängt vom Typ Ihres Anwendungspakets ab.-
Bei Pakettypen mit der Erweiterung.zip-Datei sind die Artefakte noch nicht gezippt, sodass sie für lokale Tests verwendet werden können. Das AWS SAMCLI komprimiert Ihre Anwendung, wenn Sie sie verwenden.
sam deploy
-
Für Container-Image-Pakettypen wird ein Container-Image lokal erstellt und in der
.aws-sam/build.toml
Datei referenziert.
-
-
Kopiert die AWS SAM Vorlage in das
.aws-sam
Verzeichnis und ändert sie bei Bedarf mit neuen Dateipfaden.
Im Folgenden sind die Hauptkomponenten aufgeführt, aus denen Ihre Build-Artefakte im .aws-sam
Verzeichnis bestehen:
-
Das Build-Verzeichnis — Enthält Ihre Lambda-Funktionen und -Layer, die unabhängig voneinander strukturiert sind. Dies führt zu einer eindeutigen Struktur für jede Funktion oder Ebene im
.aws-sam/build
Verzeichnis. -
Die AWS SAM Vorlage — Modifiziert mit aktualisierten Werten, die auf Änderungen während des Erstellungsprozesses basieren.
-
Die Datei build.toml — Eine Konfigurationsdatei, die Build-Einstellungen enthält, die von der verwendet werden. AWS SAMCLI
Lokales Testen und Bereitstellen
Bei der Durchführung lokaler Tests mit sam local
oder bei der Bereitstellung mit sam deploy
AWS SAMCLI führt der wie folgt aus:
-
Zunächst wird geprüft, ob ein
.aws-sam
Verzeichnis existiert und ob sich eine AWS SAM Vorlage in diesem Verzeichnis befindet. Wenn diese Bedingungen erfüllt sind, AWS SAMCLI betrachtet der dieses Verzeichnis als das Stammverzeichnis Ihrer Anwendung. -
Wenn diese Bedingungen nicht erfüllt sind, AWS SAMCLI betrachtet der den ursprünglichen Speicherort Ihrer AWS SAM Vorlage als Stammverzeichnis Ihrer Anwendung.
Wenn bei der Entwicklung Änderungen an Ihren ursprünglichen Anwendungsdateien vorgenommen werden, führen sam build
Sie zunächst die Aktualisierung des .aws-sam
Verzeichnisses durch, bevor Sie lokal testen.
Bewährte Methoden
-
Bearbeiten Sie keinen Code unter dem
.aws-sam/build
Verzeichnis. Aktualisieren Sie stattdessen Ihren ursprünglichen Quellcode in Ihrem Projektordner und führen Sie den Befehl aussam build
, um das.aws-sam/build
Verzeichnis zu aktualisieren. -
Wenn Sie Ihre Originaldateien ändern, führen Sie den Befehl aus,
sam build
um das.aws-sam/build
Verzeichnis zu aktualisieren. -
Möglicherweise möchten Sie AWS SAMCLI, dass der auf das ursprüngliche Stammverzeichnis Ihres Projekts statt auf das
.aws-sam
Verzeichnis verweist, z. B. beim Entwickeln und Testen mitsam local
. Löschen Sie das.aws-sam
Verzeichnis oder die AWS SAM Vorlage im.aws-sam
Verzeichnis, damit Ihr ursprüngliches Projektverzeichnis als Stammprojektverzeichnis AWS SAMCLI erkannt wird. Wenn Sie bereit sind, führen Sie densam build
Vorgang erneut aus, um das.aws-sam
Verzeichnis zu erstellen. -
Bei der Ausführung
sam build
wird das.aws-sam/build
Verzeichnis jedes Mal überschrieben. Das.aws-sam
Verzeichnis tut dies nicht. Wenn Sie Dateien wie Protokolle speichern möchten, speichern Sie sie in,.aws-sam
damit sie nicht überschrieben werden.
Optionen für Sam Build
Aufbau einer einzigen Ressource
Geben Sie die logische ID der Ressource an, um nur diese Ressource zu erstellen. Im Folgenden wird ein Beispiel gezeigt:
$
sam build
HelloWorldFunction
Um eine Ressource aus einer verschachtelten Anwendung oder einem geschachtelten Stack zu erstellen, geben Sie die logische ID der Anwendung oder des Stacks zusammen mit der logischen ID der Ressource im folgenden Format
an:<stack-logical-id>
/<resource-logical-id>
$
sam build
MyNestedStack/MyFunction
Eine Lambda-Funktion innerhalb eines bereitgestellten Containers erstellen
Die --use-container
Option lädt ein Container-Image herunter und verwendet es, um Ihre Lambda-Funktionen zu erstellen. Der lokale Container wird dann in Ihrer .aws-sam/build.toml
Datei referenziert.
Diese Option Docker muss installiert sein. Anweisungen finden Sie unter Installieren von Docker.
Das Folgende ist ein Beispiel für diesen Befehl:
$
sam build --use-container
Sie können das Container-Image angeben, das mit der --build-image
Option verwendet werden soll. Im Folgenden wird ein Beispiel gezeigt:
$
sam build --use-container --build-image
amazon/aws-sam-cli-build-image-nodejs20.x
Um das Container-Image anzugeben, das für eine einzelne Funktion verwendet werden soll, geben Sie die logische ID der Funktion an. Im Folgenden wird ein Beispiel gezeigt:
$
sam build --use-container --build-image
Function1=amazon/aws-sam-cli-build-image-python3.12
Übergeben Sie Umgebungsvariablen an den Build-Container
Verwenden Sie die--container-env-var
, um Umgebungsvariablen an den Build-Container zu übergeben. Im Folgenden wird ein Beispiel gezeigt:
$
sam build --use-container --container-env-var
Function1.GITHUB_TOKEN=<token1>
--container-env-varGLOBAL_ENV_VAR=<global-token>
Verwenden Sie die --container-env-var-file
Option, um Umgebungsvariablen aus einer Datei zu übergeben. Im Folgenden wird ein Beispiel gezeigt:
$
sam build --use-container --container-env-var-file
<env.json>
Beispiel für die env.json
Datei:
{ "MyFunction1": { "GITHUB_TOKEN": "TOKEN1" }, "MyFunction2": { "GITHUB_TOKEN": "TOKEN2" } }
Beschleunigen Sie die Erstellung von Anwendungen, die mehrere Funktionen enthalten
Wenn Sie eine Anwendung mit mehreren Funktionen ausführensam build
, AWS SAMCLI erstellt sie jede Funktion einzeln. Verwenden Sie die --parallel
Option, um den Erstellungsprozess zu beschleunigen. Dadurch werden alle Ihre Funktionen und Ebenen gleichzeitig erstellt.
Im Folgenden finden Sie ein Beispiel für diesen Befehl:
$
sam build —-parallel
Beschleunigen Sie die Build-Zeiten, indem Sie Ihr Projekt im Quellordner erstellen
Für unterstützte Laufzeiten und Build-Methoden können Sie die --build-in-source
Option verwenden, Ihr Projekt direkt im Quellordner zu erstellen. Standardmäßig werden die AWS SAM CLI Builds in einem temporären Verzeichnis gespeichert, was das Kopieren von Quellcode und Projektdateien beinhaltet. Damit befinden --build-in-source
sich die AWS SAM CLI Builds direkt in Ihrem Quellordner, was den Build-Prozess beschleunigt, da keine Dateien mehr in ein temporäres Verzeichnis kopiert werden müssen.
Eine Liste der unterstützten Laufzeiten und Build-Methoden finden Sie unter--build-in-source
.
Fehlerbehebung
Informationen zur Behebung von Problemen finden Sie unterAWS SAMCLIProblembehandlung. AWS SAMCLI
Beispiele
Erstellen einer Anwendung, die eine native Runtime- und .zip-Pakettyp verwendet
Dieses Beispiel finden Sie unterTutorial: Stellen Sie eine Hello World-Anwendung bereit mit AWS SAM.
Eine Anwendung erstellen, die einen systemeigenen Laufzeit- und Image-Pakettyp verwendet
Zuerst starten wir, sam init
um eine neue Anwendung zu initialisieren. Während des interaktiven Ablaufs wählen wir den Image
Pakettyp aus. Im Folgenden wird ein Beispiel gezeigt:
$
sam init
...
Which template source would you like to use? 1 - AWS Quick Start Templates 2 - Custom Template Location Choice:1
Choose an AWS Quick Start application template 1 - Hello World Example 2 - Multi-step workflow 3 - Serverless API 4 - Scheduled task 5 - Standalone function 6 - Data processing 7 - Hello World Example With Powertools 8 - Infrastructure event management 9 - Serverless Connector Hello World Example 10 - Multi-step workflow with Connectors 11 - Lambda EFS example 12 - DynamoDB Example 13 - Machine Learning Template:1
Use the most popular runtime and package type? (Python and zip) [y/N]:ENTER
Which runtime would you like to use?...
10 - java8 11 - nodejs20.x 12 - nodejs18.x 13 - nodejs16.x...
Runtime:12
What package type would you like to use? 1 - Zip 2 - Image Package type:2
Based on your selections, the only dependency manager available is npm. We will proceed copying the template using npm. Would you like to enable X-Ray tracing on the function(s) in your application? [y/N]:ENTER
Would you like to enable monitoring using CloudWatch Application Insights? For more info, please view https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-application-insights.html [y/N]:ENTER
Project name [sam-app]:ENTER
Cloning from https://github.com/aws/aws-sam-cli-app-templates (process may take a moment) ----------------------- Generating application: ----------------------- Name: sam-app Base Image: amazon/nodejs18.x-base Architectures: x86_64 Dependency Manager: npm Output Directory: . Configuration file: sam-app/samconfig.toml Next steps can be found in the README file at sam-app/README.md...
Das AWS SAMCLI initialisiert eine Anwendung und erstellt das folgende Projektverzeichnis:
sam-app ├── README.md ├── events │ └── event.json ├── hello-world │ ├── Dockerfile │ ├── app.mjs │ ├── package.json │ └── tests │ └── unit │ └── test-handler.mjs ├── samconfig.toml └── template.yaml
Als Nächstes starten wir, um unsere sam build
Anwendung zu erstellen:
sam-app $
sam build
Building codeuri: /Users/.../build-demo/sam-app runtime: None metadata: {'DockerTag': 'nodejs18.x-v1', 'DockerContext': '/Users/.../build-demo/sam-app/hello-world', 'Dockerfile': 'Dockerfile'} architecture: arm64 functions: HelloWorldFunction Building image for HelloWorldFunction function Setting DockerBuildArgs: {} for HelloWorldFunction function Step 1/4 : FROM public.ecr.aws/lambda/nodejs:18 ---> f5b68038c080 Step 2/4 : COPY app.mjs package*.json ./ ---> Using cache ---> 834e565aae80 Step 3/4 : RUN npm install ---> Using cache ---> 31c2209dd7b5 Step 4/4 : CMD ["app.lambdaHandler"] ---> Using cache ---> 2ce2a438e89d Successfully built 2ce2a438e89d Successfully tagged helloworldfunction:nodejs18.x-v1 Build Succeeded Built Artifacts : .aws-sam/build Built Template : .aws-sam/build/template.yaml Commands you can use next ========================= [*] Validate SAM template: sam validate [*] Invoke Function: sam local invoke [*] Test Function in the Cloud: sam sync --stack-name {{stack-name}} --watch [*] Deploy: sam deploy --guided
Erstellen einer Anwendung, die eine kompilierte Programmiersprache enthält
In diesem Beispiel erstellen wir mithilfe der Go Laufzeit eine Anwendung, die eine Lambda-Funktion enthält.
Zunächst initialisieren wir eine neue Anwendung sam init
und konfigurieren unsere Anwendung für die Verwendung von: Go
$
sam init
...
Which template source would you like to use? 1 - AWS Quick Start Templates 2 - Custom Template Location Choice:1
Choose an AWS Quick Start application template 1 - Hello World Example 2 - Multi-step workflow 3 - Serverless API...
Template:1
Use the most popular runtime and package type? (Python and zip) [y/N]:ENTER
Which runtime would you like to use?...
4 - dotnetcore3.1 5 - go1.x 6 - go (provided.al2)...
Runtime:5
What package type would you like to use? 1 - Zip 2 - Image Package type:1
Based on your selections, the only dependency manager available is mod. We will proceed copying the template using mod. Would you like to enable X-Ray tracing on the function(s) in your application? [y/N]:ENTER
Would you like to enable monitoring using CloudWatch Application Insights? For more info, please view https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-application-insights.html [y/N]:ENTER
Project name [sam-app]:ENTER
Cloning from https://github.com/aws/aws-sam-cli-app-templates (process may take a moment) ----------------------- Generating application: ----------------------- Name: sam-app Runtime: go1.x Architectures: x86_64 Dependency Manager: mod Application Template: hello-world Output Directory: . Configuration file: sam-app/samconfig.toml Next steps can be found in the README file at sam-app-go/README.md...
Das AWS SAMCLI initialisiert die Anwendung. Im Folgenden finden Sie ein Beispiel für die Verzeichnisstruktur der Anwendung:
sam-app ├── Makefile ├── README.md ├── events │ └── event.json ├── hello-world │ ├── go.mod │ ├── go.sum │ ├── main.go │ └── main_test.go ├── samconfig.toml └── template.yaml
Wir verweisen auf die README.md
Datei für die Anforderungen dieser Anwendung.
...
## Requirements * AWS CLI already configured with Administrator permission * [Docker installed](https://www.docker.com/community-edition) * [Golang](https://golang.org) * SAM CLI - [Install the SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html)...
Als Nächstes testen sam local invoke
wir unsere Funktion. Dieser Befehl Go ist fehlerhaft, da er nicht auf unserem lokalen Computer installiert ist:
sam-app $
sam local invoke
Invoking hello-world (go1.x) Local image was not found. Removing rapid images for repo public.ecr.aws/sam/emulation-go1.x Building image................................................................................................................................................................................................................................................. Using local image: public.ecr.aws/lambda/go:1-rapid-x86_64. Mounting /Users/.../Playground/build/sam-app/hello-world as /var/task:ro,delegated inside runtime container START RequestId: c6c5eddf-042b-4e1e-ba66-745f7c86dd31 Version: $LATEST fork/exec /var/task/hello-world: no such file or directory: PathError null END RequestId: c6c5eddf-042b-4e1e-ba66-745f7c86dd31 REPORT RequestId: c6c5eddf-042b-4e1e-ba66-745f7c86dd31 Init Duration: 0.88 ms Duration: 175.75 ms Billed Duration: 176 ms Memory Size: 128 MB Max Memory Used: 128 MB {"errorMessage":"fork/exec /var/task/hello-world: no such file or directory","errorType":"PathError"}%
Als Nächstes erstellen sam build
wir unsere Anwendung. Wir stoßen auf einen Fehler, da Go es nicht auf unserem lokalen Computer installiert ist:
sam-app $
sam build
Starting Build use cache Cache is invalid, running build and copying resources for following functions (HelloWorldFunction) Building codeuri: /Users/.../Playground/build/sam-app/hello-world runtime: go1.x metadata: {} architecture: x86_64 functions: HelloWorldFunction Build Failed Error: GoModulesBuilder:Resolver - Path resolution for runtime: go1.x of binary: go was not successful
Wir könnten unseren lokalen Computer zwar so konfigurieren, dass er unsere Funktion korrekt erstellt, aber wir verwenden stattdessen die --use-container
Option mitsam build
. Der AWS SAMCLI lädt ein Container-Image herunter, erstellt unsere Funktion mit dem nativen GoModulesBuilder und kopiert die resultierende Binärdatei in unser .aws-sam/build/HelloWorldFunction
Verzeichnis.
sam-app $
sam build --use-container Starting Build use cache Starting Build inside a container Cache is invalid, running build and copying resources for following functions (HelloWorldFunction) Building codeuri: /Users/.../build/sam-app/hello-world runtime: go1.x metadata: {} architecture: x86_64 functions: HelloWorldFunction Fetching public.ecr.aws/sam/build-go1.x:latest-x86_64 Docker container image..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... Mounting /Users/.../build/sam-app/hello-world as /tmp/samcli/source:ro,delegated inside runtime container Running GoModulesBuilder:Build Build Succeeded Built Artifacts : .aws-sam/build Built Template : .aws-sam/build/template.yaml Commands you can use next ========================= [*] Validate SAM template: sam validate [*] Invoke Function: sam local invoke [*] Test Function in the Cloud: sam sync --stack-name {{stack-name}} --watch [*] Deploy: sam deploy --guided
Das Folgende ist ein Beispiel für das .aws-sam
Verzeichnis:
.aws-sam ├── build │ ├── HelloWorldFunction │ │ └── hello-world │ └── template.yaml ├── build.toml ├── cache │ └── c860d011-4147-4010-addb-2eaa289f4d95 │ └── hello-world └── deps
Als nächstes rennen wirsam local invoke
. Unsere Funktion wurde erfolgreich aufgerufen:
sam-app $
sam local invoke
Invoking hello-world (go1.x) Local image is up-to-date Using local image: public.ecr.aws/lambda/go:1-rapid-x86_64. Mounting /Users/.../Playground/build/sam-app/.aws-sam/build/HelloWorldFunction as /var/task:ro,delegated inside runtime container START RequestId: cfc8ffa8-29f2-49d4-b461-45e8c7c80479 Version: $LATEST END RequestId: cfc8ffa8-29f2-49d4-b461-45e8c7c80479 REPORT RequestId: cfc8ffa8-29f2-49d4-b461-45e8c7c80479 Init Duration: 1.20 ms Duration: 1782.46 ms Billed Duration: 1783 ms Memory Size: 128 MB Max Memory Used: 128 MB {"statusCode":200,"headers":null,"multiValueHeaders":null,"body":"Hello, 72.21.198.67\n"}%
Weitere Informationen
Weitere Informationen zur Verwendung des sam build
Befehls finden Sie in den folgenden Abschnitten:
-
Lernen AWS SAM: Sam Build
— Serie „Lernen AWS SAM“ von Serverless Land amYouTube. -
Lernen AWS SAM | Sam Build | E3
— Serverless Land-Serie „Lernen AWS SAM“ weiter. YouTube -
AWS SAM build: wie es Artefakte für den Einsatz bereitstellt (Sessions with SAM S2E8)
— Sessions mit laufender Serie AWS SAM YouTube -
AWS SAM benutzerdefinierte Builds: So verwenden Sie Makefiles zum Anpassen von Builds in SAM (S2E9
) — Sessions mit laufenden Serien. AWS SAM YouTube