View a markdown version of this page

パラメータストアリファレンス - AWS Systems Manager

パラメータストアリファレンス

パラメータとは、例えばテキストのブロック、名前のリスト、AMI ID、マーチャント ID、その他の設定値など、Parameter Store に保存されるデータのことです。スクリプト、コマンド、SSM ドキュメントで、このデータを一元的に参照できます。

パラメータを参照するときは、以下の規則を使用してパラメータ名を指定します。

{{ssm:parameter-name}}

注記

パラメータは、他のパラメータの値で参照またはネストすることはできません。パラメータ値に {{}} または {{ssm:parameter-name}} を含めることはできません。

Parameter Store では、StringStringListSecureString という 3 タイプのパラメータがサポートされています。

1 つの例外を除いて、パラメータを作成または更新するときは、パラメータ値をプレーンテキストとして入力します。入力したテキストは Parameter Store によって検証されません。ただし、String パラメータの場合、データ型を aws:ec2:image として指定できます。Parameter Store によって、入力した値が Amazon EC2 AMI の適切な形式 (ami-12345abcdeEXAMPLE など) であることが検証されます。

パラメータタイプ: 文字列

デフォルトでは、String パラメータの値はユーザーが入力したテキストのブロックで構成されます。例えば、次のようになります。

  • abc123

  • Example Corp

  • <img src="images/bannerImage1.png"/>

パラメータタイプ: StringList

StringList パラメータの値には、以下の例に示すように、値のカンマ区切りリストを含めます。

Monday,Wednesday,Friday

CSV,TSV,CLF,ELF,JSON

パラメータタイプ: SecureString

サービスエンドポイントやアカウント識別子など、暗号化が必要な設定値には SecureString を使用します。データベース認証情報、API キー、トークンなどのシークレットの場合は、AWS Secrets Manager をお勧めします。これは、自動ローテーションやクロスリージョンレプリケーションなどの専用のセキュリティコントロールを提供します。

パラメータの値のみが暗号化されます。パラメータ名、説明、その他のメタデータは暗号化されません。

Parameter Store は、AWS KMS キーを使用して SecureString パラメータ値の暗号化と復号を行います。Parameter Store のデフォルトの AWS マネージドキー、またはカスタマーマネージドキーを使用することができます。特定のパラメータを復号できるプリンシパルを制限する必要がある場合は、カスタマーマネージドキーを使用します。詳細については、「AWS KMS キーを使用したパラメータの暗号化と復号」を参照してください。

重要

次の重要な情報に注意してください。

  • 自動ローテーション、クロスアカウントアクセス、または詳細な監査ログ記録を必要とする認証情報を管理する場合は、AWS Secrets Manager を使用することをお勧めします。Secrets Manager は、データベース認証情報、API キー、サポートされているサードパーティ製ソフトウェア提供シークレットなどのシークレットを管理するために構築されています。詳細については、AWS Secrets Manager ユーザーガイド の「What is AWS Secrets Manager? ( とは?)」 を参照してください。

  • String または StringList パラメータに機密データを保存しないでください。機密データを暗号化したままにする場合は、SecureString パラメータタイプのみを使用します。

  • SecureString パラメータののみが暗号化されます。パラメータ名、説明などのプロパティは暗号化されません。

SecureString パラメータは他の AWS のサービス とともに使用できます。次の Lambda 関数は、/myapp/dev/vendor/merchant-id パラメータから暗号化されたマーチャント ID を取得します。この関数は、関数ログに書き込んだり、レスポンスで返したりせずに値を使用します。

import json import boto3 ssm = boto3.client("ssm", region_name="us-east-1") def lambda_handler(event, context): response = ssm.get_parameter( Name="/myapp/dev/vendor/merchant-id", WithDecryption=True ) merchant_id = response["Parameter"]["Value"] # Use merchant_id when communicating with the vendor system. # Don't write the value to logs or include it in the response. return { "statusCode": 200, "body": json.dumps("Vendor configuration retrieved.") }
AWS KMS の暗号化と料金

SecureString パラメータを作成する際、Systems Manager により AWS KMS を使用してパラメータ値が暗号化されます。

重要

Parameter Store では、対称暗号化 KMS キーのみをサポートしています。非対称暗号化 KMS キーを使用してパラメータを暗号化することはできません。KMS キーが対称か非対称かを判断する方法については、「AWS Key Management Service デベロッパーガイド」の「対称キーと非対称 KMS キーの識別」を参照してください。

