Rufen Sie Lambda 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 Lambda mit Step Functions auf

Step Functions können bestimmte steuernAWS-Services direkt aus der Amazon States Language. Weitere Informationen zur Arbeit mitAWS Step Functionsund seine Integrationen finden Sie unter:

Wie sich die optimierte Lambda-Integration von der Lambda unterscheidetAWSSDK-Integration
  • DiePayloadFeld der Antwort wird von Escape-Json nach Json geparst.

  • Wenn die -Antwort das Feld enthältFunctionErrorschlägt die Aufgabe fehl.

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

Unterstützte AWS Lambda-APIs:

Das folgende Beispiel enthält einTask-Status, der eine Lambda-Funktion aufruft.

{ "StartAt":"CallLambda", "States":{ "CallLambda":{ "Type":"Task", "Resource":"arn:aws:states:::lambda:invoke", "Parameters":{ "FunctionName":"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":"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 auf den Abschluss der Funktion. Wenn Sie die Lambda-Funktion mit einer Callback-Aufgabe aufrufen, beginnt das Heartbeat-Timeout erst zu zählen, nachdem die Lambda-Funktion die Ausführung abgeschlossen und das Task-Token zurückgegeben hat. Solange die Lambda-Funktion ausgeführt wird, wird das Heartbeat-Timeout nicht durchgesetzt.

Es ist auch möglich, Lambda asynchron mit demInvocationType-Parameter, wie im folgenden Beispiel dargestellt wird:

Anmerkung

Bei asynchronen Aufrufen von Lambda-Funktionen beginnt die Heartbeat-Timeoutperiode 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": "echo", "InvocationType": "Event" }, "End": true } } }

Wenn derTaskresult wird zurückgegeben, die Funktionsausgabe ist in einem Wörterbuch von Metadaten verschachtelt. Zum 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 }

Alternativ können Sie eine Lambda-Funktion aufrufen, indem Sie einen Funktions-ARN direkt im Feld „Ressource“ angeben. Wenn Sie eine Lambda-Funktion auf diese Weise aufrufen, können 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 Version oder den Alias einer Lambda-Funktion aufrufen, indem Sie diese Optionen im ARN imResourcefield. Siehe Folgendes in der Lambda-Dokumentation:

Weitere Informationen zur Konfiguration von IAM bei Verwendung von Step Functions mit anderenAWSDienstleistungen finden Sie unterIAM-Richtlinien für integrierte Diensteaus.