こんにちは。ぱぴぷぺポインコと暮らしている高橋です。 「やってみよう」というと、猿とおねえさんが色々なことにチャレンジする某番組を思い出しますよね。
AWS Systems Manager (SSM) が便利という話をよく聞くので、一体どんなことができるのか? をまとめてみました。今回は概要の説明までですが、一部機能は当社ブログの手順をご案内しています。(2020/04/15時点の情報です)
AWS Systems Manager (SSM) とは
AWS SSMを用いることで、オンプレミス/AWS両環境で運用に必要な作業を、実施することができます。
・リソース状況の可視化
・定型作業の実施
・インタラクティブな操作
・アプリケーションの設定管理
20200212 AWS Black Belt Online Seminar AWS Systems Manager (P.10)
ということで、マネジメントコンソール上からオンプレミス、およびAWSのリソースを管理することができるサービスです。SSMという略称は、EC2に特化した前身のサービス「EC2 Simple Systems Manager」の名残のためのようです。
では、実際にどんなことをやれるのか。まずは概要の一覧です。
SSMでやれること
大きく6つに分かれています。
[全体]
- 高速セットアップ:インスタンスをSSMで管理するよう自動構成
[運用管理]
- エクスプローラー(Explorer):運用アイテム情報のダッシュボード
- OpsCenter:運用アイテム(対応が必要なイベント)の管理
- CloudWatch ダッシュボード:CloudWatch用のダッシュボードをカスタマイズ
- Trusted Advisor と PHD:Trusted Advisor と Personal Health Dashboard のダッシュボード
[アプリケーション管理]
- リソースグループ(Resource Groups):タグによるサーバー群のグループ管理
- AppConfig:アプリケーション設定(機能グラフ等)の管理
- パラメータストア:設定パラメータの集中管理用データストア
[アクションと変更]
- 自動化(Automation):AWS環境全体に対する自動化処理の実行
- カレンダーの変更(Change Calendar):実行可否を制御するカレンダー
- メンテナンスウィンドウ:自動化処理のスケジュールと順序の管理
[インスタンスとノード]
- コンプライアンス(Configuration Compliance):コンプライアンスの適合状態ダッシュボード
- インベントリ(Inventory Management):サーバー構成情報のインベントリを閲覧する
- マネージドインスタンス(Managed Instance):SSM管理対象のサーバー群
- ハイブリッドアクティベーション(Activations):オンプレミスサーバーをSSM管理下に入れる
- セッションマネージャー(Session Manager):SSMを使ったサーバーへリモートアクセスする
- Run Command:サーバー群の上でコマンドを実行する
- ステートマネージャー(State Management):サーバー群の構成を指定した状態に維持する
- パッチマネージャー(Patch Mangement):サーバー群に指定ルールに基づきパッチを適用する
- ディストリビューター(Distributor):サーバー群にパッケージをインストールする
[共有リソース]
- ドキュメント(System Manager Documents):SSMで実行する処理を記述したドキュメント
SSMをやってみる前に
SSMを使うためには、当該リソースを「マネージドインスタンス」(SSMで管理されたインスタンスのこと)にする必要があります。そのためには、以下の3 Stepが必要です。
- SSM Agentの導入
- SSM AgentからSSM APIへの経路確保
- IAMロールの付与
20200212 AWS Black Belt Online Seminar AWS Systems Manager(P.14)
今回は手順については触れません。詳しくはドキュメントを参照してください。 SSM エージェント の使用
料金について
料金についても確認しておきましょう。大体無料なのですが、一部機能は料金が発生します。発生する機能は以下です。こちらも詳しくはドキュメントを参照してください。
- OpeCenter
- AWS AppConfig
- パラメータストア
- オンプレミスインスタンス管理
- ディストリビューター
- オートメーション
やってみよう
では実際にやってみましょう。(といっても今回は設定手順などは割愛し、概要の説明までです...)
高速セットアップ
SSMに関する設定を簡単にやってくれる機能です。
- AWS Identity and Access Management (IAM) instance profile roles for Systems Manager. (SSM用インスタンスプロファイル、IAMロールの設定)
- A scheduled, bi-monthly update of SSM Agent. (SSM Agentの隔週更新)
- A scheduled collection of Inventory metadata every 30 minutes. (インベントリ メタデータの収集(30分間隔))
- A daily scan of your instances to identify missing patches. (パッチ適用状況の日次スキャン)
- A one-time installation and configuration of the Amazon CloudWatch agent. (CloudWatch Agentのインストールと設定)
- A scheduled, monthly update of the CloudWatch agent. (CloudWatchの月次更新)
これが設定画面です。ここで任意の設定をして「Set up Systems Manager」を選択すると、自動でセットアップしてくれるということですね。
エクスプローラー(Explorer)
AWS リソースに関する情報を確認できる、カスタマイズ可能なダッシュボードです。
OpsCenter
AWSリソースに関連する運用作業項目(OpeItems)を表示、調査、解決できるダッシュボードです。 CloudWatch Eventsのルールとして登録します。
CloudWatch ダッシュボード
CloudWatchコンソールにあるダッシュボードをカスタマイズできます。
Systems Manager によってホストされる Amazon CloudWatch ダッシュボード
Trusted Advisor と PHD
AWS Trusted Advisor の通知、AWS Personal Health Dashboard のパフォーマンスと可用性のアラートを確認できます。
Systems Manager によってホストされる Trusted Advisor と Personal Health Dashboard
リソースグループ(Resource Groups)
リソースグループを作成して、AWS Systems Managerのコンソール画面からリソースグループ内に紐づけられたリソースを一元管理できます。
詳しくは当社ブログをご覧ください。 http://blog.serverworks.co.jp/tech/2020/04/01/systems-manager-resource-group/
AppConfig
EC2、コンテナ、およびサーバーレスアプリケーションの設定の変更をデプロイできます。 開発や本番など、環境毎に異なる設定情報をデプロイしたり、バリデーションチェックやカナリアデプロイもできるようです。
AWS AppConfig を使用したアプリケーション構成設定の安全なデプロイ
パラメータストア
コンフィグレーションや設定値をプレーンテキスト、あるいは暗号化(KMS)して保管、管理することができます。 例えばCloudWatchエージェント設定ファイルの保存などがおこなえます。
自動化(Automation)
繰り返しタスクの自動化、サーバーの構成検証、監査、EC2やオンプレサーバーの管理などができます。自動化の内容は、AWS提供のドキュメント、あるいは後述のドキュメント機能で作成したドキュメントを選択して決定します。
詳しくは当社ブログをご覧ください。 http://blog.serverworks.co.jp/tech/2019/08/02/post-72746/ http://blog.serverworks.co.jp/tech/2020/01/15/automation_windowsupdate/
カレンダーの変更(Change Calendar)
指定したアクション (Systems Manager Automation ドキュメントなど) が AWS アカウントで実行できるまたはできない日付と時刻の範囲を設定できます。 例えば自動化(Automation)で定期的に実行するタスクについて、土日は実行を許可しない、といったスケジューリングが可能です。
AWS Systems Manager Change Calendar
メンテナンスウィンドウ
オペレーティングシステムのパッチ適用、ドライバーの更新、ソフトウェアやパッチのインストールなどのアクションをスケジューリングできます。
以下、4つのタスク実行をサポートしています。
- Systems Manager Run Command コマンド
- Systems Manager オートメーションワークフロー
- AWS Lambda 関数
- AWS Step Functions タスク
そして、以下のようなことができます。
- SSM エージェント をインストールまたは更新。
- Systems Manager Run Command タスクを使用して PowerShell コマンドおよび Linux シェルスクリプトを実行。
- Amazon マシンイメージ (AMI) の構築、ソフトウェアのブートストラップ、Systems Manager オートメーションタスクを使用したインスタンスの設定。
- インスタンスをスキャンしてパッチ更新を探すなどの追加アクションをトリガーする AWS Lambda 関数を実行。
- AWS Step Functions ステートマシンを実行し、Elastic Load Balancing 環境からインスタンスを削除するタスクや、インスタンスにパッチを適用してから Elastic Load Balancing 環境に戻すタスクなどを実行。
AWS Systems Manager メンテナンスウィンドウ
コンプライアンス(Configuration Compliance)
マネージドインスタンスをスキャンして、パッチコンプライアンスと設定の不一致を確認できます。
AWS Systems Manager 設定コンプライアンス
インベントリ(Inventory Management)
マネージドインスタンスからメタデータを収集できます。収集できるメタデータは以下です。
アプリケーション:アプリケーション名、発行元、バージョンなど。
AWS コンポーネント:EC2 ドライバ、エージェント、バージョンなど。
ファイル:名前、サイズ、バージョン、インストール日、変更および最新アクセス時間など。
ネットワーク設定の詳細:IP アドレス、MAC アドレス、DNS、ゲートウェイ、サブネットマスクなど。
Windows 更新:Hotfix ID、インストール者、インストール日など。
インスタンスの詳細:システム名、オペレーティングシステム (OS) 名、OS バージョン、最終起動、DNS、ドメイン、ワークグループ、OS アーキテクチャなど。
サービス:名前、表示名、ステータス、依存サービス、サービスのタイプ、起動タイプなど。
タグ:インスタンスに割り当てられるタグ。
Windows レジストリ:レジストリキーのパス、値の名前、値タイプおよび値。
Windows ロール:名前、表示名、パス、機能タイプ、インストール日など。
カスタムインベントリ:カスタムインベントリの操作 に説明されるようにマネージドインスタンスに割り当てられたメタデータ。
インベントリについて、関連する当社ブログです。 http://blog.serverworks.co.jp/tech/2017/03/06/rezept-update/
マネージドインスタンス(Managed Instance)
マネージドインスタンスの一覧を確認、各種設定変更等ができます。
- エージェントの自動更新状況確認、設定
- インベントリのセットアップ
- リソースデータの同期(1 つ以上の AWS アカウントおよび 1 つ以上の AWS リージョンで実行されているインスタンスから収集されたメタデータを、1 つの S3 バケットに送信できる)
- パスワードのリセット
- IAMロールの変更
- マネージドインスタンスの登録解除
ハイブリッドアクティベーション(Activations)
オンプレミスサーバー、仮想マシン(VM)などをSSMにマネージドインスタンスとして登録します。
AWS Systems Manager ハイブリッドアクティベーション
ハイブリッド環境の導入手順はこちらです。 ハイブリッド環境で AWS Systems Manager を設定する
セッションマネージャー(Session Manager)
対象のマネージドインスタンスに接続し(セッションを開始)、シェルアクセスすることができます。Linux、Windowsともに対応しています。(AWS CLIからも接続可能)
概要については、当社ブログをご覧ください。 http://blog.serverworks.co.jp/tech/2018/09/13/post-66499/
AWS CLIでポートフォワーディングをおこなうこともできます。 http://blog.serverworks.co.jp/tech/2019/09/11/ssm-portfowarding/
ログ記録と監査
セッションマネージャーでは、ログ記録と監査に関して以下のことが可能です。
- セッションログを作成し、保存する。
- 過去 30 日間にインスタンスに行われたすべての接続の詳細を示すレポートを生成する。
- SNSなど、AWS アカウントのセッションアクティビティの通知を生成する。
- AWS Lambda 関数の実行、CodePipeline の開始、または Run Command の実行など、セッションアクティビティの結果としての AWS リソース上の別のアクションを自動的に開始する。
Run Command
マネージドインスタンスにログインすることなく、AWS CLIやマネジメントコンソールからコマンドを実行することができます。
コマンドの一例 [AWS-RunShellScript] チュートリアル: Run Command で AWS Tools for Windows PowerShell を使用する チュートリアル: Run Command で AWS CLI を使用する
AWS Systems Manager Run Command
ステートマネージャー(State Management)
SSMドキュメント (マネージドインスタンスで Systems Manager が実行するアクションを定義)の実行をスケジューリングできる機能です。以下のようなことができます。
- 起動時に特定のソフトウェアを使用してインスタンスをブートストラップする。
- 定義済みのスケジュールに従ってエージェント (SSM エージェント など) をダウンロードして更新する。
- ネットワーク設定を設定する。
- インスタンスを Windowsドメインに結合する (Windows インスタンスのみ)。
- ライフサイクルを通じてソフトウェアの更新でインスタンスをパッチする。
- ライフサイクルを通じて Linux および Windows マネージドインスタンスでスクリプトを実行する。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-state.html
パッチマネージャー(Patch Mangement)
AWS Systems Manager Patch Manager
ディストリビューター(Distributor)
Run Command やステートマネージャーなどのSSM機能を併用して、ソフトウェアパッケージを安全に保存、配布することができる機能です。 AWS Systems Manager Distributor
ドキュメント(System Manager Documents)
AWS Systems Manager ドキュメント (SSM ドキュメント) は、マネージドインスタンスで Systems Manager が実行するアクションを定義します。記述にはJSONやYAMLを使用します。 ドキュメントにはいくつかのタイプがあり、タイプ毎に使用する機能が異なります。
コマンドのドキュメント:Run Command, ステートマネージャー, メンテナンスウィンドウ
自動化ドキュメント:オートメーション, ステートマネージャー, メンテナンスウィンドウ
パッケージドキュメント:ディストリビューター
セッションドキュメント:Session Manager
ポリシードキュメント:ステートマネージャー
Change Calendarドキュメント:Change Calendar
あとがき
いかがでしたでしょうか。
いくつかの機能は、最近GAとなったようで(マネコン上 New と表示される)、まだまだ機能が増えそうな気がします。正直なところ、使い方がよく分かっていない機能もあるので、また別の機会にハンズオンしてみて「できたできた」と歌いたいと思います。
それではまた、ごきげんよう。
高橋 悠佑 (ポインコ兄) (執筆記事一覧)
健康志向です