Parameter Store では、SecureString パラメータの作成は無料ですが、AWS KMS の使用は有料です。詳細については、「AWS Key Management Service 料金表」を参照してください。

AWS マネージドキー およびカスタマーマネージドキーの詳細については、「AWS Key Management Service デベロッパーガイド」の「AWS Key Management Service の概念」を参照してください。Parameter Store による AWS KMS の使用方法の詳細については、「AWS Systems Manager Parameter Store による AWS KMS の使用方法」を参照してください。

注記

Parameter Store のデフォルトの AWS マネージドキー を表示するには、次のコマンドを実行します。

aws kms describe-key \ --region us-east-1 \ --key-id alias/aws/ssm

パラメータ名の制約

このトピックの情報を使用して、パラメータの作成時にパラメータ名に有効な値を指定します。

この情報は AWS Systems Manager API リファレンス のトピック PutParameter の詳細を補完し、AllowedPatternDescriptionKeyIdOverwriteTypeValue の値についての詳細も提供します。

パラメータ名の要件と制約には次のようなものがあります。

  • 大文字と小文字の区別: パラメータ名では大文字と小文字が区別されます。

  • スペース: パラメータ名に空白を含めることはできません。

  • 有効な文字: パラメータ名には、記号と文字として a-zA-Z0-9_.- のみを使用できます。

    さらに、スラッシュ文字 (/) は、パラメータ名の階層を表すために使用されます。例: /Dev/Production/East/Project-ABC/MyParameter

  • 有効な AMI 形式: aws:ec2:image パラメータのデータ型として String を選択した場合、入力する ID は AMI ID 形式 ami-12345abcdeEXAMPLE に対して検証される必要があります。

  • 完全修飾: 階層内でパラメータを作成または参照する場合は、スラッシュ文字 (/) を先頭に含めます。階層の一部であるパラメータを参照する場合は、先頭のスラッシュ (/) を含む階層パス全体を指定します。

    • 完全修飾パラメータ名:MyParameter1/MyParameter2/Dev/Production/East/Project-ABC/MyParameter

    • 完全に修飾されていないパラメータ名: MyParameter3/L1

  • 長さ: 指定するパラメータ名の最大文字数は 1,011 文字です。この 1,011 文字数には、指定した名前の前にある ARN 内の文字 (arn:aws:ssm:us-east-2:111122223333:parameter/ の 45 文字など) が含まれます。

  • プレフィックス: パラメータ名には、プレフィックスとして「aws」または「ssm」 (大文字と小文字は区別しない) を付けることはできません。たとえば、以下のパラメータ名を作成しようとすると、例外によりエラーになります。

    • awsTestParameter

    • SSM-testparameter

    • /aws/testparam1

    注記

    SSM ドキュメント、コマンド、またはスクリプトでパラメータを指定する場合、構文の一部として ssm を含めます。例: {{ssm:parameter-name}} および {{ ssm:parameter-name }} (例: {{ssm:MyParameter}}、および {{ ssm:MyParameter }}.)

  • 一意性: パラメータ名は AWS リージョン 内で一意であることが必要です。例えば、以下が同じリージョン内にある場合、Systems Manager では個別のパラメータとして扱われます。

    • /Test/TestParam1

    • /TestParam1

    次の例も、一意です。

    • /Test/TestParam1/Logpath1

    • /Test/TestParam1

    ただし、次の例は同じリージョン内にある場合、一意ではありません。

    • /TestParam1

    • TestParam1

  • 階層の深さ: パラメータ階層を指定する場合、階層は最大 15 レベルの深さを持つことができます。階層のあらゆるレベルでパラメータを定義できます。次の例はいずれも、構造的に有効です。

    • /Level-1/L2/L3/L4/L5/L6/L7/L8/L9/L10/L11/L12/L13/L14/parameter-name

    • parameter-name

    次のパラメータの作成を試みると、HierarchyLevelLimitExceededException 例外で失敗します。

    • /Level-1/L2/L3/L4/L5/L6/L7/L8/L9/L10/L11/L12/L13/L14/L15/L16/parameter-name

重要

ユーザーがパスへのアクセス許可を持つ場合、そのユーザーはそのパスのすべてのレベルにアクセスできます。たとえば、ユーザーがパス /a へのアクセス許可を持っている場合、ユーザーは /a/b にアクセスすることもできます。ユーザーが AWS Identity and Access Management (IAM) でパラメータ /a/b で明示的にアクセスを拒否された場合でも、/a に対して GetParametersByPath API オペレーションを再帰的に呼び出して /a/b を表示できます。