【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用してタグ付けされた複数の EC2 インスタンスの自動起動・停止をスケジューリングする手順

AWS Systems Manager(SSM)のメンテナンスウィンドウ(Maintenance Window)とオートメーション(Automation)を使用してタグ付けされた複数の EC2 インスタンスの自動起動・停止をスケジューリングする手順について解説します。

 

以前、個別に「インスタンス ID」を指定する方法になりますが、Systems Manager(SSM)のメンテナンスウィンドウ(Maintenance Window)とオートメーション(Automation)を使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順を解説しました。

 

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

例えば、会社で数百台規模の EC2 インスタンスを保有している場合、検証環境は半分としても百台以上あります。

とすると、実際に使用しない夜間や週末は停止をしてコスト削減をしたいところです。

今回は EC2 インスタンスにタグ付けをして(キー:ENVIRONMENT、バリュー:PRODUCTION、DEVELOP など)、まとめて起動停止を実現します。

 

ちなみに、AWS コスト削減として、以前 Lambda と CloudWatch Events で定期的に自動起動・自動停止をする仕組みを作りました。

 

【AWS】【Python】Lambda で EC2 インスタンスを起動・停止するプログラム&スケジュール化手順【2018年最新版】

 

【AWS】【Python】Lambda で EC2 インスタンスを起動・停止するプログラム&スケジュール化手順【2017年最新版】

 

【AWS】【Lambda】Lambda で Amazon RDS を自動停止するスクリプトの作成【2019年版】

 

【AWS】【Python】Lambda で RDS インスタンスを起動・停止するプログラム&スケジュール化手順【2017年最新版】

 

 

 

 

 

今回 EC2 インスタンスの自動起動・停止を設定する環境

下図の EC2 インスタンス 2台を利用します。

  • Windows と Linux(RedHat)環境2台
  • 2台とも EC2 インスタンス

 

 

 

 

 

作業の概要

以下、作業の概要です。

  1. 対象の EC2 インスタンスにタグ付けをする
  2. オートメーション(Automation)を実行するロールの作成
  3. Automation用(自動化用)の信頼関係を追加する
  4. iam:PassRole ポリシーを Automation ロールにアタッチする
  5. メンテナンスウィンドウ(Maitenance Window)を実行するロールの作成
  6. Systems Manager が SSM エージェントにアクセスするためのロールの作成
  7. MaintenaceWindow用(メンテナンスウィンドウ用)の信頼関係を追加する
  8. メンテナンスウィンドウ(Maintenance Window)の設定
  9. オートメーション(Automation)の設定
  10. 動作確認

 

 

 

 

メンテナンスウィンドウ(Maintenance Window)とは

メンテナンスウィンドウ(Maintenance Window)は以下のタスクを実行できます。

  • Systems Manager Run Command コマンド
  • Systems Manager オートメーションワークフロー
  • AWS Lambda 関数
  • AWS Step Functions タスク

今回の自動化はSystems Manager オートメーションワークフロー(オートメーション)を利用します。

 

 

 

 

 

対象の EC2 インスタンスにタグ付け

最初に対象に EC2 インスタンスに対してタグ付けをします。

 

 

EC2 インスタンス一覧より、対象の EC2 インスタンスを選択し「タグ」タブをクリックし「タグの追加/編集」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用してタグ付けされた複数の EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

「タグの追加/編集」画面で「タグの作成」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用してタグ付けされた複数の EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

下図のように「キー:ENVIRONMENT、値:DEVELOP」を入力し「保存」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用してタグ付けされた複数の EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

下図のようにタグが追加されていることを確認します。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用してタグ付けされた複数の EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

Systems Manager メンテナンスウィンドウの管理下に置きたい EC2 インスタンスに対して上記タグ付けを行ないます。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用してタグ付けされた複数の EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

IAM ロールの作成

今回のように「メンテナンスウィンドウ」上に「オートメーション」を設定し定期的に実行する場合は合計3つのロールが必要になります。

  1. メンテナンスウィンドウ(Maitenance Window)を実行するロール ← 新規作成します。
  2. オートメーション(Automation)を実行するロール ← 新規作成します。
  3. Systems Manager から EC2 インスタンスにアクセスするためのロール ← 既存のロールを利用します。

