State Managerを利用してみる

State Managerとは、AWS System Managerで用意されている機能の1つとなります。マニュアルの記載によると、

以下のリストは、ステートマネージャー で実行できるタスクの種類を示しています。

・起動時に特定のソフトウェアを使用してインスタンスをブートストラップする

・定義済みのスケジュールに従ってエージェント (SSM エージェント など) をダウンロードして更新する

・ネットワーク設定を構成する

インスタンスWindowsドメインに結合する (Windows インスタンスのみ)

・ライフサイクルを通じてソフトウェアの更新でインスタンスをパッチする

・ライフサイクルを通じて Linux および Windows マネージドインスタンススクリプトを実行する

AWS Systems Manager ステートマネージャー

色々書いてあるので分かりにくいのですが、ざっくり言ってしまうと、 SSMドキュメントを利用したcronジョブ的機能 となっています。指定したスケジュールで、指定のSSMドキュメントを実行してくれる、機能みたいな。

設定

公式のチュートリアルでも紹介されている下記内容を試してみます。

自動的に SSM エージェント (CLI) を更新する

対象とするのは、適当に作成したEC2です。SSMを利用するので、EC2にもSSM Agentが動作中であり、SSM利用のためのIAM RoleがInstanceに付与されている必要があります。

必要となる作業は 関連付けの作成 を行うだけです。関連付けの作成では、以下の内容を定義することになります。

  • 利用するSSMドキュメント
  • 対象のインスタンス
  • 実行スケジュール
  • 同時実行数やエラー閾値

以下がサンプルとなります。

$ aws ssm create-association \
--name "AWS-UpdateSSMAgent" \
--parameters "allowDowngrade=false" \
--targets "Key=tag:target,Values=sample" \
--schedule-expression "cron(0 30 23 ? * SAT *)" \
--output-location "S3Location={OutputS3BucketName=voiceloid,OutputS3KeyPrefix=sample/}" \
--max-errors "0" \
--max-concurrency "1"

各パラメータの説明は、以下のリファレンスにて。

aws ssm create-association

必要設定は以上となります。