Rufen Sie eine AWS Lambda Funktion mit Step Functions auf - AWS Step Functions

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

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

Step Functions kann bestimmte AWS Dienste direkt von Amazon States Language (ASL) aus steuern. Weitere Informationen hierzu finden Sie unter Integration anderer Services und Übergeben von Parametern an einen Dienst API in Step Functions.

Wie sich die optimierte Lambda-Integration von der AWS SDK Lambda-Integration unterscheidet
  • Das Payload Feld der Antwort wird von maskiertem Json nach Json analysiert.

  • Wenn die Antwort das Feld enthält FunctionError oder innerhalb der Lambda-Funktion eine Ausnahme ausgelöst wird, schlägt die Aufgabe fehl.

Weitere Informationen zum Verwalten von Zustandseingaben, -ausgaben und -ergebnissen finden Sie unter Eingabe und Ausgabe in Step Functions verarbeiten.

Unterstützt AWS Lambda APIs:

Die Parameter in Step Functions werden ausgedrückt in PascalCase

Auch wenn der systemeigene Dienst API aktiviert istcamelCase, z. B. die API AktionstartSyncExecution, geben Sie Parameter in an PascalCase, z. B.:StateMachineArn.

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

{ "StartAt":"CallLambda", "States":{ "CallLambda":{ "Type":"Task", "Resource":"arn:aws:states:::lambda:invoke", "Parameters":{ "FunctionName":"arn:aws:lambda:us-east-1:123456789012:function:MyFunction" }, "End":true } } }

Das Folgende enthält einen Task-Zustand zur Implementierung des Callback- Service-Integrationsmusters.

{ "StartAt":"GetManualReview", "States":{ "GetManualReview":{ "Type":"Task", "Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken", "Parameters":{ "FunctionName":"arn:aws:lambda:us-east-1:123456789012:function:get-model-review-decision", "Payload":{ "model.$":"$.new_model", "token.$":"$$.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:

Anmerkung

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

{ "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", "Parameters": { "FunctionName": "arn:aws:lambda:us-east-1:123456789012:function:echo", "InvocationType": "Event" }, "End": true } } }

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

{ "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 }

Alternativ können Sie eine Lambda-Funktion aufrufen, indem Sie eine Funktion ARN direkt im Feld „Ressource“ 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:us-east-1:123456789012:function:HelloFunction", "End": true } } }

Sie können eine bestimmte Lambda-Funktionsversion oder einen bestimmten Alias aufrufen, indem Sie diese Optionen ARN im Resource Feld angeben. In der Lambda-Dokumentation finden Sie Folgendes:

Informationen zur Konfiguration von IAM Berechtigungen bei der Verwendung Step Functions mit anderen AWS Diensten finden Sie unterSo generiert Step Functions IAM Richtlinien für integrierte Dienste.