※それぞれのロールは役割が異なります。

 

 

 

オートメーション(Automation)を実行するロールの作成

オートメーション(Automation)を実行するロールを作成します。

 

 

AWS 管理コンソールより「サービス」「セキュリティ、ID、およびコンプライアンス」「IAM」をクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

IAM のダッシュボードに移動したら左側ペインより「ロール」をクリックし「ロールの作成」ボタンをクリックします。

 

 

 

 

 

 

「ロールの作成」画面が表示されたら下図のように「信頼されたエンティティの種類を選択」「AWS サービス」を選択し、「このロールを使用するサービスを選択」「EC2」をん選択肢「次のステップ:アクセス権限」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

「Attach アクセス権限ポリシー」画面で「ポリシーのフィルタ」「AmazonSSMAutomationRole」と入力して検索し表示された「AmazonSSMAutomationRole」にチェックを入れて「次のステップ:タグ」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

「タグの追加」画面で必要な場合はタグを設定し「次のステップ:確認」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

「確認」画面で「ロール名(例では SSMAutomationRoleforStartStopInstances)」を入力し「ロールの作成」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

下図のようにロールが作成されていることを確認します。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 Automation用(自動化用)の信頼関係を追加する

次に Automaition(自動化)を信頼するサービスロールポリシーを設定します。

 

 

先ほど作成した「SSMAutomationRoleforStartStopInstances」を検索してクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

「概要」画面で「信頼関係」タブをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

「信頼関係」タブに移動したら「信頼関係の編集」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

ポリシードキュメントで「ssm.amazonaws.com」を以下のように追加して「信頼ポリシーの更新」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

以下、ポリシー部分です。

■追加前


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

 

 

 

■追加後


  “Version”: “2012-10-17”, 
  “Statement”: [ 
    { 
      “Effect”: “Allow”, 
      “Principal”: { 
        “Service”: [ 
            “ec2.amazonaws.com”, 
            “ssm.amazonaws.com” ← ssm.amazonaws.com を追加しています。 
        ] 
      }, 
      “Action”: “sts:AssumeRole” 
    } 
  ] 
}

※注意点としては値が複数になることにより、[] が入ってくることです。

 

 

 

 

 

 

 

 

下図のように「信頼されたエンティティ」「ID プロバイダー ssm.amazonaws.com」が追加されていることを確認します。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

iam:PassRole ポリシーを Automation ロールにアタッチする

次に「iam:PassRole」ポリシーを自動化サービスロール(例:今回作成した SSMAutomationRoleforStartStopInstances)にアタッチします。

これにより、Automation(自動化ワークフロー)を実行する際に、自動化サービスによって他のサービスあるいは Systems Manager 機能にロールが渡されるようになります。

 

 

SSMAutomationRoleforStartStopInstancesの概要を開き「インラインポリシーの追加」をクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

「ポリシーの作成」ページの「ビジュアルエディタ」タブを選択し、「サービスの選択」をクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

検索欄に「IAM」と入力し検索し、「IAM」をクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

 

 

次に「アクション」の検索欄に「PassRole」と入力し[PassRole] オプションにチェックを入れます。

 

 

 

 

 

 

 

次に「リソース」「指定」にチェックを入れて「ARN の追加」をクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

「ARN の追加」画面で「IAM role の ARN の指定」に先ほど作成した「SSMAutomationRoleforStartStopInstances」の ARN を貼り付けて「追加」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

■ARN はどこで確認できるのか?

 

「SSMAutomationRoleforStartStopInstances」の ARN は「SSMAutomationRoleforStartStopInstances」ロールの概要画面に下図のように記載されています。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

設定内容を確認し「ポリシーの確認」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

下図のように「インラインポリシー(SSMAutomationRoleforStartStopInstancePolicy)」が適用されていることを確認します。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

メンテナンスウィンドウ(Maitenance Window)を実行するロールの作成

次に「メンテナンスウィンドウ(Maitenance Window)」を実行するロールを作成します。

 

 

IAM のダッシュボードより左側ペインの「ロール」をクリックし「ロールの作成」ボタンをクリックします。

 

 

 

 

