
AWS Systems Manager(SSM)のフリートマネージャーは、EC2インスタンスやオンプレミスのサーバーを一元的に管理・監視するための機能です。このツールを活用することで、各インスタンスの詳細情報の確認や、リモート操作、メンテナンス作業を効率的に行うことが可能となります。
フリートマネージャーの主な機能:
- ファイルシステムの管理:インスタンス内のディレクトリ構造をブラウザ上で直接閲覧・操作できます。これにより、ファイルの削除や移動、内容のプレビューなどが容易に行えます。
- パフォーマンスモニタリング:CPU使用率、メモリ使用量、ディスクI/O、ネットワークトラフィックなどのリアルタイムなメトリクスを秒単位で監視できます。
- プロセス管理:現在稼働中のプロセス一覧を表示し、必要に応じてプロセスの開始や停止といった操作が可能です。
- ユーザーとグループの管理:システム上のユーザーやグループの情報を確認・編集できます。新しいユーザーの作成や既存ユーザーの削除、グループへの追加などの操作がサポートされています。
- コマンドの実行:SSH接続を必要とせず、ブラウザ上から直接シェルコマンドやスクリプトを実行できます。これにより、セキュリティを維持しつつ迅速な操作が可能となります。
- パッチ管理:インスタンスに適用可能なパッチのスキャンやインストールを行い、システムのセキュリティと安定性を維持します。
フリートマネージャーを活用することで、AWS環境内のリソース管理がより効率的かつ効果的になります。特に、複数のインスタンスを運用している場合、一元的な管理が可能となり、運用負荷の軽減とセキュリティの向上に寄与します。
なお、フリートマネージャーを利用するためには、対象のインスタンスにSSMエージェントがインストールされており、適切なIAMロールが割り当てられている必要があります。これらの前提条件を満たすことで、フリートマネージャーの全機能を活用することができます。
フリートマネージャーをクリック

EC2インスタンスをAmazon linux を使って作成します

セキュリティグループなどはそのままで問題ないです

高度な設定で IAMインスタンスプロファイルを設定

ロールの作成をクリック

ロールではEC2インスタンスをユースケースとして選択

AmazonSSMManagedInstanceCore を選択して 次へをクリック

適当な名前をつけて、ロールを作成します

ロールが作成されたことを確認します

EC2作成の画面に戻り、作成したロールを選択

インスタンス数を3にして インスタンスを起動 をクリックします

問題なくインスタンスが作成されるはずです

フリートマネージャーに戻ってみると、インスタンスが確認できます

作成したEC2のインスタンスクリックしてみると、Nameとしてkeyが作成されているのがわかります。これに試しに key = Environments , Dev を値として保存してみましょう

それではリソースグループマネージャでリソースグループを作成します

タグでEnviornemnts とその値をクリックします、その状態で グループリソースをプレビューすると

下記のように作成したタグのEC2が作成されます

これを Prodgroup としてグループを作成します

作成を確認できます

AWS Systems Managerのリソースグループマネージャーは、AWSリソースを効率的に管理・操作するための機能です。特定のタグや属性に基づいてリソースをグループ化し、一括で操作や管理を行うことが可能です。
リソースグループマネージャーの主な機能:
- リソースのグループ化:タグや属性を基に、EC2インスタンスや他のAWSリソースを論理的にグループ化できます。これにより、環境(開発、ステージング、本番)やプロジェクトごとにリソースを整理できます。
- 一括操作:グループ化されたリソースに対して、パッチ適用や設定変更などの操作を一括で実行できます。これにより、管理作業の効率化と手間の削減が期待できます。
- 動的なグループ更新:新しいリソースが特定のタグや属性を持つ場合、自動的に既存のリソースグループに追加されます。これにより、常に最新のリソースセットを維持できます。
リソースグループマネージャーを活用することで、AWS環境内のリソース管理がより効率的かつ効果的になります。特に、複数の環境やプロジェクトを運用している場合、リソースの整理と一括管理が容易になり、運用負荷の軽減とセキュリティの向上に寄与します。
このようにインスタンスをグループごとにまとめてしまえば、パッチあてなどの作業も簡単にできます。
SSMドキュメント
AWS Systems Manager(SSM)のSSMドキュメントは、AWSリソース上で実行するコマンドやスクリプト、オートメーション手順を定義したJSONまたはYAML形式のファイルです。これにより、運用タスクの標準化や自動化が可能となり、効率的なシステム管理が実現できます。
SSMドキュメントの主な特徴:
- 多様な用途に対応:コマンドの実行、シェルスクリプトの実施、パッチ適用、ソフトウェアインストールなど、さまざまな運用タスクを定義できます。
- AWS提供のドキュメントとカスタムドキュメント:AWSが提供する標準ドキュメントを利用するだけでなく、独自の要件に合わせたカスタムドキュメントを作成することも可能です。
- バージョン管理:ドキュメントにはバージョン管理機能があり、変更履歴の追跡や特定バージョンへのロールバックが容易に行えます。
- 安全な実行:IAMポリシーと連携し、ドキュメントの実行権限を細かく制御できます。
具体的な例として、AWSが提供するAWS-ApplyPatchBaseline
というSSMドキュメントがあります。このドキュメントは、指定したインスタンスに対して最新のパッチを適用する手順を定義しています。内容はAWSによって定期的に更新されるため、ユーザーが手動でメンテナンスする必要がなく、常に最新のパッチ適用手順を利用できます。
SSMドキュメントを活用することで、運用手順の標準化と自動化が進み、システム管理の効率化と信頼性の向上が期待できます。
それではSSMで一番使われる概念であるドキュメントを見てみましょう

