15 人が閲覧(直近 30 日) AWS

パラメータストアとは?AWS Parameter Storeの料金・使い方とSecrets Managerとの違い【2026年版】

パラメータストアとは?AWS Parameter Storeの料金・使い方とSecrets Managerとの違い【2026年版】

パラメータストア(AWS Systems Manager Parameter Store)は、DBの接続先や機能フラグのような設定値を、/myapp/prod/db-host のような階層パスで保存しておき、アプリやCloudFormationから名前で取り出すためのAWSの保管庫です。Standardパラメータは1アカウント・1リージョンあたり10,000件まで追加料金なしで使え、パラメータストア自体の課金対象はAdvancedパラメータと高スループット設定の2つです。SecureStringを使う場合は、これとは別にKMSのキーやリクエストの料金がかかることがあります。

この記事では、東京リージョンの単価とAPI課金の数え方、CLIでの使い方、Lambda・ECS・CloudFormationで値が反映される時点、40TPSの上限、Secrets Managerとの使い分けを、AWS公式ドキュメントの値で整理します(2026年9月28日時点)。

まとめ:パラメータストアの料金・上限とSecrets Managerとの分岐点

  • 役割:AWS Systems Managerの一機能。String・StringList・KMSで暗号化するSecureStringの3型で、設定値と機密値を階層パスごとに保存します。
  • 料金:Standardは保存もAPIも追加料金なし。Advancedは1件あたり月0.05USDと、1万APIインタラクションあたり0.05USD。高スループットを有効にすると、Standardを含む全パラメータのAPIが1万インタラクションあたり0.05USDになります(東京リージョンも同額)。
  • 上限:値はStandard 4KB/Advanced 8KB。取得系APIは既定で3つ合わせて40TPS。バージョンは直近100件まで保持されます。
  • 戻せない操作:StandardからAdvancedへは変更できますが、逆は削除して作り直すしかありません。
  • Secrets Managerとの分岐:DB認証情報・APIキー・トークンや、自動ローテーションが要る値はSecrets Manager(東京で1件月0.40USD)。SecureStringは暗号化が要る設定値向けです。

パラメータストアの位置づけ|Systems Managerの一機能としての保管庫

パラメータストアは単独のサービスではなく、EC2の管理やSession Managerを束ねるAWS Systems Manager(SSM)とは?機能一覧・料金・Session Managerの使いどころの中の1ツールです。CLIのコマンドが aws ssm で始まり、検索で「SSMパラメータ」と呼ばれるのはこのためです。件数の上限や設定は、アカウントとリージョンの組ごとに管理されます。

String・StringList・SecureStringの3型

型 中身 向く値
String 平文1つ エンドポイントURL、ログレベル
StringList カンマ区切りの平文 許可するサブネットIDの一覧
SecureString KMSで暗号化した値 社内APIのエンドポイント、アカウントID

StringListの区切りはカンマ固定で、エスケープの手段がありません。値そのものにカンマを含むならStringを使います。SecureStringはキーを省くとAWS管理キーで暗号化されますが、APIリファレンスは「カスタムキーのほうが安全」とし、後述のクロスアカウント共有もカスタマー管理キーが前提です。キーの権限設計はAWS KMSとは?仕組み・料金とキーポリシー設計・採用判断を実装者目線で解説で扱っています。

String型にはデータ型 aws:ec2:image を指定でき、AMI IDの形式と存在が検証されます。ただしこの検証は非同期で、不正なAMI IDでも PutParameter は成功を返し、あとでパラメータが作られないまま終わります。AMI IDを自動更新するパイプラインでは、EventBridgeのParameter Storeイベントで作成結果を確認してください。

階層パス・バージョン・ラベルの仕組み

名前を / で区切ると階層になり、最大15階層まで作れます。GetParametersByPath でパス配下をまとめて取得でき、IAMポリシーもパス単位で絞れるため、/アプリ名/環境/項目 の順に切るのが定石です。値を上書きするたびにバージョン番号が1つ増え、直近100バージョンが残ります。100件に達すると最古の版が消されますが、その版にラベルが付いているとPutParameterはParameterMaxVersionLimitExceededで失敗するため、ラベルを新しい版へ移してから更新します。各バージョンには最大10個のラベルを付けられ、/myapp/prod/db-host:stable のように名前の後ろにラベルかバージョン番号を付けると、その版を指定して取り出せます。

パラメータストアの料金|Standard無料とAdvanced・高スループットの課金条件

