Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Tâches AWS Lambda
Rubriques
A propos d'AWS Lambda
AWS Lambdaest un service de calcul entièrement géré qui exécute votre code en réponse à des événements générés par le code personnalisé ou depuis divers événementsAWStels qu'Amazon S3, DynamoDB, Amazon Kinesis, Amazon SNS et Amazon Cognito. Pour plus d'informations sur Lambda, consultez le guide du développeur AWS Lambda.
Amazon Simple Workflow Service fournit une tâche Lambda afin que vous puissiez exécuter des fonctions Lambda à la place des activités Amazon SWF traditionnelles ou en parallèle à celles-ci.
Important
Vos recettesAWSsera facturé pour les exécutions (demandes) Lambda effectuées par Amazon SWF en votre nom. Pour plus d'informations sur la tarification Lambda, rendez-vous surhttps://aws.amazon.com/lambda/pricing/
Avantages et limites liées à l'utilisation des tâches Lambda
L'utilisation de tâches Lambda présente plusieurs avantages par rapport à une activité Amazon SWF traditionnelle :
-
Contrairement aux types d'activités Amazon SWF, les tâches Lambda n'ont pas besoin d'être enregistrées ou versionnées.
-
Vous pouvez utiliser n'importe quelle fonction Lambda déjà définie dans vos flux de travail.
-
Les fonctions Lambda sont appelées directement par Amazon SWF ; vous n'avez pas besoin d'implémenter un programme de travail pour les exécuter comme vous devez le faire avec les activités traditionnelles.
-
Lambda fournit des métriques et des journaux pour le suivi et l'analyse des exécutions de fonctions.
Vous devez également connaître les quelques limites qui s'appliquent aux tâches Lambda :
-
Les tâches Lambda peuvent uniquement être exécutées dansAWSqui prennent en charge Lambda. VoirRégions et points de terminaison Lambdadans leRéférence générale Amazon Web Servicespour plus d'informations sur les régions actuellement prises en charge pour Lambda.
-
Actuellement, les tâches Lambda sont uniquement prises en charge par l'API HTTP SWF de base et dans AWS Flow Framework pour Java. AWS Flow Framework pour Ruby ne prend pas actuellement en charge les tâches Lambda.
Utilisation de tâches Lambda dans vos flux de travail
Pour utiliser des tâches Lambda dans vos flux de travail Amazon SWF, vous devez :
-
Configurez des rôles IAM pour permettre à Amazon SWF d'appeler des fonctions Lambda.
-
Attachez les rôles IAM à vos flux de travail.
-
Appelez la fonction Lambda pendant une exécution de flux de travail.
Configuration d'un rôle IAM
Avant de pouvoir appeler des fonctions Lambda depuis Amazon SWF, vous devez fournir un rôle IAM qui assure l'accès à Lambda depuis Amazon SWF. Vous avez le choix entre les options suivantes :
-
choisir un rôle prédéfini,AWSLambdaRole, pour autoriser les flux de travail à appeler les fonctions Lambda associées à votre compte.
-
définissez votre propre stratégie et le rôle associé pour autoriser les flux de travail à appeler des fonctions Lambda particulières, spécifiées par leurs Amazon Resource Name (ARN).
Limiter les autorisations sur un rôle IAM
Vous pouvez limiter les autorisations sur un rôle IAM que vous fournissez à Amazon SWF à l'aide duSourceArn
etSourceAccount
clés contextuelles dans votre stratégie de confiance des ressources. Ces clés limitent l'utilisation d'une stratégie IAM de sorte qu'elle n'est utilisée que depuis les exécutions Amazon Simple Workflow Service appartenant à l'ARN du domaine spécifié. Si vous utilisez les deux clés de contexte de condition globale, l'optionaws:SourceAccount
et le compte référencé dans leaws:SourceArn
doit utiliser le même ID de compte lorsqu'elle est utilisée dans la même instruction de stratégie.
Dans l'exemple de stratégie d'approbation suivant, nous utilisons la stratégieSourceArn
clé contextuelle pour limiter l'utilisation du rôle de service IAM uniquement dans les exécutions Amazon Simple Workflow Service appartenant àsomeDomain
dans le compte,123456789012
.
{ "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" } } } ] }
Dans l'exemple de stratégie d'approbation suivant, nous utilisons la stratégieSourceAccount
clé contextuelle pour limiter l'utilisation du rôle de service IAM uniquement dans les exécutions Amazon Simple Workflow Service dans le compte,123456789012
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "swf.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringLike": { "aws:SourceAccount": "123456789012" } } } ] }
Donner à Amazon SWF l'accès requis pour appeler un rôle Lambda
Vous pouvez utiliser le rôle prédéfini,AWSLambdaRole, afin de donner à vos flux de travail Amazon SWF la possibilité d'appeler les fonctions Lambda associées à votre compte.
Pour utiliserAWSLambdaRolepour autoriser Amazon SWF à appeler des fonctions Lambda
-
Ouvrez la console Amazon IAM
. -
Choisissez Rôles, puis Créer un rôle.
-
Attribuez un nom à votre rôle, tel que
swf-lambda
, puis choisissez Étape suivante. -
UNDERAWSRôles de service, choisissezAmazon SWF, et choisissezÉtape suivante.
-
Dans la pageattacher une politique, choisissezAWSLambdaRoleDans la liste.
-
Choisissez Étape suivante, puis Créer un rôle une fois que vous avez vérifié le rôle.
Définition d'un rôle IAM afin de fournir l'accès requis pour appeler une fonction Lambda spécifique
Si vous souhaitez fournir l'accès nécessaire pour appeler une fonction Lambda spécifique à partir de votre flux de travail, vous devez définir votre propre stratégie IAM.
Pour créer une stratégie IAM afin de fournir l'accès à une fonction Lambda spécifique
-
Ouvrez la console Amazon IAM
. -
Choisissez Stratégies, puis Créer une stratégie.
-
ChoisissezCopier uneAWSStratégie géréeet sélectionnezAWSLambdaRoleDans la liste. Une stratégie sera générée pour vous. Au besoin, modifiez son nom et sa description.
-
DansRessourcedu domaineDocument de stratégie, ajoutez l'ARN de vos fonctions Lambda. Par exemple :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-east-1:111111000000:function:hello_lambda_function" ] } ] }
Note
Pour une description complète de la procédure à suivre pour spécifier des ressources dans un rôle IAM, consultez la sectionPrésentation des stratégies IAMdansUtilisation d'IAM.
-
Choisissez Créer une stratégie afin de finaliser la création de la stratégie.
Vous pouvez ensuite sélectionner cette stratégie lors de la création d'un rôle IAM et utiliser ce dernier pour donner les autorisations d'accès requises pour appeler vos flux de travail Amazon SWF. Cette procédure est très similaire à la création d'un rôle avec leAWSLambdaRoleChoisissez plutôt votre propre stratégie lors de la création du rôle.
Pour créer un rôle Amazon SWF à l'aide de votre stratégie Lambda
-
Ouvrez la console Amazon IAM
. -
Choisissez Rôles, puis Créer un rôle.
-
Attribuez un nom à votre rôle, tel que
swf-lambda-function
, puis choisissez Étape suivante. -
UNDERAWSRôles de service, choisissezAmazon SWF, et choisissezÉtape suivante.
-
Dans la pageattacher une politique, choisissez la stratégie spécifique à une fonction Lambda dans la liste.
-
Choisissez Étape suivante, puis Créer un rôle une fois que vous avez vérifié le rôle.
Attacher le rôle IAM à votre flux de travail
Une fois que vous avez défini le rôle IAM, vous devez l'attacher au flux de travail qui l'utilisera pour appeler les fonctions Lambda auxquelles peut accéder.
Vous pouvez attacher le rôle au flux de travail à deux niveaux :
-
Lors de l'enregistrement de type de flux de travail. Ce rôle pourra ensuite être utilisé comme rôle Lambda par défaut pour chaque exécution de ce type de flux de travail.
-
Lors du lancement d'une exécution de flux de travail. Ce rôle sera utilisé uniquement au cours de l'exécution de ce flux de travail (et tout au long de l'exécution).
Pour fournir un rôle Lambda par défaut pour un type de flux de travail
-
Lorsque vous appelezRegisterWorkflowTapez, définissez le paramètredefaultLambdaRoledans l'ARN du rôle que vous avez défini.
Pour fournir un rôle Lambda à utiliser pendant une exécution de flux de travail
-
Lorsque vous appelezStartWorkflowExécution, indiquez l'ARN du rôle que vous avez défini dans le champ LambdaRole.
Note
Si le compte appelleRegisterWorkflowType ouStartWorkflowL'exécution n'a pas l'autorisation d'utiliser le rôle donné, l'appel échoue avec un rôleOperationNotPermittedFault.
Appeler votre fonction Lambda à partir d'un flux de travail Amazon SWF
Vous pouvez utiliser le pluginScheduleLambdaFunctionDecisionAttribute le type de données pour identifier la fonction Lambda à appeler pendant l'exécution d'un flux de travail.
Lors d'un appel àRespondDecisionTaskCompleted, fournir unScheduleLambdaFunctionDecisionAttributs de votre liste de décisions. Par exemple :
{ "decisions": [{ "ScheduleLambdaFunctionDecisionAttributes": { "id": "lambdaTaskId", "name": "myLambdaFunctionName", "input": "inputToLambdaFunction", "startToCloseTimeout": "30" }, }], }
Définissez les paramètres suivants :
-
ID avec un identifiant pour la tâche Lambda. Il doit s'agir d'une chaîne qui contient entre 1 et 256 caractères, sans les caractères : (deux points), / (barre oblique), | (barre verticale) ni les caractères de contrôle (\u0000 - \u001f et \u007f - \u009f), ni la chaîne littérale
arn
. -
nom avec le nom de votre fonction Lambda. Votre flux de travail Amazon SWF doit être fourni avec un rôle IAM qui lui donne l'accès à la fonction Lambda. Le nom indiqué doit respecter les contraintes duFunctionNamecomme dans l'action Lambda Invoke.
-
input avec les données d'entrée facultatives de la fonction. Si cette valeur est définie, elle doit respecter les contraintes du paramètreClientContextcomme dans l'action Lambda Invoke.
-
startToCloseTimeout (Expiration)avec la durée maximale, en secondes, que la fonction peut prendre pour s'exécuter avant que la tâche n'échoue pour cause d'expiration du délai. Cette option est facultative. La valeur NONE peut être utilisée pour spécifier une durée illimitée.
Pour de plus amples informations, veuillez consulterMise en œuvreAWS LambdaTâches