AWS-ApplyPatchBaselineをクリック

下記のようなコンテンツになっています

このコンテンツは、AWSによって更新処理されているのでわざわざ、手動でメンテする手間が省けます

AWS Systems Manager Run Commandとは?
AWS Systems Manager(SSM)のRun Commandは、EC2インスタンスやオンプレミスのサーバー上でスクリプトやコマンドを実行するための機能です。SSHを使わずに、安全かつスケーラブルにリモート管理ができるため、運用の自動化や管理を効率化できます。
Run Commandの主な特徴
1. スクリプトやコマンドの実行
SSMドキュメント(スクリプトのテンプレート)を使って、複数のインスタンス上でスクリプトやコマンドを実行できます。
2. 複数のインスタンスに対するコマンド実行
リソースグループを利用することで、複数のEC2インスタンスに対して一括でコマンドを実行できます。
3. レートコントロールとエラーハンドリング
実行速度を制御したり、エラーハンドリングの設定が可能なため、大規模環境でも安全に運用できます。
4. IAM & CloudTrailとの統合
AWS Identity and Access Management(IAM)と統合されており、実行権限を管理できます。また、CloudTrailを使ってコマンドの実行履歴を記録できるため、セキュリティと監査が強化されます。
5. SSH不要で管理可能
SSHを使わずにインスタンス管理ができるため、セキュリティリスクを減らしながら運用できます。
6. 実行結果の確認
コマンドの実行結果はAWSマネジメントコンソール上で確認できるほか、Amazon S3バケットやCloudWatch Logsに送信することも可能です。
7. SNS通知の活用
コマンドのステータス(進行中・成功・失敗など)をAmazon SNSを通じて通知することができます。
8. EventBridgeと連携
AWS EventBridgeを使ってRun Commandを自動実行することも可能で、スケジュール実行やイベントベースの自動化ができます。
Run Commandの活用例
- パッチ適用:WindowsやLinuxのインスタンスに対して、一括でパッチを適用。
- ログ収集:複数のインスタンスのログを取得し、S3やCloudWatchに保存。
- セキュリティ対策:ファイアウォールルールの更新や、セキュリティパッチ適用を自動化。
- アプリケーションのデプロイ:スクリプトを使ってアプリの更新や設定変更を実施。
それでは実際に先ほど作成した3台のEC2インスタンスを操作してみましょう。
その前にEC2のセキュリティグループでインバウンドルールを追加します

インバウンドルールの編集を押したら、HTTPでどこからでもアクセスできるようにインバウンドのセキュリティグループのルールを保存します

これで3つのEC2インスタンスに、HTTPのアクセスが許可されました。それではSSM経由でHTTPサーバーをインストールします。
SSMのドキュメントから「ドキュメントの作成」で「コマンドまたはセッション」を選択

名前を付けて、EC2インスタンスをターゲットタイプとして利用

