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 ティア
| 特徴 | Standard | Advanced |
|---|---|---|
| 最大パラメータ数 | 10,000 | 100,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を選択する。