「ロールの作成」画面が表示されたら下図のように「信頼されたエンティティの種類を選択」「AWS サービス」を選択し、「このロールを使用するサービスを選択」「EC2」をん選択肢「次のステップ:アクセス権限」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

「Attach アクセス権限ポリシー」画面で、ポリシーのフィルタに「AmazonSSMMaintenanceWindowRole」と入力し、表示された「AmazonSSMMaintenanceWindowRole」にチェックを入れて「次のステップ:タグ」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

「タグの追加」画面で必要な場合はタグを追加して「次のステップ:確認」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

 

「確認」画面で「ロール名」を入力し「ロールの作成」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

下図のようにロールが作成されていることを確認します。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

MaintenaceWindow用(メンテナンスウィンドウ用)の信頼関係を追加する

次に MaintenaceWindow 用(メンテナンスウィンドウ用)の信頼関係を追加します。

 

上で作成したロール(例では「SSMMaintenanceWindowRoleforStartStopInstances」)をクリックして展開します。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

「概要」画面で「信頼関係」タブを選択して「信頼関係の編集」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

「信頼関係の編集」画面で以下のように Service に「ssm.amazonaws.com」を追加して「信頼ポリシーの更新」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

ポリシーは以下のように修正します。

 

■修正前のポリシー


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

 

 

 

 

■修正後のポリシー


  “Version”: “2012-10-17”, 
  “Statement”: [ 
    { 
      “Effect”: “Allow”, 
      “Principal”: { 
        “Service”: [

           “ec2.amazonaws.com”,

           “ssm.amazonaws.com” ← 追加します。

        ] 
      }, 
      “Action”: “sts:AssumeRole” 
    } 
  ] 
}

 

 

 

 

 

 

 

「ID プロバイダー ssm.amazonaws.com」が追加されていることを確認します。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

Systems Manager が SSM エージェントにアクセスするための IAM ロールの作成

次に Systems Manager から EC2 インスタンスにアクセスしてコントロールするための IAM ロールを作成します。

 

以下、以前に SSM エージェントのインストールおよび設定手順を解説した記事です。

【AWS】【SSM】Systems Manager の SSM エージェントをインストールその他設定して Systems Manager から認識されるようにする設定手順【Windows】

 

 

【AWS】【SSM】Systems Manager の SSM エージェントインストールおよびその他 Systems Manager から認識されるようにする設定手順【Linux】

 

 

 

AWS 管理コンソールより「サービス」「セキュリティ、ID、およびコンプライアンス」「IAM」をクリックします。

【AWS】【SSM】Systems Manager の SSM エージェントインストールおよびその他 Systems Manager から認識されるようにする設定手順

 

 

 

 

 

 

IAM ダッシュボードに移動したら左側ペインより「ロール」をクリックします。

【AWS】【SSM】Systems Manager の SSM エージェントインストールおよびその他 Systems Manager から認識されるようにする設定手順

 

 

 

 

 

 

 

「ロールの作成」ボタンをクリックします。

【AWS】【SSM】Systems Manager の SSM エージェントインストールおよびその他 Systems Manager から認識されるようにする設定手順

 

 

 

 

 

「信頼されたエンティティの種類を選択」「AWS サービス」を選択し、「このロールを使用するサービスを選択」「EC2」を選択し、「次にステップ:アクセス権限」ボタンをクリックします。

【AWS】【SSM】Systems Manager の SSM エージェントインストールおよびその他 Systems Manager から認識されるようにする設定手順

 

 

 

 

 

 

 

「ポリシーのフィルタ」「SSM」と入力し検索をして「AmazonEC2RoleforSSM」にチェックを入れて「次のステップ:タグ」ボタンをクリックします。

【AWS】【SSM】Systems Manager の SSM エージェントをインストールその他設定して Systems Manager から認識されるようにする設定手順【Windows】

 

 

 

 

 

「タグの追加」で必要な場合はタグを作成して「次のステップ:確認」ボタンをクリックします。

【AWS】【SSM】Systems Manager の SSM エージェントインストールおよびその他 Systems Manager から認識されるようにする設定手順

 

 

 

 

 

 

 

確認画面で「ロール名(SSMAgentRoleforEC2)」を入力し「ロールの作成」ボタンをクリックします。

