EventBridgeを使用してStep Functionsを定期的に実行する
EventBridgeを使用することで、Step Functionsステートマシンを定期的に実行することができます。
AWS Step Functionsステートマシンは、イベントパターンに応じて、または Amazon を使用してスケジュールに従って実行できます EventBridge。
を使用して定期的にステートマシンの実行をスタートする EventBridge
本ページでは、CloudFormationを使用して、Step Functionsステートマシンを定期的に実行する方法を確認します。
構築する環境
Step Functionsの1つのステートマシンと、その内部に2つのステートを作成します。
ステート内で、Lambda関数を実行することとします。
関数は以下の働きを行います。
- Lambda関数1:現在日時情報を取得します。
- Lambda関数2:日時情報からUNIX時間を計算して返します。
関数のランタイム環境はPython3.8とします。
EventBridgeルールを作成して、このステートマシンを定期的に実行します。
具体的には、5分に1回ステートマシンを実行するように設定します。
CloudFormationテンプレートファイル
上記の構成をCloudFormationで構築します。
以下のURLにCloudFormationテンプレートを配置しています。
https://github.com/awstut-an-r/awstut-fa/tree/main/120
テンプレートファイルのポイント解説
本ページは、Step Functionsステートマシンを定期的に実行する方法を中心に取り上げます。
Step Functionsステートマシンの作成方法については、以下のページをご確認ください。
EventBridgeルール
Resources:
Rule1:
Type: AWS::Events::Rule
Properties:
Name: !Sub "${Prefix}-EventsRule"
ScheduleExpression: rate(5 minutes)
State: ENABLED
Targets:
- Arn: !Ref StateMachineArn
Id: !Ref StateMachineName
RoleArn: !GetAtt EventsRuleRole.Arn
Code language: YAML (yaml)
ScheduleExpressionプロパティで、いつステートマシンを実行するかを指定します。
今回5分ごとに実行するように設定します。
スケジュールの記法はcron式とrate式が選択できますが、今回は後者で記載します。
詳細な記述方法については、以下のページをご確認ください。
Targetsプロパティで実行する対象リソース指定します。
今回はステートマシンを対象としますから、これのARNや後述のIAMロールを指定します。
IAMロールを作成します。
EventBridgeルールを使用して、Step Functionsステートマシンを定期的に実行するということは、EventBridgeが代理でステートマシンを実行する形になります。
ですからEventBridge用IAMロールを作成し、ステートマシンを実行するための権限を与えます。
Resources:
EventsRuleRole:
Type: AWS::IAM::Role
DeletionPolicy: Delete
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action: sts:AssumeRole
Principal:
Service: events.amazonaws.com
Policies:
- PolicyName: !Sub "${Prefix}-StartStateMachineExecutionPolicy"
PolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Action: states:StartExecution
Resource: !Ref StateMachineArn
Code language: YAML (yaml)
与える権限ですが、リソースとしてステートマシンを指定した上で、states:StartExecutionアクションを許可します。
環境構築
CloudFormationを使用して、本環境を構築し、実際の挙動を確認します。
CloudFormationスタックを作成し、スタック内のリソースを確認する
CloudFormationスタックを作成します。
スタックの作成および各スタックの確認方法については、以下のページをご確認ください。
各スタックのリソースを確認した結果、今回作成された主要リソースの情報は以下の通りです。
- Step Functionsステートマシン:fa-120
- Lambda関数1:fa-120-function-01
- Lambda関数2:fa-120-function-02
- EventBridgeルール:fa-120-EventsRule
AWS Management Consoleから作成されたリソースを確認します。
ステートマシンを確認します。
正常に作成されています。
ステートマシンが2つのLambda関数で構成されていることがわかります。
EventBridgeルールを確認します。
EventBridgeルールが作成されています。
5分ごとに上述のステートマシンを実行する内容です。
動作確認
準備が整いましたので、ステートマシンの実行状況を見守ります。
しばらく待つと、自動的にステートマシンが実行されます。
自動的に実行されて、正常に完了しました。
さらにしばらく待機します。
5分おきにステートマシンが実行されました。
このようにEventBridgeルールを使用することによって、Step Functionsステートマシンを自動的に実行することができます。
まとめ
CloudFormationを使用して、Step Functionsステートマシンを定期的に実行する方法を確認しました。