課金軸は「どの階層(ティア)に置くか」と「どのスループット設定で呼ぶか」の2つです。AWS Price List APIの東京リージョン(ap-northeast-1)の単価も、米国リージョンと同じ0.05USDでした(2026年9月28日取得)。最新の単価はAWS Systems Managerの料金ページで確認できます。

項目 Standard Advanced
作成できる件数(アカウント・リージョンごと) 10,000 100,000
値の最大サイズ 4KB 8KB
パラメータポリシー 不可 可(1件に最大10)
他アカウントとの共有 不可 可
保存料金 なし 月0.05USD/件
API料金(標準スループット) なし 0.05USD/1万インタラクション
API料金(高スループット) 0.05USD/1万インタラクション 0.05USD/1万インタラクション
反対側への変更 Advancedへ変更可 Standardへ戻せない

API課金の単位|リクエスト数でなくパラメータ単位のインタラクション

公式ドキュメントはAPIインタラクションを「APIリクエストと個々のパラメータとのやり取り」と定義しており、10件を返すGetParameter系のリクエスト1回は10インタラクションとして数えます。GetParametersで10件をまとめて取ってもTPSの消費は1回分ですが、課金は10件分です。たとえば高スループットを有効にしたまま、200タスクが起動時に10件ずつ読み、1日に20回入れ替わる構成なら、200×10×20×30日=120万インタラクションで月6USDになります。まとめ取得はスロットリング対策には効いても料金は下げない、と区別しておくと見積もりを誤りません。

Advancedは戻せない|Intelligent-Tieringの挙動

APIリファレンスによると、AdvancedからStandardへ戻すと値が8KBから4KBに切り詰められ、ポリシーも失われ、暗号化の方式も異なるため、変更は受け付けられません。課金を止めたいときは削除してStandardで作り直すしかなく、バージョン履歴もそこで途切れます。

既定のティアを Intelligent-Tiering にすると、値が4KBを超える、ポリシーを付ける、Standardが既に10,000件ある、のいずれかに当てはまる作成・更新だけが自動でAdvancedになります。既存のStandardも更新で条件に当たれば昇格し、元には戻せません。定期的に差し替える証明書が4KBを超えた時点で課金対象が増えるので、Cost Explorerで PS-Advanced-Param の使用量を月1回見ておくと気づけます。

パラメータストアの使い方|CLIでの作成・取得とIAM権限

以下はAWS CLI v2での最小手順です。認証情報とリージョンを設定済みで、エイリアス alias/myapp-prod のカスタマー管理キーを作成してある前提です。以降のアカウントID・キーIDは自分の環境の値に置き換えてください。--overwriteを付けないput-parameterは既存の名前に対して失敗するので、更新時は必ず付けます。

# 平文の設定値を作成
aws ssm put-parameter --name "/myapp/prod/db-host" --value "db.internal.example" --type String

# 機密値をカスタマー管理キーで暗号化して作成
aws ssm put-parameter --name "/myapp/prod/partner-api-endpoint" --value "https://partner.internal.example/v2" \
  --type SecureString --key-id "alias/myapp-prod"

# 値だけを取り出す(SecureStringは --with-decryption が必要)
aws ssm get-parameter --name "/myapp/prod/partner-api-endpoint" --with-decryption \
  --query "Parameter.Value" --output text

# パス配下をまとめて取得(1ページ最大10件、CLIは自動でページングする)
aws ssm get-parameters-by-path --path "/myapp/prod" --recursive --with-decryption

# 値を更新し、新しいバージョンにラベルを付ける
aws ssm put-parameter --name "/myapp/prod/db-host" --value "db2.internal.example" --overwrite
aws ssm label-parameter-version --name "/myapp/prod/db-host" --parameter-version 2 --labels stable

アプリ側のIAMロールには、読み取りに必要な操作だけを該当パスに限定して付けます。次の例ではパスそのものと配下の両方をResourceに含めています。SecureStringをカスタマー管理キーで暗号化した場合は、そのキーへのkms:Decryptも要ります。ロールとポリシーの分け方はAWS IAMとは?仕組み・ユーザー/ロール/ポリシーの違いと権限設計のベストプラクティスを実装者目線で解説を参照してください。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["ssm:GetParameter", "ssm:GetParameters", "ssm:GetParametersByPath"],
      "Resource": [
        "arn:aws:ssm:ap-northeast-1:123456789012:parameter/myapp/prod",
        "arn:aws:ssm:ap-northeast-1:123456789012:parameter/myapp/prod/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": "kms:Decrypt",
      "Resource": "arn:aws:kms:ap-northeast-1:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
    }
  ]
}

