SSM
AWS Systems Manager の略で、EC2 やオンプレミスサーバーの管理、パラメータストアを提供する
AWS運用
SSM とは
AWS Systems Manager (SSM) は、EC2 インスタンスやオンプレミスサーバーの管理、パラメータストア、セッションマネージャーを提供するサービスである。サーバーレス開発では主に SSM Parameter Store を設定値の管理に使う。
SSM Parameter Store
import { SSMClient, GetParameterCommand } from '@aws-sdk/client-ssm';
const ssm = new SSMClient({});
const param = await ssm.send(new GetParameterCommand({
Name: '/myapp/prod/log-level',
WithDecryption: true,
}));
console.log(param.Parameter?.Value); // "INFO"
パラメータの種類
| 種類 | 暗号化 | コスト | 用途 |
|---|---|---|---|
| String | なし | 無料 | 設定値、URL |
| StringList | なし | 無料 | カンマ区切りのリスト |
| SecureString | KMS | 無料 | パスワード (簡易) |
Secrets Manager との使い分け
| 観点 | SSM Parameter Store | Secrets Manager |
|---|---|---|
| コスト | 無料 (Standard) | $0.40/月 |
| 自動ローテーション | ❌ | ✅ |
| 用途 | 設定値、フラグ | パスワード、API キー |
| 階層構造 | ✅ (/myapp/prod/db-host) |
❌ |
/myapp/
/prod/
/db-host → "db.example.com"
/log-level → "WARN"
/dev/
/db-host → "localhost"
/log-level → "DEBUG"
Session Manager
SSH なしで EC2 インスタンスに接続する。セキュリティグループでポート 22 を開ける必要がない。
aws ssm start-session --target i-1234567890abcdef0
Run Command
複数の EC2 インスタンスにコマンドを一括実行する。
aws ssm send-command \
--targets Key=tag:Environment,Values=prod \
--document-name AWS-RunShellScript \
--parameters commands=["yum update -y"]
サーバーレスでの SSM
Lambda + DynamoDB のサーバーレス構成では、Session Manager や Run Command は不要。SSM Parameter Store を設定値の管理に使うのが主な用途。
SSM の理解を深めるには関連書籍が参考になる。