この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、CX事業本部 IoT事業部の若槻です。
今回は、Amazon EventBridgeルールでAWS Step Functionsステートマシンを定期実行してみました。
Amazon EventBridgeとは
Amazon EventBridge は、コードを作成せずに、AWS のサービス、独自のアプリケーション、サービス型ソフトウェア (SaaS) アプリケーションのデータの変更にリアルタイムにアクセスできるサービスです。使用を開始するには、Amazon EventBridge コンソールでイベントソースを選択し、AWS Lambda、Amazon SNS、Amazon Kinesis Data Firehose といった数々の AWS のサービスの中からターゲットを選択します。Amazon EventBridge により、イベントがほぼリアルタイムで自動的に送信されます。
やってみた
AWSマネジメントコンソールと、AWS CDKによる方法それぞれでやってみました。
マネジメントコンソールの場合
下記の作成済みのステートマシンMyStateMachine
を実行対象にします。
EventBridgeのマネジメントコンソールを開き、[ルールの作成]をクリックします。
[ルールを作成]ページが開きます。ルール名を指定し、[パターンを定義]で定期実行のスケジュールを指定します。[スケジュール]-[固定速度ごと]で今回は5分
とします。
[ターゲットを選択]で実行対象のステートマシンを指定します。[ターゲット]でStep Functions ステートマシン
を選択し、対象のステートマシン(MyStateMachine
)を指定します。[作成]をクリックしてルールを作成します。
イベントルールを作成できました。
ステートマシンが5分毎に実行できていますね。
AWS CDKの場合
CDKコードは下記のようになります。
import * as cdk from '@aws-cdk/core';
import * as sfn from '@aws-cdk/aws-stepfunctions';
import * as events from '@aws-cdk/aws-events';
import * as targets from '@aws-cdk/aws-events-targets';
export class AwsCdkAppStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
//ステートマシン
const stateMachine = new sfn.StateMachine(this, 'sampleStateMachine', {
stateMachineName: 'sampleStateMachine',
definition: new sfn.Pass(this, 'pass', {}),
});
//イベントルール
new events.Rule(this, 'sampleRule', {
ruleName: 'sampleRule',
schedule: events.Schedule.rate(cdk.Duration.minutes(5)), //5分毎に実行
targets: [new targets.SfnStateMachine(stateMachine)],
});
}
}
cdk deploy
してリソースをデプロイします。
作成されたステートマシンを見ると、5分毎に実行できていますね。
イベントルールのスケジュール
イベントルールのスケジュールの指定方法には、RateとCronがあります。今回はRateを指定しましたが、Cronを使うことにより更に複雑なスケジュール条件を表現できます。詳しくは下記をご覧ください。
参考
以上