

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.

# Tutorial: Stellen Sie eine Hello World-Anwendung bereit mit AWS SAM
<a name="serverless-getting-started-hello-world"></a>

In diesem Tutorial verwenden Sie die AWS Serverless Application Model Befehlszeilenschnittstelle (AWS SAMCLI), um Folgendes auszuführen:
+ Initialisieren, erstellen und implementieren Sie eine **Hello World-Beispielanwendung**.
+ Nehmen Sie lokale Änderungen vor und synchronisieren Sie mit AWS CloudFormation.
+ Führen Sie lokale Tests auf Ihrem Entwicklungshost durch.
+ Löschen Sie die Beispielanwendung aus dem AWS Cloud.

Die **Hello World-Beispielanwendung** implementiert ein grundlegendes API-Backend. Sie besteht aus den folgenden Ressourcen:
+ **Amazon API Gateway** — API-Endpunkt, den Sie zum Aufrufen Ihrer Funktion verwenden werden.
+ **AWS Lambda**— Funktion, die die HTTP-API-GET-Anfrage verarbeitet und eine `hello world` Nachricht zurückgibt.
+ **AWS Identity and Access Management (IAM) -Rolle** — Gewährt den Diensten Berechtigungen zur sicheren Interaktion.

Das folgende Diagramm zeigt die Komponenten dieser Anwendung:

