Systems Managerをざっくりまとめてみた

# 更新

- 2024/09/12 Session manager のVPCエンドポイント2つになった

# はじめに
SystemsManager(以下、SSM)は、色々と機能があり全体感を掴めていなかったので簡単にまとめてみました。随時アップデート出来たらと思います。


# Systems Manager
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223559/7ff11206-e5c2-25cb-0521-c856d90136f0.png)

- SSMとは？
    - ハイブリッドクラウド環境のための安全なエンドツーエンドの管理ソリューション
    - SSMを使ってサーバ管理を行うには、サーバをマネージドノードにする
        - マネージドノードにするためには？
            - 1. SSM Agent導入
                - SSM Agentがポーリング(SSM Agent→ SSM API)
            - 2. アウトバウンド経路確保
                - インターネット経由
                - VPCエンドポイント経由
            - 3.  権限付与
                - 従来
                    - ①IAM Policy 「AmazonSSMManagedInstanceCore」
                    - ②必要に応じてS3などポリシーをアタッチ
                - 「デフォルトのホスト管理設定(DHMC)」を有効にし、アカウント内の全EC2を自動で管理下にする


- オンプレミスのサーバをマネージドノードにするには
    - 1. TLS証明書のインストール (Option)
    - 2. ハイブリッド環境用のIAMロール作成
    - 3. SSMでアクティベーションコード生成
    - 4. インスタンスにアクティベーションコード設定



### Quick Setup

- 運用に役立つAWSサービスと機能を、推奨されるベストプラクティスで迅速に設定
- 個別のAWSアカウントや、Organizationsと統合して複数AWSアカウントにまたがって使用することができる
- 複数のリージョンに対しても展開可能
- Quick Setupの使用にはコストがかからない

- 使用開始
    - QuickSetupが設定のデプロイに使用するホームリージョンを選択(変更不可)
    - QuickSetupの利用に必要なIAMロールを自動で作成
    - OrganizationsとCFnの間で信頼されたアクセスを有効

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223559/38e27a0e-0b2d-f8ed-b8d5-9fa2ad3efb20.png)

- Host Management
    - EC2インスタンスの管理に必要な権限を、最小限の権限で付与
    - 最新状態の維持が推奨されるエージェントについて、更新を自動化

- Default Host Management Configuration
    - EC2インスタンスにIAMロールをアタッチしなくても、SSMで管理することができる
    - DHMCを設定する前に、以下の要件が満たされている必要がある
        - 対象のEC2インスタンスに最新の
    - 管理アカウントで設定タイプを表示した時だけDHMCが表示される
    - DHMCの設定画面(設定オプション)
        - SSMエージェントの自動更新を2週間ごとに有効にする

- Config Recording
    - 利用が推奨されているAWS Configを迅速に有効化できる
    - ターゲットのConfig設定が変更された場合は、Config Recordingから設定の修復が試みられる
    - Quick SetupのConfig Recordingの設定を削除しても、有効化されたConfigは無効化されない

- Conformance Packs
    - AWS Config ルールと修復アクションの集まりであるコンフォーマンスパックを、マルチアカウント/マルチリージョンにデプロイできる
    - 前提として Config Recordingが有効化されていること
    - Quick Setupから設定を削除しても、すでに適用されたコンフォーマンスパックは削除されない



- DevOps Guru
    - MLを活用して、通常の運用パターンから逸脱した動作を特定することができる
    - Quick Setupで有効化したDevOps Guruを無効化するには、カバレッジ設定を更新してリソースを分析しないようにする

- Change Manager (自動処理のタイミング制御)
    - アプリケーションの設定やインフラストラクチャに対する運用上の変更を要求、承認、実装、報告するための変更管理フレームワークをAWS Organizationsで設定された組織で使用する場合に利用
    - カレンダーイベントを作成し、そのイベント有無で実行を制御できる



