AWS Systems Manager Automation(オートメーション)を使ってみる【準備編】

AWS Systems Manager Automation(以下オートメーション)は、AWS Systems Manager (以下SSM)の変更管理に属するサービスのひとつです。オートメーションを使用することで、AWS内での手順の実行を自動化できますが、簡単に設定はできません。この記事では、オートメーションの概要から、できることとできないこと、また使用を始めるための設定の方法を説明します。

AWS Systems Manager Automationの概要

AWS Systems Manager Automationとは

オートメーションはその名のとおり、AWS環境で構築された各種サービスを自動で実行することができます。EC2インスタンスで構築したLinuxなどのOSには、従来Cronなどの自動実行が可能な各種サービスが実装されていますが、オートメーションは、AWSで構築された大規模リソースに対する運用作業を自動化することができます。  

オンプレ全盛期の運用管理ツールに、富士通の「System Walker」や、日立の「JP1」など、用途の似た製品やクラウドサービスがありました。それらと比べると、オートメーション自体に自動処理機能はありますが、それ単体では運用を開始することはできません。別途、関連するAWSサービスの設定や、SSMにあるステートマネージャ等のメンテナンス関連のサービスが必要になります。

SSM自体は有償のサービスですが、オートメーションを利用する際の金額はSSMの金額に含まれます。コストは数百円程度から利用できるのでお値打ちなサービスといえるでしょう。前述のオンプレ全盛期の運用管理ツールと比べると、価格設定も低く抑えられていて、さすが通販強者(?)Amazonですね。

自動化の設定方法について

オートメーションで自動化の設定をするには2つの方法があります。

AWSが準備したランブックを使用する

AWSが用意した、標準のランブックを使うことも可能です。OS標準のものや、高価な他社(サードパーティ)の運用管理ツールで実施可能な機能と同等なものが使えるランブックも準備されています。
現在AWSから提供されているランブック数は合計で400以上あります。(2024年5月現在)

AWSが用意するランブック一覧

ユーザーでランブックを作成する

ランブックと称するドキュメントに、デザイン画面で設定するか、コードを書くことで、自動化の手順が作成できます。

ランブック一覧の制作画面

AWS Systems Manager Automationで自動化できること

 オートメーションは、幅広い操作を自動化できます。手動では間違えやすい単純かつ煩雑な作業から、大規模環境の運用自動化まで、様々なシーンで活用可能です。自動化できる主な作業は以下の通りです。

EC2環境の運用

インスタンス起動と停止、バックアップやスナップショット(EBSボリューム)など、EC2環境で実施する作業を自動化できます。LinuxやWindows等の各OSのUpdateや、Dockerの設定を自動化することも可能です。

AWSサービスの設定 

RDSの再起動やApplication Load Balancer (ALB)の対象ホストの追加、インスタンスのCloudWatchへの監視対象の設定などを自動化できます。各種サービスのメンテナンス手順やRunTaskAPIを使ったECSの新規開始も対応できます。このようにサービスを跨いだ複雑な手順も1つのランブックで実施可能です。

大規模環境の運用

様々なランブックを組み合わせる事で、100以上のインスタンスに対して必要な手順を自動化することができます。また手順の自動化はユーザ作成も含み、多岐にわたります。

セキュリティの適用

セキュリティグループのルールにないIPアドレスからのSSHアクセスやRDPアクセスを遮断できます。侵害されたホスト検出によるインスタンス自動隔離なども可能です。

IAMロールの権限の管理

オートメーション内で別のIAMロールを一時利用することが可能で、必要以上に強大な権限を用意するリスクを軽減します。

参考:AWS ユーザーガイド 「Systems Manager Automation runbook reference」https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-runbook-reference.html(2024/6/19 確認)

参考:AWS ユーザーガイド 「AWS Systems Manager Automation」https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-automation.html(2024/6/19 確認)

SSM オートメーションでできることと動作の説明図

AWS Systems Manager Automationではできないこと


このサービス単体では以下のことができません。オートメーションで自動化を行うためには、必要に応じて別サービスの準備も必要となるため、まずは環境ごとの運用シナリオを丁寧に作ることが重要です。

変更管理やログ出力

ランブックは手順を提供するだけなので、失敗時の変更管理やそれに応じたログ出力はCloudTrailを利用する必要があります。またランブックの手順によっては実行中の負荷監視などにCloudWatchアラームの設定が必要なランブックもあります。この辺りは事前に用意が必要です。

Amazon マシンイメージに含まれない、古いOSでのランブックの実行

AWSが用意しているAmazon マシンイメージ(以下AMI)に含まれないような古いOS等では、自身で新規ランブックを作成してもSSMが対応しないと動かないので、難しいかもしれません。

繰り返す動作を行うためのスケジュール設定

スケジュールを設定して繰り返し実行したい場合は、オートメーションだけでは難しいので、State Manager スケジューラとの関連付けや、EventBridgeでの予定実行を作成が必要です。ランブックから他のランブックを呼び出す等の複雑な手順の場合は、SSM内の別サービスや、他のAWSのサービスを用いた方がトラブルシュートがしやすくなると思います。

また、SSM関連の準備が不完全な時もオートメーションは失敗します。実施したい手順で必要となる準備を怠らないように注意しましょう。

オートメーションを動かしてみる

オートメーションを動かすには、準備として以下の作業が最低限必要になります。前提として、デフォルトVPC上にEC2があるだけの環境を想定しています。AWSアカウント作成後、最初に作られるデフォルトVPC(以下VPC)の上からでも以下の要件でオートメーションを設定し、動かすことはできます。

SSMエージェントの導入

オートメーションを使用するには、SSMエージェントがOSにインストールされている必要があります。ただし、最新のAMIには既にSSMエージェント導入済のものが増えてきているので、AmazonLinuxやWindowsの最新OSを使用するのであればSSMエージェントへの配慮は不要でしょう。

