

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.

# Erstellen einer Step Functions Functions-API mit API Gateway
<a name="tutorial-api-gateway"></a>

Sie können Amazon API Gateway verwenden, um Ihre AWS Step Functions APIs Methoden in einer API Gateway-API zu verknüpfen. Wenn eine HTTPS-Anfrage an eine API-Methode gesendet wird, ruft API Gateway Ihre Step Functions Functions-API-Aktionen auf.

In diesem Tutorial erfahren Sie, wie Sie eine API erstellen, die eine Ressource und die `POST`-Methode verwendet, um mit der API-Aktion `[StartExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)` zu kommunizieren. Sie verwenden die AWS Identity and Access Management (IAM-) Konsole, um eine Rolle für API Gateway zu erstellen. Anschließend verwenden Sie die API Gateway Gateway-Konsole, um eine API-Gateway-API zu erstellen, eine Ressource und Methode zu erstellen und die Methode der `StartExecution` API-Aktion zuzuordnen. Schließlich stellen Sie Ihre API bereit und testen sie.

**Anmerkung**  
Amazon API Gateway kann zwar eine Step Functions Functions-Ausführung durch einen Aufruf starten`StartExecution`, Sie müssen jedoch aufrufen, `[DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html)` um das Ergebnis zu erhalten.

## Schritt 1: Erstellen Sie eine IAM-Rolle für API Gateway
<a name="api-gateway-step-1"></a>

Bevor Sie Ihre API-Gateway-API erstellen, müssen Sie API Gateway die Erlaubnis erteilen, Step Functions Functions-API-Aktionen aufzurufen.<a name="api-gateway-procedure-create-iam-role"></a>

**So richten Sie Berechtigungen für API Gateway ein**

