AWS Lambda-Aufgaben - Amazon Simple Workflow Service

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.

AWS Lambda-Aufgaben

Informationen zu AWS Lambda

AWS Lambdaist ein vollständig verwalteter Datenverarbeitungsservice, der Ihren Code beim Eintreten bestimmter Ereignisse ausführt, die von einem benutzerdefiniertem Code oder von verschiedenenAWS-Services wie Amazon S3, DynamoDB, Amazon Kinesis, Amazon SNS und Amazon Cognito. Weitere Informationen zu Lambda finden Sie im AWS Lambda Entwicklerhandbuch.

Amazon Simple Workflow Service stellt eine Lambda-Aufgabe bereit, sodass Sie Lambda-Funktionen anstelle von oder neben herkömmlichen Amazon SWF SWF-Aktivitäten ausführen können.

Wichtig

IhreAWSDas Konto wird für Lambda-Ausführungen (Anfragen) belastet, die von Amazon SWF in Ihrem Namen ausgeführt werden. Weitere Informationen zu Lambda-Preisen finden Sie unterhttps://aws.amazon.com/lambda/pricing/aus.

Vorteile und Einschränkungen der Verwendung von Lambda-Aufgaben

Die Verwendung von Lambda-Aufgaben bietet anstelle einer herkömmlichen Amazon SWF SWF-Aktivität eine Reihe von Vorteilen:

  • Lambda-Aufgaben müssen nicht wie Amazon SWF SWF-Aktivitätstypen registriert oder versioniert werden.

  • Sie können alle vorhandenen Lambda-Funktionen verwenden, die Sie bereits in Ihren -Workflows definiert haben.

  • Lambda-Funktionen werden Amazon SWF aufgerufen. Im Gegensatz zu herkömmlichen Aktivitäten müssen Sie für ihre Ausführung kein Worker-Programm installieren.

  • Lambda stellt Ihnen Metriken und Protokolle zur Verfügung, um Ihre Funktionsausführungen zu verfolgen und zu analysieren.

Bei Lambda-Aufgaben sind jedoch einige Einschränkungen zu beachten:

  • Lambda-Aufgaben können nur in ausgeführt werdenAWS-Regionen, die Lambda unterstützen. Siehe .Lambda-Regionen und -EndpunkteimAllgemeine Amazon Web Services Services-Referenzfür Einzelheiten über die derzeit unterstützten Regionen für Lambda.

  • Lambda-Aufgaben werden derzeit nur von der grundlegenden SWF-HTTP-API und in AWS Flow Framework für Java unterstützt. In AWS Flow Framework für Ruby steht keine Unterstützung für Lambda-Aufgaben zur Verfügung.

Verwenden von Lambda-Aufgaben in Ihren -Workflows

Um Lambda-Aufgaben in Ihren Amazon SWF SWF-Workflows zu verwenden, müssen Sie:

  1. IAM-Rollen einrichten, um Amazon SWF die Berechtigung zum Aufrufen von Lambda-Funktionen zu erteilen.

  2. die IAM-Rollen Ihren Workflows anfügen.

  3. Ihre Lambda-Funktion während der Workflow-Ausführung aufrufen.

Einrichten einer IAM-Rolle

Bevor Sie Lambda-Funktionen von Amazon SWF aufrufen können, müssen Sie eine IAM-Rolle bereitstellen, die den Zugriff auf Lambda von Amazon SWF ermöglicht. Führen Sie dazu einen der folgenden Schritte aus:

  • wähle eine vordefinierte Rolle,AWSLambdaRole, um Ihren Workflows die Berechtigung zum Aufrufen einer Lambda-Funktion zu erteilen, die Ihrem Konto zugeordnet sind.

  • Definieren Sie eine eigene Richtlinie und zugewiesene Rolle, um Workflows die Berechtigung zum starten bestimmter Lambda-Funktionen, die durch ihre Amazon-Ressourcennamen (ARNs) angegeben werden, zu erteilen.

Berechtigung für eine IAM-Rolle einschränken