逆に、特定の機密値だけをDenyで守りたいときは注意が要ります。AWSのドキュメントは、パラメータ自身のARNへのDenyでは上位パスに対するGetParametersByPathの結果から外れないとしており、/myapp/restricted/db-passwordを守るには /myapp/restricted・/myapp・/ の各パスにもGetParametersByPathのDenyが必要です。値を返す操作はGetParameterHistoryを含めて4つあるので、Denyは ssm:GetParameter* でまとめて書きます。最も確実なのは、機密値を一般設定とは別のパスに分けたうえで、復号に使うKMSキーのkms:Decryptを絞ることです。

名前には英数字と _.- と区切りの / だけが使え、大文字小文字は区別されます。aws や ssm で始まる名前は予約済みで作れません。値の中に {{ssm:別の名前}} のような参照を書いて入れ子にすることもできないため、組み立てが必要な値はアプリ側で連結します。

アプリからの読み込み|Lambda拡張・ECS・CloudFormationで値が反映される時点

パラメータを更新しても稼働中の処理にはすぐ届きません。反映の条件はLambda拡張ではキャッシュのTTL、ECSではタスクの起動し直し、CloudFormationではスタックの更新と経路ごとに異なります。

Lambda:Parameters and Secrets拡張のキャッシュTTL

Lambdaでは、AWSが配布するレイヤー「AWS-Parameters-and-Secrets-Lambda-Extension」を追加すると、関数内から localhost:2773 へHTTPで問い合わせるだけで値を取得でき、結果は実行環境内にキャッシュされます。キャッシュの寿命は環境変数 SSM_PARAMETER_STORE_TTL で0〜300秒(既定300秒)に設定し、拡張はTTLが切れるまで値の変更を検知しません。接続先を切り替えた直後の最大5分間は旧い値が返りうるので、即時反映が要る値はTTLを短くするか0(キャッシュなし)にします。

import json
import os
import urllib.parse
import urllib.request

def handler(event, context):
    name = urllib.parse.quote("/myapp/prod/partner-api-endpoint", safe="")
    url = f"http://localhost:2773/systemsmanager/parameters/get?name={name}&withDecryption=true"
    req = urllib.request.Request(url)
    req.add_header("X-Aws-Parameters-Secrets-Token", os.environ["AWS_SESSION_TOKEN"])
    with urllib.request.urlopen(req) as res:
        value = json.load(res)["Parameter"]["Value"]
    return {"length": len(value)}

ヘッダー X-Aws-Parameters-Secrets-Token に関数のセッショントークンを入れないと拡張は応答しません。Lambda全体の料金やコールドスタートとの関係はAWS Lambdaとは?仕組み・料金体系とコールドスタート対策・採用判断を実装者目線で解説にまとめています。

ECS:タスク定義のsecretsによる起動時の値の注入

ECSではタスク定義の secrets にパラメータのARN(同じリージョンなら名前でも可)を書くと、コンテナ起動時に環境変数として渡されます。ECSのドキュメントは、値を後から更新しても稼働中のコンテナには反映されず、新しいタスクを起動するか、サービスで「新しいデプロイの強制」を実行する必要があると明記しています。取得権限はタスクロールでなくタスク実行ロールに付けます。

"secrets": [
  {
    "name": "PARTNER_API_ENDPOINT",
    "valueFrom": "arn:aws:ssm:ap-northeast-1:123456789012:parameter/myapp/prod/partner-api-endpoint"
  }
]

環境変数としてアプリへ渡す方式そのものの注意点は環境変数とは?Linux・Windowsの設定方法とDocker・CIでの受け渡しで触れています。

CloudFormation:動的参照ssmとssm-secureの制約

テンプレートでは {{resolve:ssm:名前:バージョン}} でString・StringListを参照できます。バージョンを省くとスタックの作成・更新のたびに最新版が使われますが、CloudFormationは動的参照のドリフトを検出しないので、パラメータだけ更新してもスタックを更新するまで反映されません。公開パラメータ al2023-ami-kernel-default-x86_64 を使えば、既定カーネルの最新Amazon Linux 2023(x86_64)のAMI IDをテンプレートに直書きせずに済みます。

