コンテンツにスキップ

AWS Systems Manager (新SSM) @AWSリソース

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. チェンジカレンダー

他の AWS リソース (例:SM オートメーション、Amazon EventBridge など) を定期的に実行する Cron として使用する。

定期的に実行する AWS リソースで、他の AWS リソース (EC2、RDS) の起動処理と停止処理を定義すれば、夜間だけ停止させられる。

チェンジカレンダー
⬇⬆️︎
オートメーション、Amazon EventBridge (カレンダー取得処理、対象リソースの開始停止処理を定義)
⬇⬆️︎
EC2、RDS

sm-change-calender_scheduling


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』としたほうがよい。


変数の暗号化と復号

AWS KMS の暗号化キーを使用すると、パラメーターストアに永続化される変数を暗号化/復号できる。

パラメーターストア上で変数は暗号化されており、EC2 (Amazon ECS や Amazon EKS のコンテナのホストを含む) で参照するときに復号される。

セキュリティ上の理由で、本来はできない Secret のバージョン管理が、AWS KMS で暗号化することにより、可能になる。

たとえ同じ文字列を暗号化する場合でも、そのときのタイムスタンプなどさまざまな要素で暗号化されるため、毎回異なるハッシュ値に暗号化される。

parameter-store_kms


命名規則

SM パラメーター名は、『/<リソース名>/<変数名>』とすると、わかりやすい。


04. AWS SSM Session Manager

AWS SSM Session Managerとは

EC2 (Amazon ECS や Amazon EKS のコンテナのホストを含む) へ通信できるようにする。

SSH 公開鍵認証とは異なり、Internet Gateway 経由ではなく、ssmmessages エンドポイント経由でインスタンスへリクエストを送信できる。

接続したいインスタンスに systems-manager エージェントをインストールする必要がある。


AWSセッション

TLS、Sigv4、AWS KMS を使用して暗号化された接続のこと。


同時AWSセッションの上限数

同時 AWS セッションの上限数は 2 つまである。

以下のようなエラーが出たときは、セッション途中のユーザーが他にいるか、過去のセッションを完了できていない可能性がある。

AWS SSM Session Manager で既存のセッションを完了できる。

# Amazon 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.