【AWS】【SSM】Systems Manager の SSM エージェントが Systems Manager から認識されるようにする設定手順【Windows】

 

 

 

 

 

 

 

下図のようにロールが作成されていることを確認します。

【AWS】【SSM】Systems Manager の SSM エージェントが Systems Manager から認識されるようにする設定手順【Windows】

 

 

 

 

Systems Manager の管理下に置く EC2 インスタンスにロールを割り当てる

ロールを作成したら Systems Manager の管理下に置く EC2 インスタンスにロールを割り当てます。

 

 

対象の EC2 インスタンスを選択したら「アクション」「インスタンスの設定」「IAM ロールの割り当て/置換」をクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

 

「IAM ロールの割り当て/置換」画面で「IAM ロール」に先ほど作成した「SSMAgentRoleforEC2」を入力し「適用」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

 

以下のように「成功しました」のメッセージが表示されることを確認します。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

対象の EC2 が Systems Manager の管理下に入っていることを確認

先ほど設定した対象の EC2 が Systems Manager の管理下に入っていることを確認します。

 

 

AWS 管理コンソールより「サービス」「管理とガバナンス」「Systems Manager」をクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

「AWS Systems Manager」のダッシュボードに移動したら左側ペインより「マネージドインスタンス」をクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

下図のようにマネージドインスタンスの一覧に表示されることを確認します。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

メンテナンスウィンドウ(Maintenance Windows)の設定

メンテナンスウィンドウ(Maintenance Windows)で EC2 インスタンスの自動起動自動停止の設定を入れます。

(今回は EC2 インスタンスの停止のみ設定しています。)

 

 

AWS 管理コンソールより「サービス」「管理とガバナンス」「Systems Manager」をクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

「AWS Systems Manager」のダッシュボードに移動したら左側ペインより「メンテナンスウィンドウ」をクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

「メンテナンスウィンドウの作成」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

「メンテナンスウィンドウの作成」画面でメンテナンスウィンドウの「名前(例:EC2InstancesAutomationStop)」を設定して下にスクロールします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

下図のようにスケジュールを入力して下にスクロールします。

下図では例として「30分ごと」に対象の EC2 インスタンスを停止しています。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

「メンテナンスウィンドウの作成」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

下図のようにメンテナンスウィンドウが作成されたことを確認します。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

ターゲットとなる EC2 インスタンスの選択

メンテナンスウィンドウを作成したらターゲットとなる EC2 インスタンスを登録します。

 

 

作成したメンテナンスウィンドウをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

「ターゲット」タブをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

「ターゲットの登録」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

 

「ターゲットの登録」画面でターゲットの「名前(例:TargetTagforEC2InstancesStop)」を入力して下にスクロールします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用してタグ付けされた複数の EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

「ターゲット」「Specify instance tags」を選択し、「Instance tags」に以下のキーと値を入力し、「Add」ボタンをクリックします。

  • キー:ENVIRONMENT
  • 値 :DEVELOP

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用してタグ付けされた複数の EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

下図のようにタグが登録されていることを確認し「ターゲットの登録」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用してタグ付けされた複数の EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

下図のように「ターゲット」が登録されていることを確認します。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用してタグ付けされた複数の EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

オートメーションタスクを登録する

続けて「オートメーションタスク(今回の場合は EC2 インスタンスの停止)」を登録します。

 

 

 

対象のメンテナンスウィンドウの「タスク」タブを選択して「タスクを登録する」をクリックし「オートメーションタスクの登録」をクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

「オートメーションタスクの登録」画面でオートメーションの「名前」を設定して下にスクロールします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

「オートメーションドキュメント」「AWS-StopEC2Instance」にチェックを入れます。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

「ドキュメントのバージョン」「ランタイムのデフォルトのバージョン」を選択します。

「優先度」はデフォルトの「1」のままにして下にスクロールします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

 

ターゲットの「カテゴリ別ターゲット」「登録済みターゲットグループの選択」を選択し、先ほど登録したターゲットにチェックを入れて、下図のようにターゲットが追加されたことを確認し、下にスクロールします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用してタグ付けされた複数の EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