Resources:
  AppServer:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64}}"
      InstanceType: t3.micro

SecureStringを参照する {{resolve:ssm-secure:...}} は、RDSのMasterUserPasswordやElastiCacheのAuthTokenなど対応表に載ったプロパティでしか使えず、カスタムリソースでは使えません。また AWS::SSM::Parameter リソースではSecureStringを作成できないため、SecureStringの登録はCLI・コンソール・SDKからPutParameterを呼ぶ別の処理で行います。他アカウントのパラメータも参照できません。テンプレート全体の書き方はAWS CloudFormationとは?テンプレートの書き方・スタック操作と更新で消える設定の防ぎ方で解説しています。

スループット上限とスロットリング|既定40TPSを超える場面と対策

上限は個々のパラメータ単位でなく、アカウント・リージョン単位で掛かります(出典:Managing Parameter Store throughput)。

API 既定 高スループット
GetParameter 3つ合計で40TPS 10,000TPS
GetParameters (同上の40TPSに含む) 1,000TPS
GetParametersByPath (同上の40TPSに含む) 100TPS
PutParameter・DescribeParameters等 3TPS 10TPS
DeleteParameter(s) 3TPS 5TPS

40TPSは平常時には十分でも、起動時に一斉に読む構成で超えます。公式ドキュメントは、Auto Scalingで5台に50台が追加されたとき、ECSの置き換えタスクが同時に起動したとき、Lambdaの実行環境が急増したときを典型に挙げており、SDKのログに ThrottlingException や RateExceeded が出ます。SecureStringの場合はKMS側のリクエスト上限にも掛かります。

対策は費用のかからない順に、(1)起動時に必要なキーだけを読みパス全体の再帰取得を繰り返さない、(2)Lambda拡張やアプリ内キャッシュで呼び出し自体を減らす、(3)SDKの指数バックオフ付きリトライを有効にする、(4)それでも足りなければ高スループットを有効にする、です。高スループットは繁忙期だけ有効にして戻すこともできますが、有効な間はStandardのAPIも課金対象です。

パラメータポリシーとクロスアカウント共有|Advancedでしか使えない2機能

有効期限と未更新を通知するパラメータポリシー

Advancedパラメータには次の3種類のポリシーを付けられ、通知はEventBridgeのイベントとして届きます。

  • Expiration:指定日時を期限としてパラメータを削除する。一時的な値の消し忘れ防止に使う。
  • ExpirationNotification:削除の何日前・何時間前かを指定して事前通知する。
  • NoChangeNotification:指定期間更新されていないと通知する。承認済みAMI IDの見直し漏れ検知などに使う。

ポリシーは非同期の定期スキャンで実行されるため、指定時刻ちょうどの削除は保証されません。削除されるのはパラメータストアに保存した値であり、その値が指す認証情報そのものが失効するわけでもありません。ポリシーを外すときは空のポリシー [{}] で上書きします。

AWS RAMによる他アカウントへの共有

マルチアカウント構成で共通の設定を配るには、AWS Resource Access Manager(RAM)でAdvancedパラメータを共有します。条件は、自分が所有するAdvancedパラメータであること、SecureStringならカスタマー管理キーで暗号化しキーもKMS側で別途共有すること(AWS管理キーは共有不可)の2つです。保存料金は所有側に、共有先がAPIを呼んだ分のAPI料金は呼んだ側に課金されます。共有先から取得するときは名前でなく完全なARNを指定します。

Secrets Managerとの違い|シークレットの種類・ローテーション・費用による選定

観点 パラメータストア Secrets Manager
保存料金(東京) Standardは無料/Advanced月0.05USD 1シークレット月0.40USD
API料金(東京) Standardは標準スループットで無料 1万リクエスト0.05USD
自動ローテーション なし あり
暗号化しない値 保存できる(String) 保存できない(常に暗号化)
他アカウント共有 Advancedのみ(RAM) リソースポリシー

AWSの公式ガイドの線引きは、DB認証情報・APIキー・トークンのようなシークレットはSecrets Manager、暗号化が要る設定値はSecureStringです。自動ローテーションやリージョン間レプリケーションが要件にあれば、迷わずSecrets Managerを選びます。

費用差は件数に比例します。シークレットを100件置けば東京リージョンで月40USDかかるのに対し、SecureStringはStandard・標準スループットならパラメータストア自体の料金は0USDです(KMSの料金は別途)。ただし費用だけでDB認証情報をSecureStringへ寄せると、ローテーションを自前で組むことになります。件数の多い設定値をパラメータストアに、シークレットをSecrets Managerに、と種類で分けるのが費用と公式推奨を両立させる分け方です。

