AWS Systems Manager (新SSM) @AWSリソース¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. チェンジカレンダー¶
他のAWSリソース (例:SMオートメーション、EventBridgeなど) を定期的に実行するCronとして使用する。
定期的に実行するAWSリソースで、他のAWSリソース (EC2、RDS) の起動処理と停止処理を定義すれば、夜間だけ停止させられる。
チェンジカレンダー
⬇⬆︎︎
オートメーション、EventBridge (カレンダー取得処理、対象リソースの開始停止処理、を定義)
⬇⬆︎︎
EC2、RDS
02. チェンジマネージャー¶
チェンジマネージャーとは¶
AWSリソースの設定変更に承認フローを設ける。
事前にランブックを作成する必要があり、IaCのように柔軟なプロビジョニングを実行するというより、決まりきったプロビジョニング (例:AWS上で稼働する負荷試験ツールの実行からレポート作成まで) を実行するのに向いている。
(1)
-
ランブックを作成する。AWSがあらかじめ用意してくれているものを使用もできる。
(2)
-
テンプレートを作成し、リクエストを作成する。
(3)
-
承認フローを通過する。これは、スキップするように設定もできる。
(4)
-
テンプレートを使用して、変更リクエストを作成する。
(5)
-
承認フローを通過する。これは、スキップできない。
(6)
-
変更リクエストに基づいて、AWSリソースを変更する処理が自動的に実行される。
これは、即時実行するこもスケジューリングもできる。
ランブック (ドキュメント)¶
AWSリソースを変更するためには『ランブック (ドキュメント) 』を事前に作成する必要がある。
ランブックでは、AWSリソースの変更箇所を定義する。
ランブックには、AWSがあらかじめ用意してくれるものとユーザー定義のものがある。
タイプ | 説明 | 補足 |
---|---|---|
Automationタイプ | サーバー/コンテナ外でコマンドを実行する。内部的には、Python製のAWS Lambdaが使用されている (たぶん) 。 - https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html |
EC2を起動し、状態がOKになるまで監視する手順を自動化した例: https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-walk-document-builder.html |
Commandタイプ | サーバー/コンテナ内でコマンドを実行する。内部的には、Run Commandが使用されている。 - https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html#what-are-document-types |
・EC2内で実行するlinuxコマンドを自動化した例: https://dev.classmethod.jp/articles/check-os-setting-ssm-doc-al2/ ・EC2内で実行するawscliコマンドを自動化した例: https://dev.classmethod.jp/articles/autoscalling-terminating-log-upload/ |
Sessionタイプ |
テンプレート¶
作業内容の鋳型こと。
ランブックを指定し、変更箇所に基づいた作業内容を定義する。
デフォルトではテンプレートの作成自体にも承認が必要になる。
ただし、指定した認可スコープを持つユーザーはテンプレートの承認をスキップするように設定できる。
変更リクエスト¶
鋳型に基づいた実際の作業のこと。
作業のたびにテンプレートを指定し、リクエストを提出する。
承認が必要になる。
03. パラメーターストア¶
パラメーターストアとは¶
変数やファイルをキーバリュー型で永続化する。
永続化されている間は暗号化されており、復号化した上で、変数やファイルとして対象のAWSリソースに出力する。
Kubernetesのシークレットの概念が取り入れられている。
パラメーターのタイプは全て『SecureString』とした方が良い。
変数の暗号化と復号化¶
KMSの暗号化キーを使用すると、パラメーターストアに永続化される変数を暗号化/復号化できる。
パラメーターストア上で変数は暗号化されており、EC2 (AWS ECSやAWS EKSのコンテナのホストを含む) で参照する時に復号化される。
セキュリティ上の理由で、本来はできないSecretのバージョン管理が、KMSで暗号化することにより、可能になる。
たとえ同じ文字列を暗号化する場合でも、その時のタイムスタンプなど様々な要素で暗号化されるため、毎回異なるハッシュ値に暗号化される。
命名規則¶
SMパラメーター名は、『/<リソース名>/<変数名>
』とするとわかりやすい。
04. セッションマネージャー¶
セッションマネージャーとは¶
EC2 (AWS ECSやAWS EKSのコンテナのホストを含む) に通信できるようにする。
SSH公開鍵認証とは異なり、Internet Gateway経由ではなく、ssmmessagesエンドポイント経由でインスタンスにリクエストを送信できる。
接続したいインスタンスにsystems-managerエージェントをインストールする必要がある。
AWSセッション¶
TLS、Sigv4、KMSを使用して暗号化された接続のこと。
同時AWSセッションの上限数¶
同時AWSセッションの上限数は2つまでである。
以下のようなエラーが出た時は、セッション途中のユーザーが他ににいるか、過去のセッションを完了できていない可能性がある。
セッションマネージャーで既存のセッションを完了できる。
# AWS ECS Execの場合
An error occurred (ClientException) when calling the ExecuteCommand operation: Unable to start new execute sessions because the maximum session limit of 2 has been reached.