

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.

# Rufen Sie eine AWS Lambda Funktion mit Step Functions auf
<a name="connect-lambda"></a>

Erfahren Sie, wie Sie Step Functions verwenden, um Lambda-Funktionen entweder synchron oder asynchron als Teil einer ereignisgesteuerten serverlosen Anwendung aufzurufen.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Hauptmerkmale der optimierten Lambda-Integration**  
Das `Payload` Feld der Antwort wird von maskiertem Json nach Json analysiert.
Wenn innerhalb der Lambda-Funktion eine Ausnahme ausgelöst wird, schlägt die Aufgabe fehl. Ein praktisches Beispiel finden Sie unter[Behandlung von Fehlerbedingungen in einer Step Functions Functions-Zustandsmaschine](tutorial-handling-error-conditions.md). 

## Optimiertes Lambda APIs
<a name="connect-lambda-api"></a>
+ [https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html)

## Workflow-Beispiele
<a name="connect-lambda-api-examples"></a>

Das Folgende beinhaltet einen `Task` Zustand, der eine Lambda-Funktion aufruft.

```
{  
   "StartAt":"CallLambda",
   "States":{  
      "CallLambda":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::lambda:invoke",
         "Arguments":{  
            "FunctionName":"arn:aws:lambda:region:account-id:function:MyFunction"
         },
         "End":true
      }
   }
}
```

Das Folgende enthält einen `Task`-Zustand zur Implementierung des [Callback-](connect-to-resource.md#connect-wait-token) Service-Integrationsmusters.

```
{  
   "StartAt":"GetManualReview",
   "States":{  
      "GetManualReview":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken",
         "Arguments":{  
            "FunctionName":"arn:aws:lambda:region:account-id:function:get-model-review-decision",
            "Payload":{  
               "model":"{% $states.input.my-model %}",
               "TaskToken": "{% $states.context.Task.Token %}"
            },
            "Qualifier":"prod-v1"
         },
         "End":true
      }
   }
}
```

Wenn Sie eine Lambda-Funktion aufrufen, wartet die Ausführung, bis die Funktion abgeschlossen ist. Wenn Sie die Lambda-Funktion mit einer Callback-Aufgabe aufrufen, beginnt das Heartbeat-Timeout erst zu zählen, wenn die Ausführung der Lambda-Funktion abgeschlossen und ein Ergebnis zurückgegeben wurde. Solange die Lambda-Funktion ausgeführt wird, wird das Heartbeat-Timeout nicht erzwungen.

Es ist auch möglich, Lambda asynchron mithilfe des `InvocationType` Parameters aufzurufen, wie im folgenden Beispiel zu sehen ist:

```
{

  "Comment": "A Hello World example of the Amazon States Language using Pass states",
  "StartAt": "Hello",
  "States": {
    "Hello": {
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "Arguments": {
        "FunctionName": "arn:aws:lambda:region:account-id:function:echo",
        "InvocationType": "Event"
      },
      "End": true
    }
  }
}
```

**Anmerkung**  
Bei asynchronen Aufrufen von Lambda-Funktionen beginnt die Heartbeat-Timeout-Periode sofort.

 Wenn das `Task` Ergebnis zurückgegeben wird, ist die Funktionsausgabe in einem Metadatenwörterbuch verschachtelt. Beispiel:

```
{

   "ExecutedVersion":"$LATEST",
   "Payload":"FUNCTION OUTPUT",
   "SdkHttpMetadata":{
      "HttpHeaders":{
         "Connection":"keep-alive",
         "Content-Length":"4",
         "Content-Type":"application/json",
         "Date":"Fri, 26 Mar 2021 07:42:02 GMT",
         "X-Amz-Executed-Version":"$LATEST",
         "x-amzn-Remapped-Content-Length":"0",
         "x-amzn-RequestId":"0101aa0101-1111-111a-aa55-1010aaa1010",
         "X-Amzn-Trace-Id":"root=1-1a1a000a2a2-fe0101aa10ab;sampled=0"
      },
      "HttpStatusCode":200
   },
   "SdkResponseMetadata":{
      "RequestId":"6b3bebdb-9251-453a-ae45-512d9e2bf4d3"
   },
   "StatusCode":200
}
```

## Direkt angegebene Funktionsressource
<a name="w2aac33c40c13"></a>

Alternativ können Sie eine Lambda-Funktion aufrufen, indem Sie einen Funktions-ARN direkt im Feld „Resource“ angeben. Wenn Sie eine Lambda-Funktion auf diese Weise aufrufen, können Sie sie nicht angeben`.waitForTaskToken`, und das Aufgabenergebnis enthält nur die Funktionsausgabe.

```
{  
   "StartAt":"CallFunction",
   "States":{  
      "CallFunction": {  
         "Type":"Task",
         "Resource":"arn:aws:lambda:region:account-id:function:HelloFunction",
         "End": true
      }
   }
}
```

Bei dieser Form der Integration könnte die Funktion erfolgreich sein und dennoch eine Antwort senden, die ein Feld enthält. `FunctionError` In diesem Szenario schlägt die Workflow-Aufgabe fehl.

Sie können eine bestimmte Lambda-Funktionsversion oder einen bestimmten Alias aufrufen, indem Sie diese Optionen im ARN im `Resource` Feld angeben. In der Lambda-Dokumentation finden Sie Folgendes:
+ [AWS Lambda-Versioning](https://docs.aws.amazon.com/lambda/latest/dg/versioning-intro.html)
+ [AWS LambdaAliase](https://docs.aws.amazon.com/lambda/latest/dg/aliases-intro.html)

## IAM-Richtlinien für Anrufe AWS Lambda
<a name="lambda-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer Zustandsmaschinen-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

Im folgenden Beispiel, einer Zustandsmaschine mit zwei AWS Lambda Aufgabenstatus, die aufrufen `function1` und`function2`, beinhaltet die automatisch generierte Richtlinie `lambda:Invoke` Berechtigungen für beide Funktionen.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "arn:aws:lambda:us-east-1:123456789012:function:myFn1",
                "arn:aws:lambda:us-east-1:123456789012:function:myFn2"
            ]
        }
    ]
}
```