両者は併用もできます。パラメータ名を /aws/reference/secretsmanager/ で始めてGetParameterかGetParametersで呼ぶと、Secrets Managerのシークレットをパラメータストア経由で読めるため、アプリの取得口を1つに揃えられます。Secrets Manager側のローテーション設定と料金の積み上がり方はAWS Secrets Managerとは?料金・ローテーション設定と採用判断を実装者目線で解説【2026年版】で詳しく扱っています。

パラメータストアを選ばないほうがよい場面|失敗パターンと代替

パラメータストアは安くて手軽な分、次の条件では向きません。

  • リクエストごとに値を読む設計:Webアプリが毎リクエストでGetParameterを呼ぶと、秒間40リクエストを超えた時点で上限に届きます。起動時に1回読んでメモリに持つか、TTL付きキャッシュを挟む前提で使います。
  • 8KBを超える設定ファイル:Advancedでも上限は8KBです。JSONの大きな設定や証明書チェーンはS3に置き、パラメータストアにはそのS3キーだけを持たせます。
  • 値を更新したら即座に全サーバーへ反映したい:前述のとおりECSは再デプロイまで、Lambda拡張はTTL切れまで旧い値を使います。AWSのガイドは、タスクを入れ替えずに最新値を配りたい設定にはAWS AppConfig Agentをサイドカーとして動かす方法を案内しています。
  • 自動ローテーションが監査要件:パラメータポリシーには期限による削除と、期限・未更新の通知がありますが、値を自動で入れ替える機能はありません。Secrets Managerを使います。

よくある質問

AWSのパラメータストアとは何ですか?

AWS Systems Managerに含まれる設定値の保管機能です。階層パスで保存し、CLI・SDK・Lambda・ECS・CloudFormationから名前で取り出せます。SecureString型はKMSで暗号化されます。

パラメータストアの料金はかかりますか?

Standardパラメータ(10,000件・4KBまで)を標準スループットで使う限り追加料金はかかりません。Advancedパラメータは1件月0.05USDとAPI 1万インタラクションあたり0.05USD、高スループットを有効にすると全パラメータのAPIが1万インタラクションあたり0.05USDです。SecureStringの復号ではKMS側の料金体系も関係します。

パラメータストアとSecrets Managerはどちらを使うべきですか?

DB認証情報・APIキー・トークンのようなシークレットや、自動ローテーション・リージョン間レプリケーションが必要な値はSecrets Managerを選びます。一般の設定値や、暗号化は要るが入れ替えない設定値はパラメータストアです。Secrets Managerは東京リージョンで1シークレット月0.40USDかかるため、設定値まで移すと件数に比例して費用が増えます。

GetParametersByPathで一度に何件取得できますか?

1回の呼び出しで返るのは最大10件で、残りは NextToken で続きを取得します。AWS CLIとSDKのページネーターは自動で続きを取るため、件数が多くても1コマンドで全件を得られますが、内部ではページ数分のリクエストが発生し、TPSもその分消費します。

パラメータを更新したらECSやLambdaにすぐ反映されますか?

すぐには反映されません。ECSは新しいデプロイの強制、Lambda拡張は SSM_PARAMETER_STORE_TTL(既定300秒)の経過、CloudFormationはスタックの更新が反映の条件です。

関連記事

お気に入りに入れた記事の一覧

この記事は以下の記事からリンクされています

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.07.09 テックブログ Muse Imageとは?Metaの画像生成AIの使い方・API料金(1枚0.01ドル)と日本での提供状況【2026年10月】
  2. 2026.10.21 テックブログ ユミルリンク不正アクセス第二報で延べ5,162万件:Cuenote FC利用企業と受信者の確認点
  3. 2026.10.23 テックブログ Renta!はいつ再開?不正アクセスでメールアドレス等が流出したおそれ・再開時のパスワード再設定と運営側の対応
  4. 2026.10.23 テックブログ Splunk 脆弱性CVE-2026-76299:影響版の確認と10.2.8などへの更新手順
  5. 2026.10.22 テックブログ Tomcatのバージョン一覧とサポート期限【2026年10月】最新版11.0.27、9.0系は2027年3月末終了・9.1系は2030年末まで

RELATED POSTS 関連記事

目次