Parameter Store でのパラメータ階層の使用 - AWS Systems Manager

Parameter Store でのパラメータ階層の使用

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

パラメータ階層を使用すると、パラメータの編成や管理がしやすくなります。階層は、スラッシュを使用して定義するパスを含むパラメータ名です。

例を介してパラメータ階層を理解する

以下の例では、名前に 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/my-password
  • ユーザーの企業

    /Finance/Accountants/UserList

    /Finance/Analysts/UserList

    /HR/Employees/EU/UserList

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

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

/DevTest/MyApp/database/my-password

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

/prod/MyApp/database/my-password

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

/parameter-name

parameter-name

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

階層を使用するもう 1 つの利点は、GetParametersByPath API オペレーションを使用して、階層内ですべてのパラメータをクエリする機能です。たとえば、AWS Command Line Interface (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

AWS CLI を使用して階層でパラメータを管理する

この手順では、AWS CLI を使用してパラメータおよびパラメータ階層を使用する方法について説明します。

階層を使用してパラメータを管理するには
  1. まだ AWS Command Line Interface (AWS CLI) をインストールして設定していない場合は、インストールして設定します。

    詳細については、「AWS CLI の最新バージョンをインストールまたは更新します。」を参照してください。

  2. 以下のコマンドを実行して、allowedPattern パラメータおよび String パラメータタイプを使用するパラメータを作成します。この例の許容されているパターンは、パラメータの値が 1~4 桁である必要があることを意味します。

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/MaxConnections" \ --value 100 --allowed-pattern "\d{1,4}" \ --type String
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/MaxConnections" ^ --value 100 --allowed-pattern "\d{1,4}" ^ --type String

    コマンドはパラメータのバージョン番号を返します。

  3. 次のコマンドを実行して、先ほど新しい値で作成したパラメータの上書きを試みます

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/MaxConnections" \ --value 10,000 \ --type String \ --overwrite
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/MaxConnections" ^ --value 10,000 ^ --type String ^ --overwrite

    システムは、新しい値が前のステップで指定した許容されるパターンの要件を満たしていないため、次のエラーを返します。

    An error occurred (ParameterPatternMismatchException) when calling the PutParameter operation: Parameter value, cannot be validated against allowedPattern: \d{1,4}
  4. 次のコマンドを実行して、AWS マネージドキー を使用する SecureString パラメータを作成します。この例の許容されているパターンは、ユーザーが任意の文字を指定でき、値が 8~20 文字である必要があることを意味します。

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/my-password" \ --value "p#sW*rd33" \ --allowed-pattern ".{8,20}" \ --type SecureString
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/my-password" ^ --value "p#sW*rd33" ^ --allowed-pattern ".{8,20}" ^ --type SecureString
  5. 次のコマンドを実行し、前のステップの階層構造を使用するパラメータをさらに作成します。

    Linux & macOS
    aws ssm put-parameter \ --name "/MyService/Test/DBname" \ --value "SQLDevDb" \ --type String
    aws ssm put-parameter \ --name "/MyService/Test/user" \ --value "SA" \ --type String
    aws ssm put-parameter \ --name "/MyService/Test/userType" \ --value "SQLuser" \ --type String
    Windows
    aws ssm put-parameter ^ --name "/MyService/Test/DBname" ^ --value "SQLDevDb" ^ --type String
    aws ssm put-parameter ^ --name "/MyService/Test/user" ^ --value "SA" ^ --type String
    aws ssm put-parameter ^ --name "/MyService/Test/userType" ^ --value "SQLuser" ^ --type String
  6. 次のコマンドを実行して、2 つのパラメータの値を取得します。

    Linux & macOS
    aws ssm get-parameters \ --names "/MyService/Test/user" "/MyService/Test/userType"
    Windows
    aws ssm get-parameters ^ --names "/MyService/Test/user" "/MyService/Test/userType"
  7. 次のコマンドを実行して、単一レベル内のすべてのパラメータをクエリします。

    Linux & macOS
    aws ssm get-parameters-by-path \ --path "/MyService/Test"
    Windows
    aws ssm get-parameters-by-path ^ --path "/MyService/Test"
  8. 次のコマンドを実行して、2 つのパラメータを削除します。

    Linux & macOS
    aws ssm delete-parameters \ --names "/IADRegion/Dev/user" "/IADRegion/Dev/userType"
    Windows
    aws ssm delete-parameters ^ --names "/IADRegion/Dev/user" "/IADRegion/Dev/userType"