AWS Batch のジョブ結果を SNS で通知する

AWS運用自動化サービス「Cloud Automator」

CloudWatch Events で AWS Batch のステータス変更をキャッチできたんですね。

こんにちは、技術一課の山中です。
AWS Batch のジョブが成功したのか失敗したのかメールで受け取りたいときってありますよね?

Before

これまではジョブを実行したと同時に 1 分おきに list_jobs を呼び出す Lambda ファンクションを起動してステータスチェックを行っていました。
ステータスが成功(SUCCEEDED)または失敗(FAILED)に変わるとそれを SNS 経由でメールにて通知します。

After

今回、もっといい方法ないかなと考えていたところ、以下のページを発見しました。

チュートリアル: 失敗したジョブイベントに関する Amazon Simple Notification Service アラートを送信する

これでええやん!

ということで、以下構成にて作り直すことにしました。

実行結果確認用の Lambda を 1 分おきに起動する必要がなく、すっきりした構成ですね。

結果通知用の Lambda ファンクション作成

今回 Lambda ファンクションは Python で作成します。
CloudWatch Events から Lambda ファンクションの event パラメタには以下のような値が入ってきます。

よって、 Lambda ファンクションで以下のように status を取得しこれを SNS に投げさえすればステータスのメール通知ができます。

イベントルールの登録

今回は FAILED だけでなく SUCCEEDED も通知したいので、以下のようにイベントパターンを登録し、チェック用の Lambda ファンクションをターゲットとして登録します。

以上で設定は完了です。
あとは、いつもどおり AWS Batch にてジョブを実行してみてください。
ステータスが SUCCEEDED または FAILED に変わった際にほぼリアルタイムで Lambda が起動するはずです!

おわり

今回はメール本文を編集するためにイベントルールのターゲットとして Lambda を指定しましたが、直接 SNS を指定することも可能です。
今まで気づかなかったのが悔やまれるくらい、すごく便利ですね!

AWS運用自動化サービス「Cloud Automator」