AWS Systems Managerのサービスが多すぎるのでまとめる

AWS Systems Manager (SSM)のサービスとサービス間の関連のざっくりまとめ。
以下は全体を1枚絵に落とした図。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/406130/70fe127b-fc5b-ddc5-429f-dbcfa923575d.png)

大別すると以下の5つの機能から成り立つ。

- 共通リソース
- ノード管理
- 変更管理
- 運用管理
- アプリケーション管理

前者3つはSSMエージェントを介して管理対象とするデバイスを操作/監視するリソース。管理対象のデバイスにはEC2インスタンスやIoT Greengrassモノ、オンプレミスサーバを指し、ノードと表現される。ここまでは思っていた`SSM`の機能。

後者2つに属するリソース群は思っているSSMと毛色が違う。`運用管理`はDevOpsエンジニアがここだけ見ればいいように種々の情報を一元管理する場所。
`アプリケーション管理`はアプリケーションでの機能として利用するリソース群と思っていたが`Application Manager`はなんでここにあるかよくわからん…運用じゃないのか？

# 共通リソース

## AWS SSM Document

- SSMが実行するアクションを定義するJSONまたはYAML形式のドキュメント。
- ドキュメントには種々の種類がありコマンドドキュメントやランブックなど、特定のSSMサービス(もしくは`AWS Config`などSSM以外のサービス)から参照されるドキュメント。
- `AWS SSM`の中核は`SSM Document`な気がする。

# ノード管理

## AWS SSM Run Command

- ノードに対してSSHやRDP接続することなく予め`SSM Document`にて定義したタスクを実行できる。

## AWS SSM Session Manager

- `Run Command`より自由度高くノードに接続する場合は`SSM Session Manager`を利用する。エージェント経由でありSSHやRDP接続をしないためポートを解放せず安全性の高い接続が可能。

## AWS SSM State Manager

- ノードの状態をあるべき状態に保つ。
- そのためにダッシュボードにコンプライアンスレポートを表示し、状態変化をモニタリングする。その変更をトリガして予め`SSM Document`にて定義されたタスクを実行する。
- 実行ステータスを`SSM  Compliance`に記録できる。

## AWS SSM Distributer

- 特定のノード、もしくはリソースグループに対してソフトウェアを配布する。
- `Run Command`で実行する`AWS-ConfigureAWSPackage`Document実行を切り出してサービスとしたもの。
- `State Manager`にてインスタンスを監視し、`Distributer`でパッケージをデプロイする構成が可能。

## AWS SSM Patch Manager

- 特定のノード、もしくはパッチグループとしてまとめた複数のノードに対して、パッチベースラインとして定義した設定をOS毎に適応する。
- `Run Command`で実行する`AWS-RunPatchBaseline`Document実行を切り出してサービスとしたもの。
- パッチコンプライアンスデータを`SSM Compliance`に転送し、`Security Hub`で一括管理することが可能。

## AWS SSM Compliance

- `Patch Manager`や`State Manager`の実行ステータスを受け取り管理。
- 結果を受けて`Run Command`や`State Manager`、`Event Bridge`を利用して問題を修正できる。

## AWS SSM Inventory

- ノードのメタデータを収集しS3へ保管する。
- `AWS Config`にてノードの状態を定義し、違反時にEventBridgeを介して変更するなどに利用。

## AWS SSM Fleet Manager

- AWS・オンプレミスで実行されるサーバ、`AWS IoT Greengrass`モノをノードとして一元管理するサービス。
- AWSマネコンからフリートに属するのノードのパフォーマンス監視や正常性監視が可能。
- WindowsインスタンスへのRDP接続も対応。

## AWS SSM Hybrid Activation

- オンプレや別のアカウントのEC2アカウントのデバイスをSSM管理する際に利用。
- `Hybrid Activation`リソースを作成する際に発行されるIDを利用して管理されるデバイスにて紐付けを有効化する。

# 変更管理

`Session Manager`や`Run Command`は手動で`Document`や任意のコマンドを実行する機能を提供している。`Automation`や`Maintenance Windows`ではそれらコマンド実行を自動化し、かつその操作をノードだけでなくAWSリソースにも拡張している違いがある。

## AWS SSM Automation

- SSMにて管理するノード以外にAWSリソースを含めて管理することができる。
- 開発者が`SSM Automation`を実行することで、予め紐付けたDocument(`ランブック`として定義される)を実行できる。ランブックではCFnを介したAWSリソースの作成等も可能。

## AWS SSM Maintenance Windows

- 予め`SSM Document`にて定義されたタスクを定時実行する。
- その他、`Lambda`や`StepFunctions`、`SSM Automation`、`Run Commnand`、`Patch Manager`を実行可能。
- 実行するタスク間に優先度をつけることができる。

