💻

AWS EC2のスケジュールでの自動起動と自動停止

に公開

特に目新しいものではないですが、いったん作ってしまうと、ほどんど日時を変える以外はしないため、最初どのように作成したか忘れてしまいます。今回も新しい環境で実行しようとしたら最初どう設定すしたかな?なんて忘れていたので今回は忘備録として将来の自分のために?それを残すことにしました。
その間もやはり試行錯誤して手戻りが多く意外と苦労しました。
(2025年5月11日時点での情報です)

  • ロールを作成
    まずIAMでROLEを作成します。

    AWSサービスから使用用途をいれ、次に進みます。

    すると自動的のポリシーが追加されます。次に進みます。

    あとはロール名をわかりやすい名前でいれます。そしてロールを作成します。

    作成されたロールの権限を編集します。EC2の起動停止をするのでAmazonEC2FullAccessだけ追加してそれ以外は削除です。

    そしてここが重要ですが、信頼関係のPOLICYをアップデートします。でないとスケジュール作成最後の段階でエラーになってしまします!(この記事を書いているときの設定しながら進めましたがこれを忘れたためスケジュール作成の最後の確認で何度もエラーで手戻りをしました。以下は忘れないように!)
    https://docs.aws.amazon.com/scheduler/latest/UserGuide/setting-up.html
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "scheduler.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
  • 自動起動スケジュールの作成
    後で気が付きましたが、EventScedulerにはリジョンがありますね。一応、自動起動停止の対象となるEC2と同じリジョンに合わせておきます。
    AMAZON EVENTBridgeから自動起動ルールを作成

    名前を命名して次に進みます。

    そしてスケジュールを設定です。以下の例では日本時間(東京のタイムゾーン)で平日11AMの起動をしてしてます。(LINUXのCRONと違い曜日は日曜が1で月曜が2とずれているので注意!)


    ターゲットを選択します。


    対象のEC2のInstance IDを設定します。配列ですので複数いれても大丈夫です。

    これで準備OKですが、最後のステップでロールを聞かれます。上記ロールを作成で作ったロールを指定します。

    確認画面で作成しエラーがなければOKです。

  • 自動停止スケジュールの作成。
    基本は起動とな時なのでスクショだけはっていきます。例では日本の平日の19PMに停止する例です。






*終わりに
これでできました。後できずいたのですがCRONでの日時でのスケジュール操作はROLEからもSCHEDULEからも作成できるようです。この場合ROLEには作成したものが表示されず、ROLEから作成したものはScheduleで作成されてます。

あった!、機能も正常に動いている模様。

Discussion