[アップデート] Amazon EventBridge Schedulerは、最後のタスク呼び出し完了時に、スケジュールを自動的に削除できるようになりました

2023.08.03

はじめに

Amazon EventBridge Schedulerは、最後のタスク呼び出しの完了時に自動的にスケジュールを削除する設定ができるようになりました。

EventBridge Scheduler は、タイムゾーンを指定して 定期的または1回限りのタスクを実行することができるサービスです。

サービス詳細は、以下をご参照ください。

今回のアップデートで嬉しいポイントは、EventBridge Schedulerでスケジュールを設定した場合、従来は、自分でスケジュール設定を削除する必要がありましたが、自動で削除できるようになった点です。

これにより、運用が楽になります。

ただし、後述しますが、定期的なスケジュールの場合でも自動で削除できますが、設定には注意が必要です。

試してみた

本ブログでは、EC2を起動するスケジュール設定で試してみます。

IAMロールの作成

事前に、EventBridge Schedulerが利用するIAMロールを作成しておきます。

カスタム信頼ポリシーで下記を設定し、AmazonEC2FullAccessをアタッチします。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "scheduler.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

スケジュールを作成(1回限りのスケジュール)

EventBridge Schedulerでスケジュールを作成します。

スケジュールのパターンは、1回限りのスケジュールを選択します。

ターゲットAPIは、StartInstancesで、起動させるインスタンスIDを入力します。

今回のアップデート内容であるスケジュール完了後のアクションが増えております。

DELETEを選択することで、、タスク実行後に自動でスケジュールが削除されます。

アクセス許可の項目は、先程作成したIAMロールを選択します

これでスケジュールが作成されました。

詳細では、完了後のアクションDELETEが表示されています。

設定した時間になりますと、EC2が起動し、スケジュールは削除されていることが確認できました。

定期的なスケジュールの場合

定期的なスケジュールでも、以下の4パターンで試してみます。

  • rateベース(終了日時指定なし)
  • rateベース(終了日時指定あり)
  • cronベース(終了日時指定あり、最後の呼び出しが存在しない)
  • cronベース(終了日時指定あり、最後の呼び出しが存在する)

ポイントとしては、終了日を指定しているか?、最後の呼び出しが存在しているか?、です

スケジュール以外の設定は、先程のEC2を起動する設定と同じです。

rateベース(終了日時指定なし)

スケジュール名EC2Start-2で、rateベースのスケジュールで、3分ごとにEC2を起動させる設定をしました。

結果は、スケジュールは削除されず、定期的に実行されておりました。

理由としては、最後のタスク呼び出しが存在せず、終わりがなく3分ごとに実行され続けるためです。

rateベース(終了日時指定あり)

スケジュール名EC2Start-2で、rateベースのスケジュールで、3分ごとにEC2を起動させ、終了日時(当日の08:25)を追加してみました。

終了日時を設けることで、終了時間(当日の08:25)になると、スケジュールは削除されました。

理由としては、終了日時を指定することで、終了日時が最後のタスク呼び出しとなるためです。

cronベース(終了日時指定あり、最後の呼び出しが存在しない)

スケジュール名EC2Start-3で、cron式* 8 3 8 ? 2023で毎分EC2を起動し、終了日(当日の08:35)を設けてみました。

毎分タスクが実行されますが、終了日時を設けています。

先程の結果と同様に、終了日時を設けることで、終了時間(当日の08:35)になると、スケジュールは削除されました。

cronベース(終了日時指定あり、最後の呼び出しが存在する)

スケジュール名EC2Start-4で、cron式55,56 8 3 8 ? 20238:558:56にEC2を起動させ、終了日(当日の09:00)を設けてみました。

この場合は、終了日時の09:00になる前、最後のタスク呼び出し時間である8:56にスケジュールは削除されました。

理由としては、最後のタスク呼び出しが8:56だったためです。

結果

スケジュール完了後のアクションDELETEを選択すると、1回限りのタスクの場合、タスク実行後にスケジュールは削除されます。

定期的なスケジュールで自動削除したい場合、以下がポイントです。

  • 最後のタスクが呼び出されるスケジュールの場合、終了日時の有無に関わらず、呼び出された時点でスケジュールは自動削除されます
  • 終了日時を設けることで、設定した終了日時が最後のタスク呼び出しとなり、スケジュールは自動削除されます
  • 終了日時を設けない、最後のタスクが呼び出されないスケジュールの場合、削除はされません

最後に

今回のアップデートによって、設定したスケジュールが最後のタスク実行後に自動削除することが可能になりました。

ぜひ利用してみて下さい。

参考