Sie können Berechtigungen für eine IAM-Rolle einschränken, die Sie Amazon SWF zur Verfügung stellen, indem Sie dieSourceArnundSourceAccountKontextschlüssel in Ihrer Ressourcenvertrauensrichtlinie. Diese Schlüssel beschränken die Verwendung einer IAM-Richtlinie, sodass sie nur von Amazon Simple Workflow Service-Ausführungen verwendet wird, die in den angegebenen Domänen-ARN gehören. Wenn Sie beide globalen Bedingungskontextschlüssel verwenden, wird deraws:SourceAccountWert und das Konto, auf das imaws:SourceArnvalue muss dieselbe Konto-ID verwenden, wenn sie in derselben Richtlinienanweisung verwendet werden.

Im folgenden Beispiel einer Vertrauensrichtlinie verwenden wirSourceArnKontextschlüssel zur Beschränkung der IAM-Servicerolle auf die Verwendung nur in Amazon Simple Workflow Service-Ausführungen, die zu gehörensomeDomainim Konto123456789012aus.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "swf.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:swf:*:123456789012:/domain/someDomain" } } } ] }

Im folgenden Beispiel einer Vertrauensrichtlinie verwenden wirSourceAccountKontextschlüssel zur Beschränkung der IAM-Servicerolle, die nur in Amazon Simple Workflow Service-Ausführungen im Konto verwendet wird,123456789012aus.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "swf.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceAccount": "123456789012" } } } ] }

Amazon SWF den Zugriff zum Aufrufen einer Lambda-Rolle erteilen

Sie können die vordefinierte Rolle verwenden,AWSLambdaRole, um Ihren Amazon SWF SWF-Workflows die Möglichkeit zu geben, jede Lambda-Funktion aufzurufen, die Ihrem Konto zugeordnet sind.

Um zu verwendenAWSLambdaRoleum Amazon SWF Zugriff auf Lambda-Funktionen zu erteilen
  1. Öffnen Sie die Amazon IAM-Konsole.

  2. Wählen Sie Roles und anschließend Create New Role aus.

  3. Geben Sie einen Namen für die Rolle ein, z. B. swf-lambda, und klicken Sie auf Next Step.

  4. UNDERAWS-Servicerollen, wählenAmazon SWF, und wählenNächster Schrittaus.

  5. Auf derRichtlinie anfügenbildschirm,AWSLambdaRoleaus der Liste.

  6. Klicken Sie auf Next Step und auf Create Role, sobald Sie die Rolle überprüft haben.

Definieren einer IAM-Rolle für die Zugriffserteilung für eine bestimmte Lambda-Funktion

Wenn Sie den Zugriff zum Aufrufen einer bestimmten Lambda-Funktion über Ihren Workflow erteilen möchten, müssen Sie Ihre eigene IAM-Richtlinie definieren.

So erstellen Sie eine IAM-Richtlinie für die Zugriffserteilung für eine bestimmte Lambda-Funktion
  1. Öffnen Sie die Amazon IAM-Konsole.

  2. Wählen Sie Policies und dann Create Policy aus.

  3. Klicken Sie aufKopieren einesAWS-verwaltete Richtlinieund WÄHLEN VONAWSLambdaRoleaus der Liste. Es wird eine Richtlinie erstellt. Sie können ihren Namen und die Beschreibung nach Bedarf ändern.

  4. In derRessourcefield desPolicy Document, fügen Sie den ARN Ihrer Lambda-Funktion (en) hinzu. Beispiel:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-east-1:111111000000:function:hello_lambda_function" ] } ] }
    Anmerkung

    Eine vollständige Beschreibung der Vorgehensweisen zum Angeben von Ressourcen in einer IAM-Rolle finden Sie unterÜbersicht über IAM-RichtlinieninVerwenden von IAMaus.

  5. Wählen Sie Create policy aus, um Ihre Richtlinie zu erstellen.

Sie können diese Richtlinie dann auswählen, wenn Sie eine neue IAM-Rolle erstellen und diese Rolle verwenden, um den Aufruf Zugriff auf Ihre Amazon SWF SWF-Workflows zu erteilen. Diese Vorgehensweise ist ähnlich wie das Erstellen einer -Rolle mitAWSLambdaRole-Richtlinien. Wählen Sie stattdessen Ihre eigene Richtlinie beim Erstellen der -Rolle aus.