1. Melden Sie sich bei der [IAM-Konsole](https://console.aws.amazon.com/iam/home) an und wählen Sie **Rollen**, **Rolle erstellen** aus.

1. Gehen Sie auf der Seite **Select trusted entity** (Vertrauenswürdige Entität auswählen) wie folgt vor:

   1. Behalten Sie **unter Vertrauenswürdiger Entitätstyp** die Standardauswahl von **AWS-Service**bei.

   1. Wählen **Sie für Anwendungsfall** **API Gateway** aus der Dropdownliste aus.

1. Wählen Sie **API Gateway** und dann **Weiter** aus.

1. Wählen Sie auf der Seite **Add permissions** (Berechtigungen hinzufügen) die Option **Next** (Weiter) aus.

1. (Optional) Geben Sie auf der Seite **Name, Überprüfung und Erstellung** Details ein, z. B. den Rollennamen. Geben Sie z. B. ei **APIGatewayToStepFunctions**.

1. Wählen Sie **Rolle erstellen** aus.

   Die IAM-Rolle wird in der Rollenliste angezeigt.

1. Wählen Sie den Namen Ihrer Rolle und notieren Sie den **Role ARN (Rollen-ARN)**, wie im folgenden Beispiel gezeigt.

   ```
   arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
   ```<a name="api-gateway-attach-policy-to-role"></a>

**Um der IAM-Rolle eine Richtlinie anzuhängen**

1. Suchen Sie auf der Seite **Roles (Rollen)** Ihre Rolle (`APIGatewayToStepFunctions`) und wählen Sie dann die Rolle aus.

1. Wählen Sie auf der Registerkarte **Berechtigungen** die Option **Berechtigungen hinzufügen** und dann **Richtlinien anhängen** aus.

1. Suchen Sie auf der Seite „**Richtlinie anhängen**“ nach der Richtlinie`AWSStepFunctionsFullAccess`, wählen Sie sie aus und wählen Sie dann **Berechtigungen hinzufügen** aus.

## Schritt 2: Erstellen Sie Ihre API-Gateway-API
<a name="api-gateway-step-2"></a>

Nachdem Sie Ihre IAM-Rolle erstellt haben, können Sie Ihre benutzerdefinierte API-Gateway-API erstellen.

**So erstellen Sie die API**

1. Öffnen Sie die [Amazon API Gateway Gateway-Konsole](https://console.aws.amazon.com/apigateway/) und wählen Sie dann **Create API**.

1. **Wählen Sie auf der Seite „API-Typ** auswählen“ im Bereich **REST-API** die Option **Build** aus.

1. Wählen Sie auf der Seite **REST-API erstellen** die Option **Neue API** aus und geben Sie dann ***StartExecutionAPI*** den **API-Namen** ein.

1. Behalten Sie den **API-Endpunkttyp** auf **Regional** bei und wählen Sie dann **Create API** aus.<a name="api-gateway-create-resource"></a>

**So erstellen Sie eine Ressource**

1. Wählen Sie auf der Seite **Ressourcen** von ***StartExecutionAPI*** die Option **Ressource erstellen** aus.

1. Geben **execution** Sie auf der Seite **Ressource erstellen** den **Namen der Ressource** ein, und wählen Sie dann **Ressource erstellen** aus.<a name="api-gateway-create-method"></a>

**Um eine POST-Methode zu erstellen**

1. Wählen Sie die Ressource **/execution** und anschließend die **Methode Create** aus.

1. Wählen Sie als **Methodentyp** die Option`POST`.

1. Wählen Sie unter **Integrationstyp** die Option **AWS-Service** aus.

1. Wählen Sie für **AWS-Region**eine Region aus der Liste aus.

1. Wählen Sie für **AWS-Service****Step Functions** aus der Liste aus.

1. Lassen Sie die **AWS-Subdomain** leer.

1. Wählen Sie als **HTTP-Methode** **POST** aus der Liste aus.
**Anmerkung**  
Alle API-Aktionen von Step Functions verwenden die `POST` HTTP-Methode.

1. Wählen Sie für **Aktionstyp** die Option **Aktionsnamen verwenden** aus.

1. Für **Aktionsname** geben Sie **StartExecution** ein.

1. Geben Sie für die **Ausführungsrolle** [den Rollen-ARN der IAM-Rolle ein, die Sie zuvor erstellt haben](#api-gateway-procedure-create-iam-role), wie im folgenden Beispiel gezeigt.

   ```
   arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
   ```

1. **Behalten Sie die Standardoptionen für **Credential Cache** und **Default Timeout bei und wählen Sie** dann Save.**

Die visuelle Zuordnung zwischen API Gateway und Step Functions wird auf der Seite **/execution - POST - Method Execution** angezeigt.

## Schritt 3: Testen und Bereitstellen der API Gateway Gateway-API
<a name="api-gateway-step-3"></a>

Wenn Sie die API erstellt haben, können Sie sie testen und bereitstellen. <a name="api-gateway-test-api"></a>

**Um die Kommunikation zwischen API Gateway und Step Functions zu testen**

1. Wählen Sie auf der Seite **/execution — POST — Method Execution** die Registerkarte **Test** aus. Möglicherweise müssen Sie die rechte Pfeiltaste wählen, um die Registerkarte anzuzeigen.

1. **Kopieren Sie auf der Registerkarte **/execution - POST - Method Test** die folgenden Anforderungsparameter mithilfe des ARN einer vorhandenen Zustandsmaschine in den Abschnitt **Anforderungstext** (oder [erstellen Sie eine neue Zustandsmaschine, die eine Lambda-Funktion verwendet](tutorial-creating-lambda-state-machine.md)), und wählen Sie dann Test aus.**

   ```
   {
      "input": "{}",
      "name": "MyExecution",
      "stateMachineArn": "arn:aws:states:region:123456789012:stateMachine:HelloWorld"
   }
   ```

   Weitere Informationen finden Sie unter `StartExecution` [Anforderungssyntax](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html#API_StartExecution_RequestSyntax) in der *AWS Step FunctionsAPI-Referenz*.
**Anmerkung**  
Wenn Sie den ARN Ihrer Zustandsmaschine nicht in den Hauptteil Ihres API-Gateway-Aufrufs aufnehmen möchten, können Sie auf der Registerkarte **Integrationsanfrage** eine Zuordnungsvorlage konfigurieren, wie im folgenden Beispiel gezeigt.  

   ```
   {
       "input": "$util.escapeJavaScript($input.json('$'))",
       "stateMachineArn": "$util.escapeJavaScript($stageVariables.arn)"
   }
   ```
Mit diesem Ansatz können Sie je nach Entwicklungsphase verschiedene Zustandsmaschinen angeben ARNs (z. B.`dev`,`test`, und`prod`). Weitere Informationen zur Angabe von Stufenvariablen in einer Mapping-Vorlage finden Sie [https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#stagevariables-template-reference](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#stagevariables-template-reference)im *API Gateway Developer Guide*.

1. Die Ausführung beginnt und der Ausführungs-ARN und sein Epochendatum werden unter **Antworttext** angezeigt.

   ```
   {
      "executionArn": "arn:aws:states:region:123456789012:execution:HelloWorld:MyExecution",
      "startDate": 1486768956.878
   }
   ```
**Anmerkung**  
Sie können die Ausführung anzeigen, indem Sie Ihren Zustandsautomaten auf der [AWS Step Functions-Konsole](https://console.aws.amazon.com/states/) auswählen.

**Stellen Sie Ihre API bereit**

1. Wählen Sie auf der Seite **Ressourcen** von die ***StartExecutionAPI*** Option **Deploy API** aus.

1. Wählen Sie für **Stufe** die Option **Neue Stufe** aus.

1. Geben Sie für **Stage name (Stufenname)** **alpha** ein.

1. (Optional) Geben Sie unter **Description (Beschreibung)** eine Beschreibung ein.

1. Wählen Sie **Bereitstellen**.

**Testen der Bereitstellung**

1. Erweitern Sie auf der Seite **Stages** von ***StartExecutionAPI*** **alpha**,**/**, **/execution**, **POST** und wählen Sie dann die **POST-Methode** aus.

1. Wählen Sie unter **Methodenüberschreibungen** das Kopiersymbol aus, um die Aufruf-URL Ihrer API zu kopieren. Die vollständige URL sollte wie im folgenden Beispiel aussehen.

   ```
   https://a1b2c3d4e5.execute-api.region.amazonaws.com/alpha/execution
   ```

1. Führen Sie in der Befehlszeile mithilfe des ARN Ihres Zustandsautomaten den Befehl `curl` aus und rufen Sie dann den URL Ihrer Bereitstellung auf, wie im folgenden Beispiel gezeigt.

   ```
   curl -X POST -d '{"input": "{}","name": "MyExecution","stateMachineArn": "arn:aws:states:region:123456789012:stateMachine:HelloWorld"}' https://a1b2c3d4e5.execute-api.region.amazonaws.com/alpha/execution
   ```

   Der Ausführung-ARN und sein Epochendatum werden zurückgegeben, wie im folgenden Beispiel gezeigt.

   ```
   {"executionArn":"arn:aws:states:region:123456789012:execution:HelloWorld:MyExecution","startDate":1.486772644911E9}
   ```
**Anmerkung**  
Wenn Sie die Fehlermeldung „Fehlendes Authentifizierungstoken“ erhalten, stellen Sie sicher, dass die Aufruf-URL mit **/execution** endet.