- Resource Scheduler(2022/12(
    - スケジュールに基づいて、EC2インスタンスの起動と停止を自動化することが可能
    - Instance Schedulerとの比較もみる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223559/9a39f941-14a3-dd50-2918-6371206c8b97.png)


### 運用管理 (Explorer/OpsCenter/Incident Manager)

- Explorer
    - 概要
        - カスタマイズ可能な運用ダッシュボード
        - 複数のサービスの運用データ(OpsData)をマルチアカウント・マルチリージョンで集約し、サマリーを表示
        - 主にDevOpsマネージャー向け
        - ハイレベルの運用ダッシュボード


- OpsCenter
    - 概要
        - アカウント全体でOpsItemsを管理するようにOpsCenterを構成
        - Systems Managerの委任管理者をセットアップし、メンバーアカウントでOpsItemsを作成、編集、表示できる様にする
        - 複数のアカウント間でOpsItemsを管理するために必要なIAMポリシーとロールを作成する
        - 運用エンジニアが担当システムの運用作業項目を管理し、迅速に対応
        - ServiceNow、Jira Service Managementと連携も
        - OpsItemとは？
            - AWSリソースのパフォーマンスと健全性に影響を与える、運用上の対処が必要となる作業項目
    - その他の便利な機能
        - 重複排除
        - 運用上のインサイト(Operational Insights)
            - OpsItemを自動的に分析し、複数のOpsItemを集約するOpsItemを生成してくれる。関連するOpsItemのステータスをまとめて変更するのに便利
        - クロスアカウント対応
        - 他サービス連携

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223559/474ef01b-b117-a905-c69f-ba29b13f5331.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223559/fe1045fe-683b-7d79-5253-a760322b8928.png)

### アプリケーション管理(Applicaction Manager/AppConfig/ParameterStore)

- Application Manager
    - 個々のリソースだけでなく、アプリケーションを管理する
    - 一つのコンソールからアプリケーションを管理できる
    

- AppConfig
    - アプリケーション構成を作成、管理、デプロイ
    - アプリケーションを実行したまま、アプリケーション構成の変更をデプロイ
    - デプロイ戦略を指定でき、少しずつデプロイ可能

- Parameter Store
    - アプリケーション構成値の一元的な格納
    - 全てのパラメータを1か所で一元的に更新することで、コードのメンテナンスと自動化を簡素化


### 変更管理(ChangeManager/Automation/MaintenanceWindows/ChangeCalendar)

- Automation(カスタム処理の自動化と修復アクション)
    - 自動化ワークフローであるRunbookを実行できる
    - マルチアカウント/マルチリージョンでの実行も可能

- Maintenance Windows (タイムウィンドウ内のタスクを実行制御)
    - タスクのスケジュール制御ができる
    - 複数のタスクを登録でき、優先度に応じて実行順序を制御できる


### ノード管理


- Fleet Manager (ノードフリート管理)
    - コンソールからノードフリートの管理ができるビジュアルツール
        - ファイルシステム
        - パフォーマンスカウンタ
        - プロセス
        - ユーザー・グループ

- Session Manager (ノードへセキュアな特権アクセス)
    - インバウンドポートを開くことなく、ブラウザやCLIからインタラクティブなシェルアクセスを実現)
    - ポートフォワーディングでのアクセスも可能

https://dev.classmethod.jp/articles/vpcendpoint-ec2messages-not-required/


- Inventory (ノードのメタデータ可視化)
    - マネージドノードのメタデータを収集
        - アプリ、ファイル、NW構成など
    - 活用例 
        - Log4jの探索
        - マルチアカウント/マルチリージョンのダッシュボード作成
    
- Run Command(ノードへ一括コマンド発行)
    - サーバにログインすることなく、マネージドノードに対してコマンドを一括実行
    - コマンドドキュメントを実行

- Patch Manager (Patch適用を自動化)
    - OSとアプリケーションのパッチ適用を自動化できる
    - Quick Setupを利用することで、`パッチポリシー`を作成可能
    - カスタムパッチ`ベースライン`に変更を加えた場合、Quick Setupに同期されるまで1h程度要する場合がある

https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_Amazon-EventBridge-Global-Endpoint_1024_v1.pdf


- Distributor(ソフトウェアのインストール・更新の自動化)
    - DistributorパッケージをAWSアカウントとAWSリージョン、またはAWS Organizationsの組織全体にデプロイできる
    - デプロイ可能なパッケージ(2023/11時点)
    - EFS ユーティリティパッケージ
    - CloudWatchエージェント
    - EC2Launch v2エージェント


-  State Manager
    -  フリート全体の設定管理ソリューション
    -  Quick Setupで展開したSSMの定期実行処理はState Managerにて管理される
    -  State Managerは、ノードを定義された状態に保つためにプロセスを自動化


- ドキュメント

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/223559/2179d962-08e1-ba45-9ae5-c452ffdc3abe.png)





# 参考資料

https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-SystemsManager-Overview_v1.pdf

https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AWS-SystemsManager-QuickSetup_1231_v1.pdf