レート制御で、下図のように設定をして下にスクロールします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

 

IAM サービスロールで「サービスロールのオプション」「カスタムサービスロールを使用する」にチェックを入れてオートメーション用に作成したロール(例では「SSMAutomationRoleforStartStopInstances」)を選択し、入力パラメータ―の「InstanceId」「{{ TARGET_ID }}」を入力して「オートメーションタスクの登録」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

{{ TARGET_ID }} とは何か?

入力パラメータ―に変数「InstanceId」がありますが、この「値」に「インスタンス ID」を直接入力することもできます。

しかし、今回は変数「InstanceId」に値「{{ TARGET_ID }}」を渡しています。

 

 

{{ TARGET_ID }} について AWS 公式サイトに解説があります。

 

疑似パラメータについて

https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/mw-cli-register-tasks-parameters.html

 

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用してタグ付けされた複数の EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

{{ TARGET_ID }} とは、疑似パラメータ構文で、パラメータに {{ TARGET_ID }} を指定すると、インスタンス ID が {{ TARGET_ID }} の代わりに渡されます。

 

  • インスタンス ID を直接渡す ← 正規の?パラメータを渡している
  • {{ TARGET_ID }} を渡す ← 疑似的なパラメータを渡している

 

■使用可能な擬似パラメータ

以下のリストでは、–task-invocation-parameters オプションの {{PSEUDO_PARAMETER}} 構文を使用して指定できる疑似パラメータについて説明しています。

  • TARGET_ID: ターゲットの ID。ターゲットタイプがインスタンス (現在唯一サポートされているタイプ) の場合、ターゲット ID はインスタンス ID です。
  • TARGET_TYPE: ターゲットのタイプ。現在は、インスタンスのみがサポートされています。
  • WINDOW_ID: ターゲットメンテナンスウィンドウの ID。
  • WINDOW_TASK_ID: 実行されているウィンドウタスクの ID。
  • WINDOW_TARGET_ID: ターゲット (ターゲット ID) を含むウィンドウターゲットの ID。
  • WINDOW_EXECUTION_ID: 現在のウィンドウ実行の ID。
  • TASK_EXECUTION_ID: 現在のタスク実行の ID。
  • INVOCATION_ID: 現在の呼び出しの ID。

 

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用してタグ付けされた複数の EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

以下のようにタスクが登録されることを確認します。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

実行結果の確認

下図のようにメンテナンスウィンドウの実行のステータスが「成功」になることを確認します。

 

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

メンテナンスウィンドウの詳細を確認したい場合は対象の「メンテナンスウィンドウ」を選択し「詳細」ボタンをクリックします。

 

 

 

 

下図のように詳細を確認できます。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

 

念のために EC2 インスタンスが実際に停止していることを確認します。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

トラブルシューティング

下図のようにステータスが「失敗」になった場合です。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

失敗の原因を調べるために対象のメンテナンスウィンドウを選択し「詳細」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

■ステータスの詳細

Step fails when it is validating and resolving the step inputs. com.amazonaws.amiaserviceworker.exception.ActionInputsResolvingException: Input InstanceIds String pattern validation fails. Expected regex pattern: (^i-(\w{8}|\w{17})$)|(^op-\w{17}$). Actual value: . Please refer to Automation Service Troubleshooting Guide for more diagnosis details.

 

 

 

■原因

原因は「{{ TARGET_ID }}」が入っていないことが原因なので下図の手順で追加します。

 

メンテナンスウィンドウを選択します。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

対象のメンテナンスウィンドウの「タスク」タグをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

対象のタスクにチェックをれて「編集」ボタンをクリックします。

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

 

「InstanceId」に {{ TARGET_ID }} を入力します。(または {{ TARGET_ID }} が入力されていることを確認します。)

【AWS】【SSM】Systems Manager のメンテナンスウィンドウとオートメーションを使用して EC2 インスタンスの自動起動・停止をスケジューリングする手順

 

 

 

 

参考サイト

AWS 公式サイト

メンテナンスウィンドウへのアクセスの制御 (コンソール)

 

勉強になりました。ありがとうございます。

Systems Manager Maintenance Window で 任意のEC2インスタンスを定期再起動する

 

 

 

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください