メニュー
AWS Systems Manager
ユーザーガイド

パラメータを階層に編成

数十または数百のパラメータをフラットリストで管理することは、時間がかかり、エラーの原因となります。また、タスクに合ったパラメータを特定することが難しくなります。これは、誤って間違ったパラメータを使用したり、同じ設定データを使用するパラメータを複数作成する可能性があることを意味します。

パラメータ階層を使用すると、パラメータの編成や管理がしやすくなります。階層は、スラッシュを使用して定義するパスを含むパラメータ名です。3 つの階層レベルを名前に使用して識別する例を以下に示します。

/Environment/Type of computer/Application/Data

/Dev/DBServer/MySQL/db-string13

最大で 15 のレベルを持つ階層を作成できます。次の例で示されているように、ユーザーの環境にすでに存在する階層構造を反映した階層を作成することをお勧めします。

  • 継続的統合および継続的配信環境 (CI/CD ワークフロー)

    /Dev/DBServer/MySQL/db-string
    /Staging/DBServer/MySQL/db-string
    /Prod/DBServer/MySQL/db-string
  • コンテナを使用するアプリケーション

    /MyApp/.NET/Libraries/git-password
  • ユーザーの企業

    /Finance/Accountants/UserList
    /Finance/Analysts/UserList
    /HR/Employees/EU/UserList

パラメータ階層は、パラメータを作成する方法を標準化し、時間とともにパラメータの管理が容易になります。階層パラメータはまた、設定タスクに合ったパラメータを特定するのに役立ちます。つまり、同じ設定データを持つパラメータを複数作成することを防ぎます。

開発およびステージング環境でパスワードを使用する次の例に示されているように、異なる環境間でパラメータを共有できる階層を作成することができます。

/DevTest/MyApp/database/db_password

続いて、次の例に示されているように、本番環境の一意のパスワードを作成できます。

/prod/MyApp/database/db_password

パラメータ階層を指定する必要はありません。レベル 1 でパラメータを作成できます。これらはルートパラメータと呼ばれます。下位互換性のため、階層をリリースする前に パラメータストア で作成されたすべてのパラメータは、ルートパラメータではありません。システムは、次のパラメータの両方をルートパラメータとして扱います。

/parameter-name

parameter-name

パラメータ階層の操作方法の例については、「チュートリアル: 階層を使用してパラメータを管理する (AWS CLI) 」を参照してください。

階層でパラメータへのクエリの実行

階層を使用するもう 1 つの利点は、GetParametersByPath API アクションを使用して、階層内ですべてのパラメータをクエリする機能です。たとえば、AWS CLI で次のコマンドを実行すると、システムは IIS レベルにあるすべてのパラメータを返します。

aws ssm get-parameters-by-path --path /Dev/Web/IIS

復号化された SecureString パラメータを階層で表示するには、次の例に示されているように、パスおよび --with-decryption パラメータを指定します。

aws ssm get-parameters-by-path --path /Prod/ERP/SAP --with-decryption

階層を使用した IAM アクセス権限の制限

パラメータストア API アクションに階層や AWS Identity and Access Management (IAM) ポリシーを使用して、階層の 1 つのレベルのすべてのパラメータへのアクセスを許可または制限することができます。次のポリシー例では、us-east-1 リージョン内の AWS アカウント 123456789012 のすべてのパラメータのすべての パラメータストア オペレーションを許可します。PutParameter アクションが明示的に拒否されているため、ユーザーはパラメータを作成することはできません。このポリシーでは、ユーザーが GetParametersByPath アクションを呼び出すことも禁止されています。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:*" ], "Resource": "arn:aws:ssm:us-east-1:123456789012:parameter/*" }, { "Effect": "Deny", "Action": [ "ssm:GetParametersByPath" ], "Condition": { "StringEquals": { "ssm:Recursive": [ "true" ] } }, "Resource": "arn:aws:ssm:us-east-1:123456789012:parameter/Dev/ERP/Oracle/*" }, { "Effect": "Deny", "Action": [ "ssm:PutParameter" ], "Condition": { "StringEquals": { "ssm:Overwrite": [ "false" ] } }, "Resource": "arn:aws:ssm:us-east-1:123456789012:parameter/*" } ] }

重要

ユーザーがパスへのアクセス権限を持つ場合、そのユーザーはそのパスのすべてのレベルにアクセスできます。たとえば、ユーザーがパス /a へのアクセス権限を保つ場合、そのユーザーは /a/b にもアクセスできます。ユーザーが IAM でパラメータ /a へのアクセスを明示的に拒否された場合でも、GetParametersByPath API アクションを再帰的に呼び出して、/a/b を表示できます。