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.
Dans ce didacticiel, vous allez créer un AWS Lambda fonction utilisant AWS CloudFormation. Vous utiliserez le AWS CloudFormation console et YAML modèle pour créer une pile (IAMrôles, fonction Lambda et machine à états). Ensuite, vous utiliserez la console Step Functions pour démarrer l'exécution de la machine à états.
Pour plus d'informations, consultez la section CloudFormation Utilisation des modèles et la AWS::StepFunctions::StateMachine
ressource du AWS CloudFormation Guide de l'utilisateur
Étape 1 : Configurez votre AWS CloudFormation modèle
Avant d'utiliser les exemples de modèles, vous devez comprendre comment déclarer les différentes parties d'un AWS CloudFormation modèle.
Pour créer un IAM rôle pour Lambda
Définissez la politique de confiance associée au IAM rôle de la fonction Lambda. Les exemples suivants définissent une politique de confiance à l'aide de YAML ouJSON.
LambdaExecutionRole:
Type: "AWS::IAM::Role"
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: "sts:AssumeRole"
Pour créer une fonction Lambda
Définissez les propriétés suivantes pour une fonction Lambda qui imprimera le message. Hello World
Important
Assurez-vous que votre fonction Lambda est sous la même AWS compte et Région AWS en tant que machine d'État.
MyLambdaFunction:
Type: "AWS::Lambda::Function"
Properties:
Handler: "index.handler"
Role: !GetAtt [ LambdaExecutionRole, Arn ]
Code:
ZipFile: |
exports.handler = (event, context, callback) => {
callback(null, "Hello World!");
};
Runtime: "nodejs12.x"
Timeout: "25"
Pour créer un IAM rôle pour l'exécution de la machine à états
Définissez la politique de confiance associée au IAM rôle pour l'exécution de la machine à états.
StatesExecutionRole:
Type: "AWS::IAM::Role"
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Service:
- !Sub states.${AWS::Region}.amazonaws.com
Action: "sts:AssumeRole"
Path: "/"
Policies:
- PolicyName: StatesExecutionPolicy
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Action:
- "lambda:InvokeFunction"
Resource: "*"
Pour créer une machine à états Lambda
Définissez la machine à états Lambda.
MyStateMachine:
Type: "AWS::StepFunctions::StateMachine"
Properties:
DefinitionString:
!Sub
- |-
{
"Comment": "A Hello World example using an AWS Lambda function",
"StartAt": "HelloWorld",
"States": {
"HelloWorld": {
"Type": "Task",
"Resource": "${lambdaArn}",
"End": true
}
}
}
- {lambdaArn: !GetAtt [ MyLambdaFunction, Arn ]}
RoleArn: !GetAtt [ StatesExecutionRole, Arn ]
Étape 2 : utilisez le AWS CloudFormation modèle pour créer une machine à états Lambda
Une fois que vous aurez compris les composants du AWS CloudFormation modèle, vous pouvez les assembler et utiliser le modèle pour créer un AWS CloudFormation pile.
Pour créer la machine à états Lambda
-
Copiez les exemples de données suivants dans un fichier nommé d'après l'
MyStateMachine.yaml
YAMLexemple ouMyStateMachine.json
pourJSON.AWSTemplateFormatVersion: "2010-09-09" Description: "An example template with an IAM role for a Lambda state machine." Resources: LambdaExecutionRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Principal: Service: lambda.amazonaws.com Action: "sts:AssumeRole" MyLambdaFunction: Type: "AWS::Lambda::Function" Properties: Handler: "index.handler" Role: !GetAtt [ LambdaExecutionRole, Arn ] Code: ZipFile: | exports.handler = (event, context, callback) => { callback(null, "Hello World!"); }; Runtime: "nodejs12.x" Timeout: "25" StatesExecutionRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - !Sub states.${AWS::Region}.amazonaws.com Action: "sts:AssumeRole" Path: "/" Policies: - PolicyName: StatesExecutionPolicy PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: - "lambda:InvokeFunction" Resource: "*" MyStateMachine: Type: "AWS::StepFunctions::StateMachine" Properties: DefinitionString: !Sub - |- { "Comment": "A Hello World example using an AWS Lambda function", "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Task", "Resource": "${lambdaArn}", "End": true } } } - {lambdaArn: !GetAtt [ MyLambdaFunction, Arn ]} RoleArn: !GetAtt [ StatesExecutionRole, Arn ]
-
Ouvrez le fichier AWS CloudFormation console
et choisissez Create Stack. -
Sur la page Sélectionner un modèle, choisissez Télécharger un modèle sur Amazon S3. Choisissez votre fichier
MyStateMachine
, puis choisissez Suivant. -
Sur la page Spécifier les détails, pour Nom de la pile, tapez
MyStateMachine
, puis choisissez Suivant. -
Dans la page Options, choisissez Suivant.
-
Sur la page d'évaluation, choisissez Je reconnais que AWS CloudFormation peut créer des IAM ressources. puis choisissez Create.
AWS CloudFormation commence à créer la
MyStateMachine
pile et affiche le statut CREATE_IN_ PROGRESS. Lorsque le processus est terminé, AWS CloudFormation affiche le COMPLETE statut CREATE_. -
(Facultatif) Pour afficher les ressources de votre pile, sélectionnez la pile et choisissez l'onglet Ressources.
Étape 3 : démarrer une exécution de State Machine
Après avoir créé votre machine d'état Lambda, vous pouvez commencer son exécution.
Pour démarrer l'exécution de la machine d'état
-
Ouvrez la console Step Functions
et choisissez le nom de la machine à états que vous avez créée à l'aide de AWS CloudFormation. -
Dans la page
MyStateMachine-ABCDEFGHIJ1K
page, choisissez Nouvelle exécution.La page Nouvelle exécution s'affiche.
(Facultatif) Entrez un nom d'exécution personnalisé pour remplacer le nom par défaut généré.
ASCIINon-noms et journalisation
Step Functions accepte les noms des machines d'état, des exécutions, des activités et des étiquettes contenant des caractères autres que des ASCII caractères. Comme ces caractères ne fonctionneront pas avec Amazon CloudWatch, nous vous recommandons de n'utiliser que des ASCII caractères afin de pouvoir suivre les statistiques CloudWatch.
-
Choisissez Démarrer une exécution.
Une nouvelle exécution de votre machine d'état commence et une nouvelle page indiquant votre exécution en cours s'affiche.
-
(Facultatif) Dans la section Execution Details (Détails de l'exécution), choisissez Execution Status (Statut de l'exécution) et les horodatages Started (Démarré) et Closed (Fermé).
-
Pour afficher les résultats de votre exécution, choisissez Sortie.