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

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

Um mehr über die Integration mit zu erfahren AWS Dienste in Step Functions, siehe Integrieren von -Services undÜbergeben von Parametern an einen Dienst API in Step Functions.

Hauptmerkmale der optimierten Lambda-Integration
  • 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ütztes Lambda APIs

Workflow-Beispiele

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:

IAMRichtlinien für Anrufe AWS Lambda

Die folgenden Beispielvorlagen zeigen, wie AWS Step Functions generiert IAM Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition. Weitere Informationen erhalten Sie unter So generiert Step Functions IAM Richtlinien für integrierte Dienste und Entdecken Sie Serviceintegrationsmuster in Step Functions.

AWS Step Functions generiert eine IAM Richtlinie auf der Grundlage Ihrer Zustandsmaschinen-Definition. Für eine Zustandsmaschine mit zwei AWS Lambda Task-Status, die function1 und aufrufenfunction2, muss eine Richtlinie mit lambda:Invoke Berechtigungen für die beiden Funktionen verwendet werden.

Dies wird im folgenden Beispiel veranschaulicht.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:[[region]]:[[accountId]]:function:[[function1]]", "arn:aws:lambda:[[region]]:[[accountId]]:function:[[function2]]" ] } ] }