[新機能] CloudWatch Events で StepFunctions を起動する

CloudWatch

こんにちは、菊池です。

先日のアップデートで、StepFunctionsのステートマシンをCloudWatch Eventsで起動することが可能になりました!

これまで、CloudWatch EventsをトリガにStepFunctionsを実行するためには、間にLambdaを入れる必要がありましたが、直接StepFunctionsを実行できるようになりました。

スケジュール実行や、イベントトリガーでの実行ができるようになるので、自動化が捗ります。

やってみた

早速試します。今回は、以前紹介した、スポットインスタンスの自動入札を実行しました。

CloudWatch Eventsのルールを作成します。

sf-from-cwe-001

イベントソースはスケジュールとし、毎日正午に起動するよう設定します。ターゲットでStep Functions state machienが選択可能になっています。

sf-from-cwe-002

ターゲットにstate machineを選択し、入力を設定します。イベントの他、定数(JSON)や変換も可能です。また、state machineを実行するためのIAMロールを作成または指定します。

sf-from-cwe-003

イベントが作成されました。あとは実行される12:00まで正座で待機します。

sf-from-cwe-004

12時を過ぎたところで実行が開始されました!

sf-from-cwe-005

state machineのログを見ると、ちゃんとCloudWatchのスケジュールイベントでトリガーされたことがわかります。

sf-from-cwe-006

最後に

Step Functions が CloudWatch Eventsから起動する新機能を紹介しました。

CloudWatch Eventsから直接起動できることで、様々な自動処理への応用が可能になります。今回試したスケジュール以外にも、

  • S3へのファイル保存
  • AutoScalingの起動
  • EC2の起動/停止

などのイベントに合わせて、Step Functions でフロー処理が可能です。以前も、Lambdaを経由しての実行を実装することは可能でしたが、直接起動することでコードの実装なしに、また、Step Functionsの履歴で一元管理できるようになることは大きいと思います。

オペレーションを自動化し、スケールできる運用を目指しましょう。