So erstellen Sie eine Amazon SWF SWF-Rolle mit Ihrer Lambda-Richtlinie
  1. Öffnen Sie die Amazon IAM-Konsole.

  2. Wählen Sie Roles und anschließend Create New Role aus.

  3. Geben Sie einen Namen für die Rolle ein, z. B. swf-lambda-function, und klicken Sie auf Next Step.

  4. UNDERAWS-Servicerollen, wählenAmazon SWF, und wählenNächster Schrittaus.

  5. Auf derRichtlinie anfügenWählen Sie Ihre funktionsspezifische Lambda-Richtlinie aus der Liste aus.

  6. Klicken Sie auf Next Step und auf Create Role, sobald Sie die Rolle überprüft haben.

Anfügen der IAM-Rolle an Ihren Workflow

Nachdem Sie Ihre IAM-Rolle definiert haben, müssen Sie sie an den Workflow anfügen, der die Rolle zum Aufrufen der Lambda-Funktionen, auf die Sie Amazon SWF Zugriff erteilt haben, verwenden wird.

Sie können die Rolle an zwei Stellen an Ihren Workflow anfügen.

  • Während der Workflow-Typ registriert wird. Diese Rolle kann als die Standard-Lambda-Rolle für jede Ausführung dieses Workflow-Typs verwendet werden.

  • Beim Start einer Workflow-Ausführung. Diese Rolle wird nur während der Ausführung dieses Workflows (und während der gesamten Ausführung) verwendet.

So stellen Sie eine Standard-Lambda-Rolle für einen Workflow-Typ bereit
  • Beim AnrufenRegisterWorkflowGeben Sie ein, stellen Sie diedefaultLambdaRolefield zum ARN der Rolle, die Sie definiert haben.

So stellen Sie eine Lambda-Rolle während der Workflow-Ausführung bereit
  • Beim AnrufenStartWorkflowLegen Sie im Feld LambdaRole den ARN der Rolle fest, die Sie definiert haben.

Anmerkung

wenn das Konto anruftRegisterWorkflowTyp oderStartWorkflowDie Ausführung hat keine Berechtigung, die angegebene Rolle zu verwenden, dann schlägt der Aufruf mit einerOperationNotPermittedFaultaus.

Rufen Sie Ihre Lambda-Funktion von einem Amazon SWF SWF-Workflow aus auf

Sie können dasScheduleLambdaFunctionDecisionAttribute des Datentyps, um die Lambda-Funktion zu identifizieren, die während einer Workflow-Ausführung aufgerufen werden soll.

Während eines Anrufs beiRespondDecisionTaskCompletedstellen Sie ein zur VerfügungScheduleLambdaFunctionDecisionAttribute Ihrer Entscheidungsliste. Beispiel:

{ "decisions": [{ "ScheduleLambdaFunctionDecisionAttributes": { "id": "lambdaTaskId", "name": "myLambdaFunctionName", "input": "inputToLambdaFunction", "startToCloseTimeout": "30" }, }], }

Legen Sie die folgenden Parameter fest:

  • id mit einem Bezeichner für die Lambda-Aufgabe. Dies muss eine Zeichenfolge mit 1 bis 256 Zeichen sein und darf weder die Zeichen : (Doppelpunkt), / (Schrägstrich), | (senkrechter Strich), noch Steuerzeichen (\u0000 - \u001f und \u007f - \u009f) oder die Literalzeichenfolge arn enthalten.

  • name mit dem Namen Ihrer Lambda-Funktion. Ihr Amazon SWF SWF-Workflow muss mit einer IAM-Rolle bereitgestellt werden, die den Zugriff zum Aufrufen der Lambda-Funktion gewährt. Der bereitgestellte Name muss den Einschränkungen fürFunctionNameParameter wie in der Lambda-Aufrufaktion.

  • input mit optionalen Eingabedaten für die Funktion. Wenn diese Option festgelegt ist, muss dies den Einschränkungen fürClientContextParameter wie in der Lambda-Aufrufaktion.

  • startToCloseTimeoutmit einem optionalen maximalen Zeitraum (in Sekunden), der von der Funktion dazu verwendet werden kann, die Ausführung auszuführen, bevor sie aufgrund einer Ausnahme der Zeitbeschränkung fehlschlägt. Der Wert NONE kann dafür verwendet werden, eine unbegrenzte Dauer festzulegen.

Weitere Informationen finden Sie unterImplementierungAWS LambdaAufgaben