![\[Ein Diagramm einer Lambda-Funktion, die aufgerufen wird, wenn Sie eine GET-Anfrage an den API-Gateway-Endpunkt senden.\]](http://docs.aws.amazon.com/de_de/serverless-application-model/latest/developerguide/images/gs-01.png)


**Topics**
+ [

## Voraussetzungen
](#serverless-getting-started-hello-world-prerequisites)
+ [

## Schritt 1: Initialisieren Sie die Hello World-Beispielanwendung
](#serverless-getting-started-hello-world-init)
+ [

## Schritt 2: Erstellen Sie Ihre Anwendung
](#serverless-getting-started-hello-world-build)
+ [

## Schritt 3: Stellen Sie Ihre Anwendung auf dem bereit AWS Cloud
](#serverless-getting-started-hello-world-deploy)
+ [

## Schritt 4: Führen Sie Ihre Anwendung aus
](#serverless-getting-started-hello-world-run)
+ [

## Schritt 5: Interagieren Sie mit Ihrer Funktion im AWS Cloud
](#serverless-getting-started-hello-world-remote-invoke)
+ [

## Schritt 6: Ändern und synchronisieren Sie Ihre Anwendung mit AWS Cloud
](#serverless-getting-started-hello-world-sync)
+ [

## Schritt 7: (Optional) Testen Sie Ihre Anwendung lokal
](#serverless-getting-started-hello-world-test)
+ [

## Schritt 8: Löschen Sie Ihre Anwendung aus dem AWS Cloud
](#serverless-getting-started-hello-world-delete)
+ [

## Fehlerbehebung
](#serverless-getting-started-hello-world-troubleshoot)
+ [

## Weitere Informationen
](#serverless-getting-started-hello-world-learn)

## Voraussetzungen
<a name="serverless-getting-started-hello-world-prerequisites"></a>

Vergewissern Sie sich, dass Sie Folgendes abgeschlossen haben:
+ [AWS SAM Voraussetzungen](prerequisites.md)
+ [Installieren Sie das AWS SAMCLI](install-sam-cli.md)

**Anmerkung**  
Wenn Sie Visual Studio Code für die serverlose Entwicklung bevorzugen, finden Sie step-by-step Anweisungen zur Verwendung der VS Code-Oberfläche unter [Erstellen serverloser Anwendungen](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/sam-get-started.html#serverless-apps-create) im AWS Toolkit for VS Code-Benutzerhandbuch.

## Schritt 1: Initialisieren Sie die Hello World-Beispielanwendung
<a name="serverless-getting-started-hello-world-init"></a>

In diesem Schritt verwenden Sie das, AWS SAMCLI um ein **Hello World-Beispielanwendungsprojekt** auf Ihrem lokalen Computer zu erstellen.

**Um die Hello World-Beispielanwendung zu initialisieren**

1. Führen Sie in Ihrer Befehlszeile den folgenden Befehl von einem Startverzeichnis Ihrer Wahl aus:

   ```
   $ sam init
   ```
**Anmerkung**  
Dieser Befehl initialisiert Ihre serverlose Anwendung und erstellt ein Projektverzeichnis. Das Verzeichnis enthält mehrere Dateien und Ordner, einschließlich der `template.yaml` Datei, die Ihre Vorlage ist. AWS SAM   
Die installierte Python-Version muss der `Runtime` unter angegebenen Eigenschaft entsprechen`template.yaml`. Für Produktionsworkloads empfehlen wir die Verwendung von Python 3.12 oder früheren Versionen, die in AWS Umgebungen vollständig unterstützt werden. Wenn die Python-Versionen nicht übereinstimmen, treten Build-Fehler auf.  
So beheben Sie Probleme mit der Versionskompatibilität:  
 Geben Sie bei der Initialisierung eine kompatible [Laufzeit](sam-cli-command-reference-sam-init.md#sam-cli-command-reference-sam-init-options-runtime) an: `sam init --runtime python3.9`
Ändern Sie die `Runtime` Eigenschaft `template.yaml` nach der Initialisierung

1. Das AWS SAMCLI führt Sie durch die Initialisierung einer neuen Anwendung. Konfigurieren Sie Folgendes:

   1. Wählen Sie **AWS Schnellstartvorlagen** aus, um eine Startvorlage auszuwählen.

   1. Wählen Sie die Vorlage **Hello World Example** und laden Sie sie herunter.

   1. Verwenden Sie die Python Laufzeit und den `zip` Pakettyp.

   1. Deaktivieren Sie für dieses Tutorial die AWS X-Ray Ablaufverfolgung. Weitere Informationen finden Sie unter [Was ist AWS X-Ray?](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html) im *AWS X-Ray Entwicklerhandbuch*.

   1. Deaktivieren Sie für dieses Tutorial die Überwachung mit Amazon CloudWatch Application Insights. Weitere Informationen finden Sie unter [Amazon CloudWatch Application Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch-application-insights.html) im * CloudWatch Amazon-Benutzerhandbuch*.

   1. Deaktivieren Sie für dieses Tutorial die Einstellung von Structured Logging im JSON-Format für Ihre Lambda-Funktionen.

   1. Benennen Sie Ihre Anwendung als **Sam-App**.

   Um den AWS SAMCLI interaktiven Flow zu verwenden:
   + Klammern (`[ ]`) stehen für Standardwerte. Lassen Sie Ihre Antwort leer, um den Standardwert auszuwählen.
   + Geben Sie **`y`** für **Ja** und **`n`** für **Nein** ein.

   Im Folgenden finden Sie ein Beispiel für den `sam init` interaktiven Ablauf:

   ```
   $ 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 - Data processing
       3 - Hello World Example with Powertools for AWS Lambda
       4 - Multi-step workflow
       5 - Scheduled task
       6 - Standalone function
       7 - Serverless API
       8 - Infrastructure event management 
       9 - Lambda Response Streaming
      10 - GraphQLApi Hello World Example
      11 - Full Stack
      12 - Lambda EFS example
      13 - Serverless Connector Hello World Example
      14 - Multi-step workflow with Connectors
      15 - DynamoDB Example
      16 - Machine Learning
   Template: 1
   
   Use the most popular runtime and package type? (Python and zip) [y/N]: y
   
   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
   					
   Would you like to set Structured Logging in JSON format on your Lambda functions?  [y/N]: ENTER
   
   Project name [sam-app]: ENTER
   ```

1. Der AWS SAMCLI lädt Ihre Startvorlage herunter und erstellt die Verzeichnisstruktur des Anwendungsprojekts auf Ihrem lokalen Computer. Im Folgenden finden Sie ein Beispiel für die AWS SAMCLI Ausgabe:

   ```
   Cloning from https://github.com/aws/aws-sam-cli-app-templates (process may take a moment)
   
       -----------------------
       Generating application:
       -----------------------
       Name: sam-app
       Runtime: python3.9
       Architectures: x86_64
       Dependency Manager: pip
       Application Template: hello-world
       Output Directory: .
       Configuration file: sam-app/samconfig.toml
   
       Next steps can be found in the README file at sam-app/README.md
   
   
   Commands you can use next
   =========================
   [*] Create pipeline: cd sam-app && sam pipeline init --bootstrap
   [*] Validate SAM template: cd sam-app && sam validate
   [*] Test Function in the Cloud: cd sam-app && sam sync --stack-name {stack-name} --watch
   ```

1. Gehen Sie von Ihrer Befehlszeile aus in das neu erstellte `sam-app` Verzeichnis. Das Folgende ist ein Beispiel für das, was der erstellt AWS SAMCLI hat:
**Anmerkung**  
Wenn der `tree` Befehl nicht auto installiert wird, führen Sie diesen Befehl aus: `brew install tree`

   ```
   $ cd sam-app
   
   $ tree
   
   ├── README.md
   ├── __init__.py
   ├── events
   │   └── event.json
   ├── hello_world
   │   ├── __init__.py
   │   ├── app.py
   │   └── requirements.txt
   ├── samconfig.toml
   ├── template.yaml
   └── tests
       ├── __init__.py
       ├── integration
       │   ├── __init__.py
       │   └── test_api_gateway.py
       ├── requirements.txt
       └── unit
           ├── __init__.py
           └── test_handler.py
           
   6 directories, 14 files
   ```

   Einige wichtige Dateien, die Sie hervorheben sollten:
   + `hello_world/app.py`— Enthält Ihren Lambda-Funktionscode.
   + `hello_world/requirements.txt`— Enthält alle Python Abhängigkeiten, die Ihre Lambda-Funktion benötigt.
   + `samconfig.toml`— Konfigurationsdatei für Ihre Anwendung, in der die von der AWS SAMCLI verwendeten Standardparameter gespeichert werden.
   + `template.yaml`— Die AWS SAM Vorlage, die Ihren Anwendungsinfrastrukturcode enthält.

Sie haben jetzt eine vollständig erstellte serverlose Anwendung auf Ihrem lokalen Computer\$1

## Schritt 2: Erstellen Sie Ihre Anwendung
<a name="serverless-getting-started-hello-world-build"></a>

In diesem Schritt verwenden Sie die, AWS SAMCLI um Ihre Anwendung zu erstellen und die Bereitstellung vorzubereiten. Beim Erstellen AWS SAMCLI erstellt der ein `.aws-sam` Verzeichnis und organisiert dort Ihre Funktionsabhängigkeiten, Ihren Projektcode und Ihre Projektdateien.

**Um Ihre Anwendung zu erstellen**
+ Führen Sie in Ihrer Befehlszeile im `sam-app` Projektverzeichnis Folgendes aus:

  ```
  $ sam build
  ```
**Anmerkung**  
 Wenn Sie es nicht Python auf Ihrem lokalen Computer haben, verwenden Sie stattdessen den **sam build --use-container ** Befehl. Dadurch AWS SAMCLI wird ein Docker Container erstellt, der die Laufzeit und die Abhängigkeiten Ihrer Funktion enthält. Dieser Befehl erfordert Docker auf Ihrem lokalen Computer. Informationen zur Installation Docker finden Sie unter[Installieren von Docker](install-docker.md).

  Im Folgenden finden Sie ein Beispiel für die AWS SAMCLI Ausgabe:

  ```
  $ 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/.../Demo/sam-tutorial1/sam-app/hello_world runtime: python3.9 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 Folgende ist ein verkürztes Beispiel für das von der AWS SAM CLI erstellte `.aws-sam` Verzeichnis:

  ```
  .aws-sam
  ├── build
  │   ├── HelloWorldFunction
  │   │   ├── __init__.py
  │   │   ├── app.py
  │   │   └── requirements.txt
  │   └── template.yaml
  └── build.toml
  ```

Einige wichtige Dateien, die Sie hervorheben sollten:
+ `build/HelloWorldFunction`— Enthält Ihren Lambda-Funktionscode und Abhängigkeiten. Das AWS SAMCLI erstellt ein Verzeichnis für jede Funktion in Ihrer Anwendung.
+ `build/template.yaml`— Enthält eine Kopie Ihrer AWS SAM Vorlage, auf die CloudFormation bei der Bereitstellung verwiesen wird.
+ `build.toml`— Konfigurationsdatei, in der Standardparameterwerte gespeichert werden, auf die AWS SAMCLI beim Erstellen und Bereitstellen Ihrer Anwendung verwiesen wird.

Sie sind jetzt bereit, Ihre Anwendung auf dem bereitzustellen AWS Cloud.

## Schritt 3: Stellen Sie Ihre Anwendung auf dem bereit AWS Cloud
<a name="serverless-getting-started-hello-world-deploy"></a>

**Anmerkung**  
Dieser Schritt erfordert die Konfiguration der AWS Anmeldeinformationen. Weitere Informationen finden Sie unter [Schritt 5: Verwenden Sie die AWS CLI , um die AWS Anmeldeinformationen zu konfigurieren](prerequisites.md#prerequisites-configure-credentials) in [AWS SAM Voraussetzungen](prerequisites.md).

In diesem Schritt verwenden Sie die, AWS SAMCLI um Ihre Anwendung auf dem bereitzustellen AWS Cloud. Das AWS SAMCLI wird Folgendes tun:
+ Führt Sie durch die Konfiguration Ihrer Anwendungseinstellungen für die Bereitstellung.
+ Laden Sie Ihre Anwendungsdateien auf Amazon Simple Storage Service (Amazon S3) hoch.
+ Verwandeln Sie Ihre AWS SAM Vorlage in eine CloudFormation Vorlage. Anschließend wird Ihre Vorlage in den CloudFormation Dienst hochgeladen, um Ihre AWS Ressourcen bereitzustellen.

**So stellen Sie Ihre -Anwendung bereit**

1. Führen Sie in Ihrer Befehlszeile im `sam-app` Projektverzeichnis Folgendes aus:

   ```
   $ sam deploy --guided
   ```

1. Folgen Sie dem AWS SAMCLI interaktiven Ablauf, um Ihre Anwendungseinstellungen zu konfigurieren. Konfigurieren Sie Folgendes:

   1. Der **CloudFormation Stack-Name** — Ein Stack ist eine Sammlung von AWS Ressourcen, die Sie als eine Einheit verwalten können. Weitere Informationen finden Sie unter [Arbeiten mit Stacks](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html) im *AWS CloudFormation Benutzerhandbuch*.

   1. Das **AWS-Region**, auf dem Sie Ihren CloudFormation Stack bereitstellen möchten. Weitere Informationen finden Sie unter [CloudFormation -Endpunkte](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-endpoints.html) im *AWS CloudFormation -Benutzerhandbuch*.

   1. Deaktivieren Sie für dieses Tutorial **die Bestätigung von Änderungen vor der Bereitstellung**.

   1. **IAM-Rollenerstellung** zulassen — Auf diese Weise können AWS SAM Sie die IAM-Rolle erstellen, die für die Interaktion zwischen Ihrer API-Gateway-Ressource und der Lambda-Funktionsressource erforderlich ist.

   1. **Deaktivieren Sie für dieses Tutorial die Deaktivierung des Rollbacks.**

   1. **HelloWorldFunction Ohne definierte Autorisierung** zulassen — Diese Meldung wird angezeigt, weil Ihr API-Gateway-Endpunkt so konfiguriert ist, dass er ohne Autorisierung öffentlich zugänglich ist. Da dies die vorgesehene Konfiguration für Ihre Hello World-Anwendung ist, warten Sie, AWS SAMCLI bis der Vorgang abgeschlossen ist. Weitere Informationen zur Konfiguration der Autorisierung finden Sie unter[Kontrollieren Sie den API-Zugriff mit Ihrer AWS SAM Vorlage](serverless-controlling-access-to-apis.md).

   1. **Argumente in Konfigurationsdatei speichern** — Dadurch wird die `samconfig.toml` Datei Ihrer Anwendung mit Ihren Bereitstellungseinstellungen aktualisiert.

   1. Wählen Sie den **Namen der Standardkonfigurationsdatei** aus.

   1. Wählen Sie die **Standardkonfigurationsumgebung** aus.

   Im Folgenden finden Sie ein Beispiel für die Ausgabe des `sam deploy --guided` interaktiven Ablaufs:

   ```
   $ sam deploy --guided
   
   Configuring SAM deploy
   ======================
   
       Looking for config file [samconfig.toml] :  Found
       Reading default arguments  :  Success
   
       Setting default arguments for 'sam deploy'
       =========================================
       Stack Name [sam-app]: ENTER
       AWS Region [us-west-2]: ENTER
       #Shows you resources changes to be deployed and require a 'Y' to initiate deploy
       Confirm changes before deploy [Y/n]: n
       #SAM needs permission to be able to create roles to connect to the resources in your template
       Allow SAM CLI IAM role creation [Y/n]: ENTER
       #Preserves the state of previously provisioned resources when an operation fails
       Disable rollback [y/N]: ENTER
       HelloWorldFunction may not have authorization defined, Is this okay? [y/N]: y
       Save arguments to configuration file [Y/n]: ENTER
       SAM configuration file [samconfig.toml]: ENTER
       SAM configuration environment [default]: ENTER
   ```

1. Der AWS SAMCLI stellt Ihre Anwendung wie folgt bereit:
   + Das AWS SAMCLI erstellt einen Amazon S3 S3-Bucket und lädt Ihr `.aws-sam` Verzeichnis hoch.
   + Das AWS SAMCLI wandelt Ihre AWS SAM Vorlage in den Service um CloudFormation und lädt sie in den Service hoch. CloudFormation 
   + CloudFormation stellt Ihre Ressourcen bereit.

   Während der Bereitstellung AWS SAMCLI zeigt das Ihren Fortschritt an. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:

   ```
   Looking for resources needed for deployment:
   
       Managed S3 bucket: aws-sam-cli-managed-default-samclisam-s3-demo-bucket-1a4x26zbcdkqr
       A different default S3 bucket can be set in samconfig.toml
   
       Parameter "stack_name=sam-app" in [default.deploy.parameters] is defined as a global parameter [default.global.parameters].
       This parameter will be only saved under [default.global.parameters] in /Users/.../Demo/sam-tutorial1/sam-app/samconfig.toml.
   
       Saved arguments to config file
       Running 'sam deploy' for future deployments will use the parameters saved above.
       The above parameters can be changed by modifying samconfig.toml
       Learn more about samconfig.toml syntax at
       https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-config.html
   
   File with same data already exists at sam-app/da3c598813f1c2151579b73ad788cac8, skipping upload
   
       Deploying with following values
       ===============================
       Stack name                   : sam-app
       Region                       : us-west-2
       Confirm changeset            : False
       Disable rollback             : False
       Deployment s3 bucket         : aws-sam-cli-managed-default-samclisam-s3-demo-bucket-1a4x26zbcdkqr
       Capabilities                 : ["CAPABILITY_IAM"]
       Parameter overrides          : {}
       Signing Profiles             : {}
   
   Initiating deployment
   =====================
   
   File with same data already exists at sam-app/2bebf67c79f6a743cc5312f6dfc1efee.template, skipping upload
   
   
   Waiting for changeset to be created..
   
   CloudFormation stack changeset
   ---------------------------------------------------------------------------------------------------------------------------------------------
   Operation                           LogicalResourceId                   ResourceType                        Replacement
   ---------------------------------------------------------------------------------------------------------------------------------------------
   * Modify                            HelloWorldFunction                  AWS::Lambda::Function               False
   * Modify                            ServerlessRestApi                   AWS::ApiGateway::RestApi            False
   - Delete                            AwsSamAutoDependencyLayerNestedSt   AWS::CloudFormation::Stack          N/A
                                       ack
   ---------------------------------------------------------------------------------------------------------------------------------------------
   
   
   Changeset created successfully. arn:aws:cloudformation:us-west-2:012345678910:changeSet/samcli-deploy1678917603/22e05525-08f9-4c52-a2c4-f7f1fd055072
   
   
   2023-03-15 12:00:16 - Waiting for stack create/update to complete
   
   CloudFormation events from stack operations (refresh every 0.5 seconds)
   ---------------------------------------------------------------------------------------------------------------------------------------------
   ResourceStatus                      ResourceType                        LogicalResourceId                   ResourceStatusReason
   ---------------------------------------------------------------------------------------------------------------------------------------------
   UPDATE_IN_PROGRESS                  AWS::Lambda::Function               HelloWorldFunction                  -
   UPDATE_COMPLETE                     AWS::Lambda::Function               HelloWorldFunction                  -
   UPDATE_COMPLETE_CLEANUP_IN_PROGRE   AWS::CloudFormation::Stack          sam-app                             -
   SS
   DELETE_IN_PROGRESS                  AWS::CloudFormation::Stack          AwsSamAutoDependencyLayerNestedSt   -
                                                                           ack
   DELETE_COMPLETE                     AWS::CloudFormation::Stack          AwsSamAutoDependencyLayerNestedSt   -
                                                                           ack
   UPDATE_COMPLETE                     AWS::CloudFormation::Stack          sam-app                             -
   ---------------------------------------------------------------------------------------------------------------------------------------------
   
   CloudFormation outputs from deployed stack
   ----------------------------------------------------------------------------------------------------------------------------------------------
   Outputs
   ----------------------------------------------------------------------------------------------------------------------------------------------
   Key                 HelloWorldFunctionIamRole
   Description         Implicit IAM Role created for Hello World function
   Value               arn:aws:iam::012345678910:role/sam-app-HelloWorldFunctionRole-15GLOUR9LMT1W
   
   Key                 HelloWorldApi
   Description         API Gateway endpoint URL for Prod stage for Hello World function
   Value               https://<restapiid>.execute-api.us-west-2.amazonaws.com/Prod/hello/
   
   Key                 HelloWorldFunction
   Description         Hello World Lambda Function ARN
   Value               arn:aws:lambda:us-west-2:012345678910:function:sam-app-HelloWorldFunction-yQDNe17r9maD
   ----------------------------------------------------------------------------------------------------------------------------------------------
   
   
   Successfully created/updated stack - sam-app in us-west-2
   ```

Ihre Anwendung ist jetzt bereitgestellt und läuft im AWS Cloud\$1

## Schritt 4: Führen Sie Ihre Anwendung aus
<a name="serverless-getting-started-hello-world-run"></a>

In diesem Schritt senden Sie eine GET-Anfrage an Ihren API-Endpunkt und sehen die Ausgabe Ihrer Lambda-Funktion.

**Um Ihren API-Endpunktwert zu erhalten**

1. Suchen Sie anhand der Informationen, die AWS SAMCLI im vorherigen Schritt angezeigt wurden, den `Outputs` Abschnitt. Suchen Sie in diesem Abschnitt nach Ihrer `HelloWorldApi` Ressource, um Ihren HTTP-Endpunktwert zu ermitteln. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:

   ```
   ----------------------------------------------------------------------------------------------------------------------------------------------
   Outputs
   ----------------------------------------------------------------------------------------------------------------------------------------------
   ...
   Key                 HelloWorldApi
   Description         API Gateway endpoint URL for Prod stage for Hello World function
   Value               https://ets1gv8lxi.execute-api.us-west-2.amazonaws.com/Prod/hello/
   ...
   ----------------------------------------------------------------------------------------------------------------------------------------------
   ```

1. Alternativ können Sie den **sam list endpoints --output json** Befehl verwenden, um diese Informationen abzurufen. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:

   ```
   $ sam list endpoints --output json
   2023-03-15 12:39:19 Loading policies from IAM...
   2023-03-15 12:39:25 Finished loading policies from IAM.
   [
     {
       "LogicalResourceId": "HelloWorldFunction",
       "PhysicalResourceId": "sam-app-HelloWorldFunction-yQDNe17r9maD",
       "CloudEndpoint": "-",
       "Methods": "-"
     },
     {
       "LogicalResourceId": "ServerlessRestApi",
       "PhysicalResourceId": "ets1gv8lxi",
       "CloudEndpoint": [
         "https://ets1gv8lxi.execute-api.us-west-2.amazonaws.com/Prod",
         "https://ets1gv8lxi.execute-api.us-west-2.amazonaws.com/Stage"
       ],
       "Methods": [
         "/hello['get']"
       ]
     }
   ]
   ```

**Um Ihre Funktion aufzurufen**
+ Senden Sie mit Ihrem Browser oder der Befehlszeile eine GET-Anfrage an Ihren API-Endpunkt. Im Folgenden finden Sie ein Beispiel für die Verwendung des Befehls curl:

  ```
  $ curl https://ets1gv8lxi.execute-api.us-west-2.amazonaws.com/Prod/hello/
  {"message": "hello world"}
  ```

## Schritt 5: Interagieren Sie mit Ihrer Funktion im AWS Cloud
<a name="serverless-getting-started-hello-world-remote-invoke"></a>

In diesem Schritt verwenden Sie die, AWS SAMCLI um Ihre Lambda-Funktion in der aufzurufen. AWS Cloud

**So rufen Sie Ihre Lambda-Funktion in der Cloud auf**

1. Notieren Sie sich Ihre Funktionen `LogicalResourceId` aus dem vorherigen Schritt. Dies sollte `HelloWorldFunction` sein.

1. Führen Sie in Ihrer Befehlszeile aus dem `sam-app` Projektverzeichnis Folgendes aus:

   ```
   $ sam remote invoke HelloWorldFunction --stack-name sam-app
   ```

1. Das AWS SAMCLI ruft Ihre Funktion in der Cloud auf und gibt eine Antwort zurück. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:

   ```
   $ sam remote invoke HelloWorldFunction --stack-name sam-app
   
   Invoking Lambda Function HelloWorldFunction                                       
   START RequestId: d5ef494b-5f45-4086-86fd-d7322fa1a1f9 Version: $LATEST
   END RequestId: d5ef494b-5f45-4086-86fd-d7322fa1a1f9
   REPORT RequestId: d5ef494b-5f45-4086-86fd-d7322fa1a1f9  Duration: 6.62 ms       Billed Duration: 7 ms     Memory Size: 128 MB     Max Memory Used: 67 MB  Init Duration: 164.06 ms
   {"statusCode":200,"body":"{\"message\":\"hello world\"}"}%
   ```

## Schritt 6: Ändern und synchronisieren Sie Ihre Anwendung mit AWS Cloud
<a name="serverless-getting-started-hello-world-sync"></a>

In diesem Schritt verwenden Sie den AWS SAMCLI **sam sync --watch** Befehl, um lokale Änderungen mit dem zu synchronisieren AWS Cloud.

**Um Sam Sync zu verwenden**

1. Führen Sie in Ihrer Befehlszeile im `sam-app` Projektverzeichnis Folgendes aus:

   ```
   $ sam sync --watch
   ```

1. Sie AWS SAMCLI werden aufgefordert, zu bestätigen, dass Sie einen Entwicklungsstapel synchronisieren. Da der **sam sync --watch** Befehl automatisch lokale Änderungen AWS Cloud in Echtzeit bereitstellt, empfehlen wir ihn nur für Entwicklungsumgebungen.

   Der AWS SAMCLI führt eine erste Bereitstellung durch, bevor er mit der Überwachung auf lokale Änderungen beginnt. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:

   ```
   $ sam sync --watch
   The SAM CLI will use the AWS Lambda, Amazon API Gateway, and AWS StepFunctions APIs to upload your code without
   performing a CloudFormation deployment. This will cause drift in your CloudFormation stack.
   **The sync command should only be used against a development stack**.
   
   Confirm that you are synchronizing a development stack.
   
   Enter Y to proceed with the command, or enter N to cancel:
    [Y/n]: y
   Queued infra sync. Waiting for in progress code syncs to complete...
   Starting infra sync.
   Manifest is not changed for (HelloWorldFunction), running incremental build
   Building codeuri: /Users/.../Demo/sam-tutorial1/sam-app/hello_world runtime: python3.9 metadata: {} architecture: x86_64 functions: HelloWorldFunction
   Running PythonPipBuilder:CopySource
   
   Build Succeeded
   
   Successfully packaged artifacts and wrote output template to file /var/folders/45/5ct135bx3fn2551_ptl5g6_80000gr/T/tmpq3x9vh63.
   Execute the following command to deploy the packaged template
   sam deploy --template-file /var/folders/45/5ct135bx3fn2551_ptl5g6_80000gr/T/tmpq3x9vh63 --stack-name <YOUR STACK NAME>
   
   
       Deploying with following values
       ===============================
       Stack name                   : sam-app
       Region                       : us-west-2
       Disable rollback             : False
       Deployment s3 bucket         : aws-sam-cli-managed-default-samclisam-s3-demo-bucket-1a4x26zbcdkqr
       Capabilities                 : ["CAPABILITY_NAMED_IAM", "CAPABILITY_AUTO_EXPAND"]
       Parameter overrides          : {}
       Signing Profiles             : null
   
   Initiating deployment
   =====================
   
   
   2023-03-15 13:10:05 - Waiting for stack create/update to complete
   
   CloudFormation events from stack operations (refresh every 0.5 seconds)
   ---------------------------------------------------------------------------------------------------------------------------------------------
   ResourceStatus                      ResourceType                        LogicalResourceId                   ResourceStatusReason
   ---------------------------------------------------------------------------------------------------------------------------------------------
   UPDATE_IN_PROGRESS                  AWS::CloudFormation::Stack          sam-app                             Transformation succeeded
   CREATE_IN_PROGRESS                  AWS::CloudFormation::Stack          AwsSamAutoDependencyLayerNestedSt   -
                                                                           ack
   CREATE_IN_PROGRESS                  AWS::CloudFormation::Stack          AwsSamAutoDependencyLayerNestedSt   Resource creation Initiated
                                                                           ack
   CREATE_COMPLETE                     AWS::CloudFormation::Stack          AwsSamAutoDependencyLayerNestedSt   -
                                                                           ack
   UPDATE_IN_PROGRESS                  AWS::Lambda::Function               HelloWorldFunction                  -
   UPDATE_COMPLETE                     AWS::Lambda::Function               HelloWorldFunction                  -
   UPDATE_COMPLETE_CLEANUP_IN_PROGRE   AWS::CloudFormation::Stack          sam-app                             -
   SS
   UPDATE_COMPLETE                     AWS::CloudFormation::Stack          sam-app                             -
   ---------------------------------------------------------------------------------------------------------------------------------------------
   
   CloudFormation outputs from deployed stack
   ----------------------------------------------------------------------------------------------------------------------------------------------
   Outputs
   ----------------------------------------------------------------------------------------------------------------------------------------------
   Key                 HelloWorldFunctionIamRole
   Description         Implicit IAM Role created for Hello World function
   Value               arn:aws:iam::012345678910:role/sam-app-HelloWorldFunctionRole-15GLOUR9LMT1W
   
   Key                 HelloWorldApi
   Description         API Gateway endpoint URL for Prod stage for Hello World function
   Value               https://ets1gv8lxi.execute-api.us-west-2.amazonaws.com/Prod/hello/
   
   Key                 HelloWorldFunction
   Description         Hello World Lambda Function ARN
   Value               arn:aws:lambda:us-west-2:012345678910:function:sam-app-HelloWorldFunction-yQDNe17r9maD
   ----------------------------------------------------------------------------------------------------------------------------------------------
   
   
   Stack update succeeded. Sync infra completed.
   
   Infra sync completed.
   CodeTrigger not created as CodeUri or DefinitionUri is missing for ServerlessRestApi.
   ```

Als Nächstes ändern Sie Ihren Lambda-Funktionscode. Das AWS SAMCLI erkennt diese Änderung automatisch und synchronisiert Ihre Anwendung mit dem AWS Cloud.

**Um Ihre Anwendung zu ändern und zu synchronisieren**

1. Öffnen Sie die `sam-app/hello_world/app.py` Datei in der IDE Ihrer Wahl.

1. Ändern Sie die Datei `message` und speichern Sie sie. Im Folgenden wird ein Beispiel gezeigt:

   ```
   import json
   ...
   def lambda_handler(event, context):
       ...
       return {
           "statusCode": 200,
           "body": json.dumps({
               "message": "hello everyone!",
               ...
           }),
       }
   ```

1. Das AWS SAMCLI erkennt Ihre Änderung und synchronisiert Ihre Anwendung mit dem AWS Cloud. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:

   ```
   Syncing Lambda Function HelloWorldFunction...
   Manifest is not changed for (HelloWorldFunction), running incremental build
   Building codeuri: /Users/.../Demo/sam-tutorial1/sam-app/hello_world runtime: python3.9 metadata: {} architecture: x86_64 functions: HelloWorldFunction
   Running PythonPipBuilder:CopySource
   Finished syncing Lambda Function HelloWorldFunction.
   ```

1. Um Ihre Änderung zu überprüfen, senden Sie erneut eine GET-Anfrage an Ihren API-Endpunkt.

   ```
   $ curl https://ets1gv8lxi.execute-api.us-west-2.amazonaws.com/Prod/hello/
   {"message": "hello everyone!"}
   ```

## Schritt 7: (Optional) Testen Sie Ihre Anwendung lokal
<a name="serverless-getting-started-hello-world-test"></a>

**Anmerkung**  
Dieser Schritt ist optional.

**Wichtig**  
Dieser Schritt erfordert Docker auf Ihrem lokalen Computer. Sie müssen das Docker installiert und konfiguriert haben, um das AWS SAMCLI für lokale Tests verwenden zu können. Weitere Informationen finden Sie unter [Installieren von Docker](install-docker.md).

In diesem Schritt verwenden Sie den AWS SAMCLI **sam local** Befehl, um Ihre Anwendung lokal zu testen. Um dies zu erreichen, AWS SAMCLI erstellt der eine lokale Umgebung mitDocker. Diese lokale Umgebung emuliert die cloudbasierte Ausführungsumgebung Ihrer Lambda-Funktion.

Dafür müssen Sie Folgendes tun:

1. Erstellen Sie eine lokale Umgebung für Ihre Lambda-Funktion und rufen Sie sie auf.

1. Hosten Sie Ihren HTTP-API-Endpunkt lokal und verwenden Sie ihn, um Ihre Lambda-Funktion aufzurufen.

**Um Ihre Lambda-Funktion lokal aufzurufen**

1. Führen Sie in Ihrer Befehlszeile im `sam-app` Projektverzeichnis Folgendes aus:

   ```
   $ sam local invoke
   ```

1. Das AWS SAMCLI erstellt einen lokalen Docker Container und ruft Ihre Funktion auf. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:

   ```
   $ sam local invoke
   Invoking app.lambda_handler (python3.9)
   Local image was not found.
   Removing rapid images for repo public.ecr.aws/sam/emulation-python3.9
   Building image.....................
   Using local image: public.ecr.aws/lambda/python:3.9-rapid-x86_64.
   
   Mounting /Users/.../Demo/sam-tutorial1/sam-app/.aws-sam/build/HelloWorldFunction as /var/task:ro,delegated inside runtime container
   START RequestId: b046db01-2a00-415d-af97-35f3a02e9eb6 Version: $LATEST
   END RequestId: b046db01-2a00-415d-af97-35f3a02e9eb6
   REPORT RequestId: b046db01-2a00-415d-af97-35f3a02e9eb6    Init Duration: 1.01 ms    Duration: 633.45 ms    Billed Duration: 634 ms    Memory Size: 128 MB    Max Memory Used: 128 MB
   {"statusCode": 200, "body": "{\"message\": \"hello world\"}"}
   ```

**Um Ihre API lokal zu hosten**

1. Führen Sie in Ihrer Befehlszeile im `sam-app` Projektverzeichnis Folgendes aus:

   ```
   $ sam local start-api
   ```

1. Der AWS SAMCLI erstellt einen lokalen Docker Container für Ihre Lambda-Funktion und erstellt einen lokalen HTTP-Server, um Ihren API-Endpunkt zu simulieren. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:

   ```
   $ sam local start-api
   Initializing the lambda functions containers.
   Local image is up-to-date
   Using local image: public.ecr.aws/lambda/python:3.9-rapid-x86_64.
   
   Mounting /Users/.../Demo/sam-tutorial1/sam-app/.aws-sam/build/HelloWorldFunction as /var/task:ro,delegated inside runtime container
   Containers Initialization is done.
   Mounting HelloWorldFunction at http://127.0.0.1:3000/hello [GET]
   You can now browse to the above endpoints to invoke your functions. You do not need to restart/reload SAM CLI while working on your functions, changes will be reflected instantly/automatically. If you used sam build before running local commands, you will need to re-run sam build for the changes to be picked up. You only need to restart AWS SAM CLI if you update your AWS SAM template
   2023-03-15 14:25:21 WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
    * Running on http://127.0.0.1:3000
   2023-03-15 14:25:21 Press CTRL+C to quit
   ```

1. Senden Sie mit Ihrem Browser oder der Befehlszeile eine GET-Anfrage an Ihren lokalen API-Endpunkt. Im Folgenden finden Sie ein Beispiel für die Verwendung des Befehls curl:

   ```
   $ curl http://127.0.0.1:3000/hello
   {"message": "hello world"}
   ```

## Schritt 8: Löschen Sie Ihre Anwendung aus dem AWS Cloud
<a name="serverless-getting-started-hello-world-delete"></a>

In diesem Schritt verwenden Sie den AWS SAMCLI **sam delete** Befehl, um Ihre Anwendung aus dem zu löschen AWS Cloud.

**Um Ihre Anwendung aus dem zu löschen AWS Cloud**

1. Führen Sie in Ihrer Befehlszeile im `sam-app` Projektverzeichnis Folgendes aus:

   ```
   $ sam delete
   ```

1. Sie AWS SAMCLI werden aufgefordert, dies zu bestätigen. Anschließend werden der Amazon S3 S3-Bucket und der CloudFormation Stack Ihrer Anwendung gelöscht. Im Folgenden finden Sie ein Beispiel für eine Ausgabe:

   ```
   $ sam delete
       Are you sure you want to delete the stack sam-app in the region us-west-2 ? [y/N]: y
       Are you sure you want to delete the folder sam-app in S3 which contains the artifacts? [y/N]: y
       - Deleting S3 object with key c6ce8fa8b5a97dd022ecd006536eb5a4
       - Deleting S3 object with key 5d513a459d062d644f3b7dd0c8b56a2a.template
       - Deleting S3 object with key sam-app/2bebf67c79f6a743cc5312f6dfc1efee.template
       - Deleting S3 object with key sam-app/6b208d0e42ad15d1cee77d967834784b.template
       - Deleting S3 object with key sam-app/da3c598813f1c2151579b73ad788cac8
       - Deleting S3 object with key sam-app/f798cdd93cee188a71d120f14a035b11
       - Deleting Cloudformation stack sam-app
   
   Deleted successfully
   ```

## Fehlerbehebung
<a name="serverless-getting-started-hello-world-troubleshoot"></a>

Informationen zur Behebung von Problemen finden Sie unter[AWS SAMCLIProblembehandlung](sam-cli-troubleshooting.md). AWS SAMCLI

## Weitere Informationen
<a name="serverless-getting-started-hello-world-learn"></a>

Weitere Informationen AWS SAM finden Sie in den folgenden Ressourcen:
+ **[Der komplette AWS SAM Workshop](https://s12d.com/sam-ws-en-intro)** — Ein Workshop, in dem Sie viele der wichtigsten Funktionen des Workshops kennenlernen AWS SAM möchten.
+ **[Sessions with SAM](https://www.youtube.com/playlist?list=PLJo-rJlep0ED198FJnTzhIB5Aut_1vDAd)** — Videoserie, die von unserem AWS Serverless Developer Advocate-Team zur Verwendung AWS SAM erstellt wurde.
+ **[Serverless Land](https://serverlessland.com/)** — Website, die die neuesten Informationen, Blogs, Videos, Code und Lernressourcen für AWS Serverless zusammenfasst.