コンテンツはyamlで下記のコンテンツをコピペして貼り付け
schemaVersion: '2.2' # SSM ドキュメントのバージョン
description: Sample YAML template to install Apache # ドキュメントの説明
parameters:
Message:
type: "String" # パラメータのデータ型(文字列)
description: "Welcome Message" # パラメータの説明
default: "Hello World" # デフォルトのメッセージ
mainSteps:
- action: aws:runShellScript # シェルスクリプトを実行するアクション
name: configureApache # ステップ名
inputs:
runCommand:
- 'sudo yum update -y' # パッケージリストを更新
- 'sudo yum install -y httpd' # Apache (httpd) をインストール
- 'sudo systemctl start httpd' # Apache を起動
- 'sudo systemctl enable httpd' # システム起動時に Apache を自動起動
- 'echo "{{Message}} from $(hostname -f)" > /var/www/html/index.html'
# index.html にカスタムメッセージとホスト名を書き込む

ドキュメントを作成出来たら自己所有の箇所に作成したドキュメントが表示されます

それでは SSM のRun コマンドを実行します。ノードツールの下にあります

先ほど作成したドキュメントを指定します

ドキュメントを選択したら、カスタムメッセージのところに何か好きなメッセージを入れます

すべてのインスタンスで、apache をインストールしたいので、インスタンスを手動で選択します。タグで選択しても結果は同じです

S3への書き込みはなしにして、cloudwatchへログを書き込むことにしましょう

AWSコマンドから実行する場合は、CLIコマンドをコピペして実行することもできます。今回は使わないので、実行ボタンを押します

すぐに進行中の画面に移行します

たいして重い作業ではないので1分以内で成功するはずです

インスタンスをクリックして「出力の表示」をクリックすれば、出力を見ることができます

出力を見れば、エラーなどを確認することができます。下記の例では、成功しています

ここまで成功すれば、EC2インスタンスのIPをクリックすれば、下記のように設定したカスタムメッセージが表示されるはずです

SSMオートメーション
1. SSM オートメーションとは?
AWS Systems Manager(SSM)のオートメーション機能は、EC2インスタンスやその他のAWSリソースの管理やデプロイメントのプロセスを自動化するためのツールです。これにより、手動で実行していた運用タスクをスクリプト化し、簡単に実行およびスケジュール管理が可能になります。
1.1 SSM オートメーションの特徴
- 運用の効率化: EC2インスタンスの起動・停止、AMIの作成、EBSスナップショットの取得などのタスクを自動化できます。
- 一貫性の確保: 事前に定義された手順に従って実行されるため、手作業によるミスを減らし、運用の一貫性を向上させます。
- スケジュール実行やイベント駆動実行: AWS EventBridgeやMaintenance Windowsを活用して、スケジュールされた自動化を実現できます。
- ルールベースの実行: AWS Configと連携し、特定のルールが満たされなかった場合に自動で修正作業を実行できます。
2. ランブック(Runbook)とは?
SSM オートメーションでは、”ランブック(Runbook)” と呼ばれる自動化のための手順書(スクリプト)を利用します。ランブックは SSM ドキュメント(SSM Documents) の一種であり、AWSリソースに対して特定の処理を実行するためのワークフローを定義します。
2.1 ランブックの種類
- AWSが提供するプリセットのランブック: 例えば、EC2インスタンスを再起動するための
AWS-RestartEC2Instance
などが含まれます。 - カスタムランブック: ユーザーが独自に定義し、環境に応じた自動化プロセスを作成できます。
2.2 ランブックの主な機能
- 複数のステップを含む実行フロー: 1つのランブック内で、複数のタスク(例: インスタンスのチェック→スナップショット作成→再起動)を実行可能。
- 条件分岐のサポート: 状況に応じた異なるアクションの実行が可能。
- AWS Lambda、AWS CLI、PowerShell などと統合: 柔軟なオートメーションが実現できます。
3. SSM オートメーションの実行方法
オートメーションは、以下の方法で実行できます。
- 手動実行: AWSマネジメントコンソール、AWS CLI、またはSDKを利用。
- イベント駆動実行: AWS EventBridgeを使用し、特定のイベント発生時に実行。
- スケジュール実行: AWS Maintenance Windowsを使用し、定期的に実行。
- ルールベース実行: AWS Configと連携し、ポリシー違反が発生した際に実行。
それでは実際にオートメーションをいじってみましょう

いろいろありますが、今回はAWS-RestartEC2Instance を使ってみます

バージョンは最新を選択して次へ



利用するEC2を選択します

この実行は少し時間がかかるかもしれません、インスタンスをストップしている状態です

EC2のコンソールからは下記のような状態がわかります

観察していると徐々に完了しているのがわかります

すべて完了したら下記のようになります 5分程度かかってますね
