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 の理解を深めるには関連書籍が参考になる。

関連用語