IAMロールの作成

まず、ロール(IAMロール)を作成します。 SSMを動かすにあたって、AWS Cloud Formationが必須になるので、SSMとAWS Cloud Formation が使用できる権限を付与してください。これを作成することで、インスタンスの設定後、SSM用に作ったロールに再アタッチしなおす際にも、エラーにならないので慌てなくて済みます。

設定はWebのGUIでも、AWSでお馴染み画面左下の“<”ボタンのCloudShell 上でのスクリプト実行でも作成可能です。

CloudWatch Alarmの作成

監視関連として、CloudWatchでAlarmを作成します。

また失敗時の追跡にはCloud Watchの参照を確認するようオートメーションの画面にメッセージがでます。CloudWatch Alarmの監視項目にはCPU Metricの監視などを設定すると、オートメーション動作中のインスタンスの負荷状況を監視できます。

なお、インスタンスの停止など単一手順のランブックを利用するなら、CloudWatch Alarmを用意しなくても動作します。

その他要件に応じた準備

その他、自動化したい作業や運用環境に応じて、必要となる準備を行います。例えば、バックアップやログの出力先を決めることも(S3orEBS)なども動作要件に入ります。

トラブルシューティングやオートメーション以外に、併用運用に役立つセッションマネージャやノード管理設定も必要に応じて準備しましょう。既存環境なら既に準備されているかもしれません。

ランブックを準備する

ここから実際にランブック作成に入ります。AWSマネージメントコンソールにログインし、Systems Manager→オートメーションと進み、オートメーションの実行ボタンを押します。

オートメーションを選択する手順は、AWSが用意したランブックを利用する場合と、ユーザ自身でランブックを作成する場合で異なります。

(1)AWSの用意したランブックを利用する場合

①上図のSystems Managerメニュー内最下段の共有リソースのドキュメントを選択します。

②以下の画面の上部左の「Automation documents」にチェックを入れ、使用したいランブックを選択します。

③画面が切り替わるので、画面上部右の、「オートメーションの実行」を選択します。そうすると実行画面に移ります。

④実行画面で必要なパラメータを設定して「ランブックの実行(Execute)」を選択すると実行できます。

以降実行画面になります。

(2)ユーザ自身でランブックを作成する場合

①オートメーションのメニュー画面からExecute automation(オートメーションの実行)を選択します。

②ランブックのリスト画面が表示されるので、右上の「ランブックの作成」を選択してください。

③左上の「NewRunBook」の欄横の鉛筆マークを押すとランブックの名前をつけることができます。目的に応じた名前をつけてください。
③ランブックの制作方法に合わせて、「デザイン」か「コード」を選択します。
④画面中央のスペースでランブックを作っていきます。
⑤完成後、画面右上の「ランブックを作成」を選択

ランブックが完成すると、
作成したものは自己所有タブに格納されます。
SSMのメニュー最下部の共通ドキュメントを選択→自己所有を選択
で上の画面が表示されるので、そこから参照や実行、他ユーザとの共有も可能です。
上の画面では、一連の流れで作った2つのランブックが格納されています。

作成したランブックにパラメータを設定する

どのランブックでも、入力パラメータの項目に、ターゲットのパラメータ(InstanceIDやAutomation用Roleなど)を設定する必要があります。

下の画像は、EC2インスタンスを停止させるランブックですが、停止させるインスタンスが稼働していると、上図の枠内にプルダウンで表示してくれます。InstaceIDをメモしなくてもよいですが、AMIなど手順によっては出てこないので、IDなどをメモする必要があります。

CloudWatch Alarmの設定

「CloudWatch Alarmの作成」 の項目で作った、CloudWatch Alarmを連携するための設定も行います。

オートメーションの実行

「作成したランブックにパラメータを設定する」の項目で用意したランブックの最下段にある実行ボタンを押す事で手順は開始されます。
実施状況はモニターされ、ランブックに書いた手順が実行されていきます。

ランブックを実行した際、下の画像のような実行内容をモニターする画面が現れ、コメントが見られるので、どの手順が成功したのか、また失敗した原因や不足している要件を確認することができます。

失敗したStep IDをクリックすることで 、下の画面のように失敗の原因が表示されます。
この画面では、インスタンスにCloudWatchを設定するランブックにおけるエラー内容を表示しています。


エラーに対するトラブルシューティングの詳細については、AWSのドキュメントをご確認ください。
参考:AWS ユーザーガイド「Systems Manager Automation のトラブルシューティング」
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/automation-troubleshooting.html(2024/6/19 確認)

スケジュールの設定

前述のとおり、スケジュールに沿って繰り返し実行したい場合などは、前述したSSMにあるChange Calendarなどでイベントドキュメントの作成と実行をすることで、決められた日と時間にランブックの実行ができます。

無人になる夜間や、年末年始などの長期休暇イベントなどに対応するスケジュールを設定したいのであれば、以下のAWSのサイトをご参考ください。

参考:AWS ユーザーガイド 「AWS Systems Manager Change Calendar」
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-change-calendar.html(2024/6/19 確認) 

Windows環境でADなどに代表される設定を自動化するなら、StateManagerも必要です。詳しくは以下のサイトをご確認ください。

参考:AWS ユーザーガイド 「AWS Systems Manager State Manager」
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-state.html
(2024/6/19 確認)

環境や障害復旧、リソース管理などでAWS Configもオートメーションが管理実行できます。

まとめ

本記事では、AWS Systems Manager Automationでできること・できないこと、オートメーションを動かすための汎用的な方法の解説をしました。次の記事では、具体的な実行内容を伴ったランブックの作り方と、その実行を行います。

次の記事はこちら