従来の課題
- 管理するインスタンスが増えてくると、以下のような困りごとが出てくる
- 接続情報の管理
- OSなどバージョンのアップデート
- オンプレ環境との連携
SSMで何ができるか?
- SWインストール、更新
- → Distributor
- パッチ適用
- →Patch Manager
- その他のカスタム処理
- →Automation
- 上位の自動化処理のタイミング指定
- 定期実行
- →Maintenance WIndows
- カレンダーでの制御
- →Change Calendar
- 定期実行
- 問題発生時のアクション自動化
- →修復アクションをAutomationで記述
- 予期しない問題が発生した場合の対応
- ノードへの一括コマンド発行
- →Run Commands
- ノードへのセキュアな特権アクセス
- →Session Manager, Fleet Manager
- ノードへの一括コマンド発行
- リリースしたアプリケーションのメンテナンス
- アプリケーションにまつわる複数の操作を一つのコンソールから管理
- →アプリケーションマネージャ
- アプリケーションにまつわる複数の操作を一つのコンソールから管理
用語
マネージドノード (Managed Node)
SSM Agent がインストールされ、Systems Manager で管理可能になったマシンのこと
フリート (Fleet)
Systems Manager で管理対象となるマネージドノードの集合を指す
Fleet Manager を使うことで、フリート全体の状態を単一コンソールから確認・管理できる
出典: AWS Systems Manager Fleet Manager
“Fleet Manager, a capability of AWS Systems Manager, is a unified user interface (UI) experience that helps you remotely manage your nodes running on AWS or on premises. With Fleet Manager, you can view the health and performance status of your entire server fleet from one console.”
機能
以下4つの機能に大別される
- 運用管理
- アプリケーション管理
- 変更管理
- ノード管理
運用管理
Explorer
OpsCenter
Incident Manager
アプリケーション管理
Application Manager
AppConfig
Parameter Store
変更管理
Change Manager
Automation
Maintenance Windows
Change Calendar
ノード管理
Fleet Manager
Session Manager
Inventory
Run Command
Patch Manager
Distributor
State Manager
コンポーネント
Systems Manager ドキュメント
-
実行するアクションを定義したもの
- 一般的なタスクの自動化を行う
-
JSON もしくは YAML 形式で記述される
-
以下のタイプ(ドキュメントタイプ)に分かれる
- Command タイプ
- マネージドノード(EC2インスタンス, オンプレサーバー)でコマンドを実行
- Automation(runbook)タイプ
- Automation runbookとして AWS リソースに対する操作を行う
- Package タイプ
- Session タイプ
- Policy タイプ
- Command タイプ
ドキュメントの書き方
- スキーマバージョンによってドキュメントタイプが決定される
- 参考: https://docs.aws.amazon.com/systems-manager/latest/userguide/documents-schemas-features.html
- Command, Policy タイプ: スキーマバージョン2.2
- Automationタイプ: スキーマバージョン0.3
- Sessionタイプ: スキーマバージョン1.0
Commandドキュメント
書き方は以下ドキュメントを参考に
Automationドキュメント
SSM agent
- rootで稼働する
- ポーリング処理を行い、SSM APIと通信を行う
┌─────────────────┐ ポーリング ┌──────────────────────┐
│ SSM Agent │ ──────────────→ │ Systems Manager │
│ (EC2/Hybrid) │ │ Service │
│ │ ←────────────── │ │
└─────────────────┘ コマンド/応答 └──────────────────────┘
│ │
│ UpdateInstanceInformation │
│ (ハートビート) │
└────────────────────────────────────────┘
アクセス経路について
- インターネット経由
- VPCe経由
権限付与
Systems Managerに接続するための権限は以下
- EC2インスタンスに明示的に以下を設定 1. IAMポリシー: AmazonSSMManagedInstanceCore でコア機能をアタッチ 2. 必要に応じて S3 などのポリシーをアタッチ(option)
- 「デフォルトのホスト管理設定(DHMC)を有効にし、アカウント内の全EC2を自動で管理下にする」
方式1: IAMインスタンスプロファイル(従来方式)
┌─────────────────────────────────────────────────────────────┐
│ EC2インスタンス │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ IAMインスタンスプロファイル(手動アタッチ) │ │
│ │ └─ AmazonSSMManagedInstanceCore │ │
│ └───────────────────────────────────────────────────────┘ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ SSM Agent │ │
│ └────────────────────┬──────────────────────────────────┘ │
└───────────────────────┼─────────────────────────────────────┘
│ インスタンスプロファイルの認証情報を使用
▼
┌───────────────┐
│ Systems Manager│
└───────────────┘
必要な作業:
- IAMロールを作成(信頼ポリシー: ec2.amazonaws.com)
- AmazonSSMManagedInstanceCore ポリシーをアタッチ
- インスタンスプロファイルを作成
- EC2インスタンスにアタッチ
方式2: Default Host Management Configuration (DHMC)
┌─────────────────────────────────────────────────────────────┐
│ EC2インスタンス │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ SSM Agent (v3.2.582.0以上) │ │
│ └────────────────────┬──────────────────────────────────┘ │
└───────────────────────┼─────────────────────────────────────┘
│ DHMCのデフォルトロールから認証情報を取得
▼
┌───────────────┐
│ Systems Manager│
│ ┌────────────────────────────────────────┐
│ │ AWSSystemsManagerDefault │
│ │ EC2InstanceManagementRole │
│ │ └─ AmazonSSMManagedEC2Instance │
│ │ DefaultPolicy │
│ └────────────────────────────────────────┘
└───────────────┘
DHMCを有効化すると、AWSが自動的に以下を実行:
- デフォルトIAMロール(AWSSystemsManagerDefaultEC2InstanceManagementRole)の作成
- SSM Agentへの認証情報の自動提供
- 条件を満たすEC2の自動登録
DHMCの有効化方法
コンソール:
- Systems Manager → Fleet Manager
- Account management → Configure Default Host Management Configuration
- Enable Default Host Management Configuration をオン
DHMCを有効化
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Systems Managerが以下をチェック: │
│ 「default-ec2-instance-management-role」サービス設定に │
│ ロールが設定済みか? │
└─────────────────────────────────────────────────────────────┘
│
├─ 未設定の場合 ──────────────────────────────────────────┐
│ │
│ Systems Managerが自動的にロールを作成: │
│ ・AWSSystemsManagerDefaultEC2InstanceManagementRole │
│ ・AmazonSSMManagedEC2InstanceDefaultPolicy をアタッチ │
│ │
├─ 設定済みの場合 ────────────────────────────────────────┐
│ │
│ 既存のロールをそのまま使用 │
│ │
▼
┌─────────────────────────────────────────────────────────────┐
│ 以降、このロールがリージョン・アカウント内の │
│ 全EC2インスタンスに対して使用される │
└─────────────────────────────────────────────────────────────┘
AWS CLI:
aws ssm update-service-setting \
--setting-id arn:aws:ssm:<region>:<account-id>:servicesetting/ssm/managed-instance/default-ec2-instance-
management-role \
--setting-value arn:aws:iam::<account-id>:role/service-role/AWSSystemsManagerDefaultEC2InstanceManagementRole