Lambda mit Step-Funktionen aufrufen - 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.

Lambda mit Step-Funktionen aufrufen

Step Functions kann bestimmte AWS Dienste direkt von Amazon States Language (ASL) aus steuern. Weitere Informationen hierzu finden Sie unter Arbeiten mit anderen -Services und Parameter an eine Service-API übergeben.

Wie sich die optimierte Lambda-Integration von der AWS Lambda-SDK-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 Ausgabeverarbeitung in Step Functions.

Unterstützte AWS Lambda APIs:

Anmerkung

Parameter in Step Functions werden in ausgedrückt PascalCase, auch wenn sich die native Service-API in CamelCase befindet. Sie könnten beispielsweise die Step Functions API-Aktion verwenden startSyncExecution und ihren Parameter als angeben. 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 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:us-east-1:123456789012:function:HelloFunction", "End": true } } }

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:

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