SJ blog
security
A

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

SSM Parameter Store Standard vs Advanced — 設定値管理の詳細比較

AWS Systems Manager Parameter StoreのスタンダードとAdvancedティアの違い、パラメータポリシー、パラメータバージョン管理、KMS暗号化、シークレットマネージャーとの比較、ラベル付けを解説。

一言結論

Parameter StoreのStandardティアは無料で最大10,000件を管理でき階層型パス取得も使えるため設定値管理のデフォルト選択であり、有効期限ポリシーや8KBを超えるサイズが必要なときだけAdvancedへ昇格させる段階的な活用が最もコスト効率の高いアプローチだ。

Parameter Store の基本

Parameter Storeはアプリケーションの設定値や機密情報を安全に管理するサービスだ。平文パラメータ(String)、リスト(StringList)、暗号化パラメータ(SecureString)の3種類がある。

パラメータタイプ:
  String: プレーンテキスト(DB接続URL等)
  StringList: カンマ区切りのリスト(ホスト名リスト等)
  SecureString: KMSで暗号化(パスワード、APIキー等)

命名規則(推奨):
  /[環境]/[アプリ名]/[パラメータ名]
  例: /prod/myapp/db-password
      /staging/myapp/api-key
      /common/smtp-host

Standard vs Advanced ティア

特徴StandardAdvanced
最大パラメータ数10,000100,000
パラメータサイズ最大4KB最大8KB
パラメータポリシー✅(有効期限等)
料金無料$0.05/パラメータ/月
# Advancedティアのパラメータ作成
aws ssm put-parameter \
  --name "/prod/myapp/db-password" \
  --value "super-secret-password" \
  --type SecureString \
  --key-id arn:aws:kms:ap-northeast-1:123456789012:key/xxx \
  --tier Advanced \
  --overwrite

パラメータポリシー(Advancedのみ)

Advancedティアではパラメータに有効期限やアラームを設定できる。

# 有効期限付きパラメータ(30日後に期限切れ通知)
aws ssm put-parameter \
  --name "/prod/myapp/temp-key" \
  --value "temp-value" \
  --type SecureString \
  --tier Advanced \
  --policies '[
    {
      "Type": "Expiration",
      "Version": "1.0",
      "Attributes": {
        "Timestamp": "2026-05-08T00:00:00.000Z"
      }
    },
    {
      "Type": "ExpirationNotification",
      "Version": "1.0",
      "Attributes": {
        "Before": "7",
        "Unit": "Days"
      }
    }
  ]'
パラメータポリシーの種類:
  Expiration: 指定日時に期限切れ(削除はされないが期限切れ状態になる)
  ExpirationNotification: 期限切れN日前にEventBridge/SNSに通知
  NoChangeNotification: 最後の更新からN日経過したら通知

パラメータのバージョン管理

# パラメータの更新(バージョンが自動的に増加)
aws ssm put-parameter \
  --name "/prod/myapp/db-password" \
  --value "new-password-v2" \
  --type SecureString \
  --overwrite

# バージョン履歴の確認
aws ssm get-parameter-history \
  --name "/prod/myapp/db-password"

# 特定バージョンを取得
aws ssm get-parameter \
  --name "/prod/myapp/db-password:3"  # バージョン3

# ラベルを付けてバージョンを管理
aws ssm label-parameter-version \
  --name "/prod/myapp/db-password" \
  --parameter-version 3 \
  --labels production stable

# ラベルで取得
aws ssm get-parameter \
  --name "/prod/myapp/db-password:production"

パスベースのパラメータ取得

# 特定パス配下の全パラメータを取得(設定の一括取得)
aws ssm get-parameters-by-path \
  --path "/prod/myapp/" \
  --recursive \
  --with-decryption

# アプリ起動時に設定を一括取得する例(Python)
import boto3
import os

def load_parameters(path: str) -> dict:
    """SSM Parameter StoreからPATH配下の設定を一括取得"""
    ssm = boto3.client('ssm')
    parameters = {}
    
    paginator = ssm.get_paginator('get_parameters_by_path')
    for page in paginator.paginate(
        Path=path,
        Recursive=True,
        WithDecryption=True
    ):
        for param in page['Parameters']:
            # パス部分を除いたキー名で保存
            key = param['Name'].replace(path, '').lstrip('/')
            parameters[key] = param['Value']
    
    return parameters

# 使用例
config = load_parameters('/prod/myapp/')
db_password = config['db-password']
api_key = config['api-key']

ECS/Lambda でのパラメータ使用

// ECS タスク定義でSecretとして参照
{
  "containerDefinitions": [{
    "name": "app",
    "secrets": [
      {
        "name": "DB_PASSWORD",
        "valueFrom": "arn:aws:ssm:ap-northeast-1:123456789012:parameter/prod/myapp/db-password"
      }
    ],
    "environment": [
      {
        "name": "APP_ENV",
        "value": "production"
      }
    ]
  }]
}

Parameter Store vs Secrets Manager

Parameter Store が向いているケース:
  ✅ 設定値の一元管理(平文の設定も含む)
  ✅ コスト重視(Standardティアは無料)
  ✅ 階層的なパラメータ管理
  ✅ 大量の設定値(最大10,000件)

Secrets Manager が向いているケース:
  ✅ 自動ローテーション(RDS, Redshift等)
  ✅ クロスアカウントのシークレット共有
  ✅ アプリケーションシークレットの集中管理
  ✅ 90日ローテーションの強制等

試験頻出ポイント

シナリオ回答
パラメータに有効期限を設定Advancedティア + パラメータポリシー
パスワードをKMS暗号化で保存SecureString タイプ
特定パス配下の設定を一括取得get-parameters-by-path
無料でパラメータを管理Standardティア(最大10,000件)
自動ローテーションが必要Secrets Manager(Parameter Storeは手動)

まとめ

Parameter StoreのStandardティアは無料で最大10,000件の設定値を管理でき、コスト効率が高い。Advancedティアを使うとパラメータポリシーで有効期限管理が可能になる。自動ローテーションが必要な場合はSecrets Managerを選択する。