## AWS SSM Change Calendar

- ノードへの`SSM Document`実行可否を時間ベースで決定する。
- `Automation`実行等において利用する`SSM Document`に紐付け、実行時にその時間帯が`SSM Document`実行を許可された時間であるかを判別して実行される。


## AWS SSM Change Manager

- `SSM Automation`のランブック実行にあたり承認プロセスを挟む。
- テンプレートとして作成し、実行する`Document`を紐付けておき、フローを回す毎にリクエストを生成する。リクエストが承認されると`Automation`が実行される。

# 運用管理

## AWS SSM Explorer

- アカウント全体の`OpsData(運用データ)`を集約して一元的なダッシュボードを提供する。
- 以下のリソースからOpsDataとして情報ウィジェットに集約する。
    - EC2
    - Patch Manager
    - State Manager
    - Trasted Advisor
    - Compute Optimizer
    - AWS Support
    - AWS Config
    - Security Hub
- `SSM OpsCenter`の`OpsItems(AWSリソースに対する作業項目)`を表示可能。
- CSVレポートヤSNSへのアラートが可能。

## AWS SSM OpsCenter

- 運用管理対象のAWSリソースを一括管理する場所。
- `CloudWatch Alarm`や`EventBridge`で発生するイベントを`OpsItems`として集約する。
- 関連付けた`SSM Document`実行やレポート機能を提供する。

## AWS SSM Incident Manager

- Amazon創業以来のインシデント対応のベストプラクティスに基づいたワークフローを提供。
- `CloudWatch`、`CloudTrail`、`SSM`、および`EventBridge`のデータを統合。
- ランブックと紐付け、インシデント対応を自動化可能。

# アプリケーション管理

## AWS SSM Application Manager

- 複数のAWSリソースの論理グループを作成し、`SSM`の運用情報を1つのコンソールに集約する。
- DevOpsエンジニアがAWSリソースの問題を検出して調査する時間を短縮する。

## AWS SSM AppConfig

- アプリケーションの設定値を管理する。
- 変更リリースを伴わずに本番環境の設定値を変更することができる。

## AWS SSM Parameter Store

- 環境変数置き場。
- 暗号化できる。

# 参考

Fleet Manager
- https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/fleet.html
- https://dev.classmethod.jp/articles/aws-systems-manager-fleet-manager-released/

State Manager / Maintenance Windows
- https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/state-manager-vs-maintenance-windows.html
- https://www.skyarch.net/blog/ssm-fleet-manager%E3%81%8B%E3%82%89rdp%E6%8E%A5%E7%B6%9A%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B/

Automation
- https://dev.classmethod.jp/articles/create-cfn-stack-with-approval-by-ssm-automation/

Run Command 
- https://sadayoshi-tada.hatenablog.com/entry/2021/03/08/090000

Maintenance Windows
- https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-maintenance.html
- https://dev.classmethod.jp/articles/esm-maintenance-windows/

State Manager
- https://dev.classmethod.jp/articles/patching-all-instance-by-ssm-state-manager/

Document
- https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/documents.html

Patch Manager
- https://dev.classmethod.jp/articles/patchmanager-baseline-and-group/
- https://www.zead.co.jp/column/ssm_patch/
- https://sid-fm.com/blog/archive/entry/20211006.html
- https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/patch-manager-security-hub-integration.html

Distributer
- https://dev.classmethod.jp/articles/aws-systems-manager-distributor-perfect-understand/

Compliance
- https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-compliance.html

Inventory
- https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-inventory.html
- https://blog.serverworks.co.jp/tech/2017/03/06/rezept-update/

Hybrid Activation
https://blog.serverworks.co.jp/2021/07/29/193413

Change Calendar
- https://dev.classmethod.jp/articles/systems-manager-change-calendar-release/

Change Manager
- https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/working-with-change-manager.html
- https://blog.serverworks.co.jp/reinvent2020-systems-manager-change-manager

Explorer
- https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/Explorer.html

OpsCenter
- https://dev.classmethod.jp/articles/systems-manager-opscenter-release/

Incident Manager
- https://docs.aws.amazon.com/ja_jp/incident-manager/latest/userguide/what-is-incident-manager.html

Application Manager
- https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/application-manager.html
- https://dev.classmethod.jp/articles/ssm-application-manager-supports-ecs-cluster/

AppConfig
- https://dev.classmethod.jp/articles/aws-appconfig-profile-compare/

全体
- https://dev.classmethod.jp/articles/all-ssm-capabilities-2021/
- https://blog.serverworks.co.jp/tech/2020/04/16/systems_manager_yattemiyou/