---
title: "パラメータストアとは？AWS Parameter Storeの料金・使い方とSecrets Managerとの違い【2026年版】"
url: "https://www.issoh.co.jp/tech/details/3412/"
published: 2024-08-28
updated: 2026-09-28
categories: ["AWS"]
publisher: "株式会社一創"
---

# パラメータストアとは？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の使いどころ](/tech/details/3145/)の中の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とは？仕組み・料金とキーポリシー設計・採用判断を実装者目線で解説](/tech/details/15884/)で扱っています。

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の料金ページ](https://aws.amazon.com/jp/systems-manager/pricing/)で確認できます。

| 項目                     | 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とは？仕組み・ユーザー/ロール/ポリシーの違いと権限設計のベストプラクティスを実装者目線で解説](/tech/details/15427/)を参照してください。

```
{
  "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とは？仕組み・料金体系とコールドスタート対策・採用判断を実装者目線で解説](/tech/details/15407/)にまとめています。

### 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での受け渡し](/tech/details/17616/)で触れています。

### 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とは？テンプレートの書き方・スタック操作と更新で消える設定の防ぎ方](/tech/details/2927/)で解説しています。

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

上限は個々のパラメータ単位でなく、アカウント・リージョン単位で掛かります（出典：[Managing Parameter Store throughput](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-throughput.html)）。

| 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年版】](/tech/details/15888/)で詳しく扱っています。

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

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

- **リクエストごとに値を読む設計**：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はスタックの更新が反映の条件です。

## 関連記事

- [AWS Secrets Managerとは？料金・ローテーション設定と採用判断を実装者目線で解説【2026年版】](/tech/details/15888/)
- [AWS Systems Manager（SSM）とは？機能一覧・料金・Session Managerの使いどころ](/tech/details/3145/)
- [AWS KMSとは？仕組み・料金とキーポリシー設計・採用判断を実装者目線で解説](/tech/details/15884/)
- [AWS CloudFormationとは？テンプレートの書き方・スタック操作と更新で消える設定の防ぎ方](/tech/details/2927/)
- [AWS Lambdaとは？仕組み・料金体系とコールドスタート対策・採用判断を実装者目線で解説](/tech/details/15407/)

---

出典: [パラメータストアとは？AWS Parameter Storeの料金・使い方とSecrets Managerとの違い【2026年版】](<https://www.issoh.co.jp/tech/details/3412/>)（株式会社一創）
