AWS Systems Manager Parameter Store
Parameter Store を使用すると、単純な設定データを大規模に安全に保存、整理、取得できます。環境間の設定管理を簡素化するように設計されているため、チームは値をハードコーディングしたり、断片化されたストレージソリューションに依存したりすることなく、アプリケーションが重要なデータにアクセスする方法を標準化できます。
Parameter Store は、シンプルなストレージに加えて、バージョニング、 AWS Identity and Access Management (IAM) によるアクセスコントロール、Amazon EC2、Lambda、CloudFormation などの他の AWS サービスとのシームレスな統合を提供します。これにより、コードの変更や再デプロイを必要とせずに動的な設定更新が可能になり、運用の俊敏性が向上し、リスクが軽減されます。階層命名、パラメータポリシー、変更追跡などの機能により、Parameter Store はチームが一貫性を維持し、ガバナンスを適用し、より安全で保守可能なシステムを構築するのに役立ちます。
Parameter Store は、String、StringList、および SecureString パラメータタイプをサポートします。String および StringList パラメータ値はプレーンテキストとして保存されます。SecureString パラメータは、 AWS Key Management Service を使用して値を暗号化するため、ローテーションやその他の高度なシークレットライフサイクル機能を必要としない、軽量で暗号化された設定値の実用的な選択肢となります。パラメータタイプに関する詳細については、「パラメータタイプを理解する」を参照してください。
注記
自動ローテーション、クロスアカウントアクセス、または詳細な監査ログ記録を必要とする認証情報を管理する場合は、AWS Secrets Manager を使用することをお勧めします。Secrets Manager は、データベース認証情報、API キー、サポートされているサードパーティ製ソフトウェア提供シークレットなどのシークレットを管理するために構築されています。詳細については、AWS Secrets Manager ユーザーガイド の「What is AWS Secrets Manager? ( とは?)」 を参照してください。
Parameter Store で保存および管理できる設定データのタイプの例をいくつか示します。
データベース接続文字列 (非ローテーション) ― jdbc:mysql://host:3306/appdb
アプリケーション環境変数 ― ENV=production、LOG_LEVEL=debug
サービスエンドポイント URL ― 内部マイクロサービスエンドポイントまたはサードパーティベース URL
リソース識別子 ― S3 バケット名、DynamoDB テーブル名、ARN
アプリケーション調整パラメータ ― キャッシュ TTL、バッチサイズ、ポーリング間隔
注記
次のタイプの設定データには Parameter Store を使用することはお勧めしません。
機能フラグ
タイムアウトなどの操作レバー
許可リストとブロックリスト
回路ブレーカー
動的設定
これらのタイプの設定データには、AWS AppConfig を使用します。詳細については、「What is AWS AppConfig?」を参照してください。
Parameter Store の機能
Parameter Store には、パラメータを管理するための以下の機能が含まれています。
-
他のアカウントとパラメータを共有
オプションで、設定データを 1 つの AWS アカウント に一元管理し、アクセスを必要とする他のアカウントとパラメータを共有します。詳細については、「」を参照してくださいParameter Store での共有パラメータの使用
-
OS のパッチ適用
Amazon EC2 では、AMI (AMI) ID をハードコーディングする代わりにパラメータを参照することで、新しいインスタンスのオペレーティングシステムを指定できます。このアプローチにより、インスタンスはパッチが適用された最新のイメージと更新されたイメージを自動的に使用します。 AWS およびオペレーティングシステムベンダーは、現在の AMI バージョンを追跡するパブリックパラメータを提供するため、更新を手動で管理する必要はありません。また、独自のパラメータを定義して一元管理されたゴールデン AMI を参照することもできます。これにより、組織全体で一貫性のある承認済みの設定を簡単に適用できます。
-
他の AWS のサービス からアクセス可能
他の AWS サービスでは、パラメータ値を簡単に参照できます。次に例を示します。
-
Lambda 関数でパラメータとシークレット Lambda 拡張機能を使用してパラメータとシークレットを取得する方法について説明します。
-
Amazon Elastic Container Service と AWS Fargate を使用すると、値がパラメータストアで一元管理される環境変数を挿入できます。
-
AWS CloudFormation テンプレートはパラメータ値を参照できます。
-
AWS AppConfig では、パラメータを参照する設定プロファイルを作成できるため、段階的なロールアウト、アラームベースのロールバック、組み込みのデータ検証などの機能を使用して、設定変更を安全にデプロイできます。
-
AWS CodeBuild では、ビルド時に Parameter Store から値が動的に取得される環境変数を定義できます。
-
-
パラメータ履歴
Parameter Store は各パラメータの最新バージョンを 100 個保持するため、運用上の問題を調査するときに以前の値をすばやく確認して再構築できます。
-
イベントと通知
パラメータ変更イベントにサブスクライブして、Parameter Store のワークフローを自動化します。また、変更イベントを使用して有効期限を適用し、指定した期間内にパラメータがローテーションされなかったときに通知を受け取ることもできます。
-
パラメータを階層的に整理
パラメータ階層を使用して関連するパラメータをグループ化することで、環境やアプリケーション間で簡単に検出、管理、フィルタリングできます。
パラメータ階層
Parameter Store は、コスト、スケール、パフォーマンスに影響する複数のパラメータ階層を提供します。標準パラメータ階層 (デフォルト階層) またはアドバンストパラメータ階層を使用するようパラメータを個別に設定します。
使用可能:
ほとんどの設定データと小規模ワークロードの標準パラメータ
より高い制限、より大きな値、またはパラメータポリシーが必要な場合の高度なパラメータ
重要
パラメータは標準からアドバンストにアップグレードできますが、ダウングレードすることはできません。
以下の表では、パラメータ階層の違いについて説明しています。
| 機能 | スタンダード | アドバンスト |
|---|---|---|
|
最大パラメータ (AWS アカウント および AWS リージョン あたり) |
10,000 |
100,000 |
|
最大値サイズ |
4 KB |
8 KB |
|
パラメータポリシー |
サポート外 |
サポート 詳細については、「Parameter Store でのパラメータポリシーの割り当て」を参照してください。 |
|
AWS アカウント 間でパラメータを共有 |
サポート外 |
サポート 詳細については、「Parameter Store での共有パラメータの使用」を参照してください。 |
|
Cost |
追加料金なし |
料金対象 詳細については、「Parameter Store 向けの AWS Systems Manager 料金 |
パラメータ階層とその機能の詳細については、「階層の管理」を参照してください。
Parameter Store クォータと制限の完全なリストについては、「AWS 一般的なリファレンス」の「AWS Systems Manager エンドポイントとクォータ」を参照してください。
パフォーマンスとスループット
Parameter Store は、小規模なワークロードに適したデフォルトのスループットを提供します。より高いリクエストレートを必要とするアプリケーションでは、より高いスループットを有効にできます。
一般的な設定の取得パターンでは、デフォルトのスループットで十分です。
高スループットモードでは、大規模またはレイテンシーの影響を受けやすいアプリケーションのリクエストレートが大幅に高くなります。
より高いスループットが有効になっている場合は、追加料金が適用されます。
アプリケーションがパラメータを頻繁にまたは大規模に取得する場合は、スロットリングを避けるためにスループット設定を早期に評価してください。高スループット有効化の詳細については、「Parameter Store スループットの変更」を参照してください。
パラメータを取得する方法
AWS マネジメントコンソール、AWS CLI、または AWS SDK を使用して Parameter Store からパラメータを取得して、次の API アクションを呼び出すことができます。
AWS CLI: 次の表に、Parameter Store のサンプル AWS CLI コマンドを示します。
| コマンド | 使用方法 | 最適な用途 |
|---|---|---|
|
get-parameter |
aws ssm get-parameter --name " |
1 つの特定のパラメータ値を取得します。 |
|
get-parameter |
aws ssm get-parameter --name " |
|
|
get-parameters |
aws ssm get-parameters --names " |
最大 10 個の特定の関連しないパラメータを一度に取得します。 |
|
get-parameters-by-path |
aws ssm get-parameters-by-path --path " |
環境の設定全体の一括取得。 |
|
get-parameter-history |
aws ssm get-parameter-history --name " |
時間の経過とともに値がどのように変化したかを確認します。 |
SDKs (Boto3 for Python など): アプリケーションコード内で get_parameter() または get_parameters_by_path() などのメソッドを使用して、実行時に値を取得します。
CDK と CloudFormation:
AWS CDK: 合成またはデプロイ中に値を読み取るには、
valueForStringParameterまたはvalueFromLookupを使用します。CloudFormation:
{{resolve:ssm:parameter-name:version}}のような動的参照を使用して、値をテンプレートに直接挿入します。
注記
動的なパラメータの大半を参照する場合は、以下の規則を使用してパラメータ名を指定します。
{{ssm:}}parameter-name
Parameter Store のご利用開始にあたっては、「Parameter Store の設定」を参照してください。