マニフェストを使用して追加の取得機能を有効にする - AWS AppConfig

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

マニフェストを使用して追加の取得機能を有効にする

AWS AppConfig エージェントには、アプリケーションの設定を取得するのに役立つ以下の追加機能があります。

エージェントマニフェストについて

これらの AWS AppConfig エージェント機能を有効にするには、マニフェストを作成します。マニフェストは、エージェントが実行できるアクションを制御するために提供する設定データのセットです。マニフェストは に記述されますJSON。これには、 を使用してデプロイしたさまざまな設定に対応する最上位キーのセットが含まれています AWS AppConfig。

マニフェストには複数の設定を含めることができます。さらに、マニフェスト内の各設定は、指定された設定に使用する 1 つ以上のエージェント機能を識別できます。マニフェストのコンテンツは、次の形式を使用します。

{ "application_name:environment_name:configuration_name": { "agent_feature_to_enable_1": { "feature-setting-key": "feature-setting-value" }, "agent_feature_to_enable_2": { "feature-setting-key": "feature-setting-value" } } }

以下は、2 つの設定を持つマニフェストJSONの例です。最初の設定 (MyApp) は AWS AppConfig エージェント機能を使用しません。2 番目の設定 (My2ndApp) は、ディスクへの書き込み設定コピーマルチアカウント取得機能を使用します。

{ "MyApp:Test:MyAllowListConfiguration": {}, "My2ndApp:Beta:MyEnableMobilePaymentsFeatureFlagConfiguration": { "credentials": { "roleArn": "arn:us-west-1:iam::123456789012:role/MyTestRole", "roleExternalId": "00b148e2-4ea4-46a1-ab0f-c422b54d0aac", "roleSessionName": "AwsAppConfigAgent", "credentialsDuration": "2h" }, "writeTo": { "path": "/tmp/aws-appconfig/my-2nd-app/beta/my-enable-payments-feature-flag-configuration.json" } } }
エージェントマニフェストを指定する方法

マニフェストは、 AWS AppConfig エージェントが読み取れる場所にファイルとして保存できます。または、マニフェストを設定として保存 AWS AppConfig し、エージェントに指すこともできます。エージェントマニフェストを指定するには、次のいずれかの値でMANIFEST環境変数を設定する必要があります。

マニフェストの場所 環境変数値 ユースケース

File

file:/path/to/agent-manifest.json

マニフェストが頻繁に変更されない場合は、この方法を使用します。

AWS AppConfig 設定

application-name:environment-name:configuration-name

動的更新には、この方法を使用します。に保存されているマニフェストは、他の AWS AppConfig AWS AppConfig 設定を保存するのと同じ方法で更新してデプロイできます。

環境変数

マニフェストコンテンツ (JSON)

マニフェストが頻繁に変更されない場合は、この方法を使用します。この方法は、ファイルを公開するよりも環境変数を設定する方が簡単なコンテナ環境に役立ちます。

AWS AppConfig エージェントに変数を設定する方法の詳細については、ユースケースの関連トピックを参照してください。

複数のアカウントから設定を取得するように AWS AppConfig エージェントを設定する

AWS AppConfig エージェントマニフェストに認証情報の上書きを入力することで、複数の AWS アカウント から設定を取得するように AWS AppConfig エージェントを設定できます。認証情報のオーバーライドには、 (ARN) ロールの Amazon リソースネーム AWS Identity and Access Management (IAM)、ロール ID、セッション名、およびエージェントがロールを引き受けることができる期間が含まれます。

これらの詳細は、マニフェストの「credentials」セクションに入力します。「credentials」セクションでは、次の形式を使用します。

{ "application_name:environment_name:configuration_name": { "credentials": { "roleArn": "arn:partition:iam::account_ID:role/roleName", "roleExternalId": "string", "roleSessionName": "string", "credentialsDuration": "time_in_hours" } } }

以下がその例です。

{ "My2ndApp:Beta:MyEnableMobilePaymentsFeatureFlagConfiguration": { "credentials": { "roleArn": "arn:us-west-1:iam::123456789012:role/MyTestRole", "roleExternalId": "00b148e2-4ea4-46a1-ab0f-c422b54d0aac", "roleSessionName": "AWSAppConfigAgent", "credentialsDuration": "2h" } } }

設定を取得する前に、エージェントはマニフェストから設定の認証情報の詳細を読み取り、その設定に指定されたIAMロールを引き継ぎます。1 つのマニフェストで、異なる設定に対して異なる認証情報オーバーライドのセットを指定できます。次の図は、 AWS AppConfig エージェントがアカウント A (取得アカウント) で実行している間に、アカウント B と C (ベンダーアカウント) に指定された個別のロールを引き受け、 GetLatestConfigurationAPIオペレーションを呼び出して、それらのアカウントで実行されている AWS AppConfig 設定データを取得する方法を示しています。

エージェントが個別の 間でIAMロール AWS AppConfig を操作する方法 AWS アカウント。

ベンダーアカウントから設定データを取得するアクセス許可を設定する

AWS AppConfig 取得アカウントで実行されているエージェントには、ベンダーアカウントから設定データを取得するアクセス許可が必要です。各ベンダーアカウントに AWS Identity and Access Management (IAM) ロールを作成して、エージェントに許可を付与します。取得アカウントの AWS AppConfig エージェントはこのロールを引き受けて、ベンダーアカウントからデータを取得します。このセクションの手順を完了して、IAMアクセス許可ポリシー、IAMロールを作成し、マニフェストにエージェントオーバーライドを追加します。

開始する前に

でアクセス許可ポリシーとロールを作成する前に、以下の情報を収集しますIAM。

  • 各 IDsの AWS アカウント。取得アカウントは、設定データのために他のアカウントを呼び出すアカウントです。ベンダーアカウントは、設定データを取得アカウントに配信するアカウントです。

  • 取得アカウント AWS AppConfig で が使用するIAMロールの名前。デフォルトでは AWS AppConfig、 が使用するロールのリストを次に示します。

    • Amazon Elastic Compute Cloud (Amazon EC2) の場合、 はインスタンスロール AWS AppConfig を使用します。

    • の場合 AWS Lambda、Lambda 実行ロール AWS AppConfig を使用します。

    • Amazon Elastic Container Service (Amazon ECS) および Amazon Elastic Kubernetes Service (Amazon EKS) では、 はコンテナロール AWS AppConfig を使用します。

    ROLE_ARN 環境変数を指定してエージェントに別のIAMロールを使用する AWS AppConfig ように設定した場合は、その名前を書き留めます。

アクセス許可ポリシーを作成する

IAM コンソールを使用してアクセス許可ポリシーを作成するには、次の手順に従います。取得アカウントの設定データを配信 AWS アカウント する各 の手順を完了します。

IAM ポリシーを作成するには
  1. ベンダーアカウントの AWS Management Console にサインインします。

  2. でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/

  3. ナビゲーションペインで ポリシーを選択してから ポリシーの作成を選択します。

  4. JSON オプションを選択します。

  5. ポリシーエディタ で、デフォルトを次のポリシーステートメントJSONに置き換えます。それぞれを更新する example resource placeholder ベンダーアカウントの詳細。

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "appconfig:StartConfigurationSession", "appconfig:GetLatestConfiguration" ], "Resource": "arn:partition:appconfig:region:vendor_account_ID:application/vendor_application_ID/environment/vendor_environment_ID/configuration/vendor_configuration_ID" } ] }

    例を示します。

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "appconfig:StartConfigurationSession", "appconfig:GetLatestConfiguration" ], "Resource": "arn:aws:appconfig:us-east-2:111122223333:application/abc123/environment/def456/configuration/hij789" } ] }
  6. [Next (次へ)] を選択します。

  7. ポリシー名フィールドに名前を入力します。

  8. (オプション) タグを追加する には、1 つ以上のタグキー値のペアを追加して、このポリシーのアクセスを整理、追跡、または制御します。

  9. [Create policy] を選択します。システムによってポリシーページに戻ります。

  10. 取得アカウントの設定データを格納 AWS アカウント する各 でこの手順を繰り返します。

IAM ロールを作成する

IAM コンソールを使用してIAMロールを作成するには、次の手順に従います。取得アカウントの設定データを配信 AWS アカウント する各 の手順を完了します。

IAM ロールを作成するには
  1. ベンダーアカウントの AWS Management Console にサインインします。

  2. でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/

  3. ナビゲーションペインで、ロール を選択し、ポリシーの作成 を選択します。

  4. 信頼できるエンティティタイプ で、AWS アカウント を選択します。

  5. AWS アカウント セクションで、別の AWS アカウントを選択します。

  6. アカウント ID フィールドに、取得アカウント ID を入力します。

  7. (オプション) この引き受けロールのセキュリティのベストプラクティスとして、外部 ID を要求を選択し、文字列を入力します。

  8. [Next (次へ)] を選択します。

  9. アクセス許可の追加ページで、検索フィールドを使用して、前の手順で作成したポリシーを見つけます。名前の横にあるチェックボックスを選択します。

  10. [Next (次へ)] を選択します。

  11. [Role name] (ロール名) に名前を入力します。

  12. (オプション) [説明] に説明を入力します。

  13. ステップ 1: 信頼できるエンティティ を選択するには、編集 を選択します。デフォルトのJSON信頼ポリシーを次のポリシーに置き換えます。それぞれを更新する example resource placeholder 取得アカウントからの情報。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::retrieval_account_ID:role/appconfig_role_in_retrieval_account" }, "Action": "sts:AssumeRole" } ] }
  14. (オプション) [Tags] (タグ)で、タグとキーの値のペアを 1 つまたは複数追加して、このロールのアクセスを整理、追跡、または制御します。

  15. [ロールの作成] を選択します。ロールページが再度表示されます。

  16. 作成したロールを検索します。これを選択します。ARN セクションで、 をコピーしますARN。この情報は、次の手順で指定します。

マニフェストに認証情報オーバーライドを追加する

ベンダーアカウントにIAMロールを作成したら、取得アカウントのマニフェストを更新します。具体的には、認証情報ブロックと、ベンダーアカウントから設定データを取得ARNするためのIAMロールを追加します。JSON 形式は次のとおりです。

{ "vendor_application_name:vendor_environment_name:vendor_configuration_name": { "credentials": { "roleArn": "arn:partition:iam::vendor_account_ID:role/name_of_role_created_in_vendor_account", "roleExternalId": "string", "roleSessionName": "string", "credentialsDuration": "time_in_hours" } } }

以下がその例です。

{ "My2ndApp:Beta:MyEnableMobilePaymentsFeatureFlagConfiguration": { "credentials": { "roleArn": "arn:us-west-1:iam::123456789012:role/MyTestRole", "roleExternalId": "00b148e2-4ea4-46a1-ab0f-c422b54d0aac", "roleSessionName": "AwsAppConfigAgent", "credentialsDuration": "2h" } } }
マルチアカウント取得が機能していることを確認します

エージェント AWS AppConfig ログを確認することで、エージェントが複数のアカウントから設定データを取得できることを検証できます。YourApplicationName「:YourEnvironmentName:」の初期データを取得するためのINFOレベルログYourConfigurationNameは、取得が成功するための最適な指標です。取得に失敗した場合、失敗の理由を示すERRORレベルログが表示されます。ベンダーアカウントからの正常な取得の例を次に示します。

[appconfig agent] 2023/11/13 11:33:27 INFO AppConfig Agent 2.0.x [appconfig agent] 2023/11/13 11:33:28 INFO serving on localhost:2772 [appconfig agent] 2023/11/13 11:33:28 INFO retrieved initial data for 'MyTestApplication:MyTestEnvironment:MyDenyListConfiguration' in XX.Xms

ディスクに設定コピーを書き込むように AWS AppConfig エージェントを設定する

エージェントは、設定のコピーをディスクにプレーンテキストで自動的に保存 AWS AppConfig するように設定できます。この機能を使用すると、ディスクから設定データを読み取るアプリケーションを持つお客様は、 と統合できます AWS AppConfig。

この機能は、設定バックアップ機能として使用するように設計されていません。 AWS AppConfig エージェントは、ディスクにコピーされた設定ファイルから読み取れません。設定をディスクにバックアップする場合は、Amazon でAWS AppConfig エージェントを使用するか、Amazon EC2 BACKUP_DIRECTORY と Amazon でAWS AppConfig エージェントを使用するための ECSおよび EKSPRELOAD_BACKUP環境変数を参照してください。

警告

この機能に関する以下の重要な情報に注意してください。

  • ディスクに保存されている設定はプレーンテキストで保存され、人間が読み取ることができます。機密データを含む設定では、この機能を有効にしないでください。

  • この機能はローカルディスクに書き込みます。ファイルシステムのアクセス許可には、最小権限の原則を使用します。詳細については、「最小特権アクセスの実装」を参照してください。

ディスクへの設定コピーの書き込みを有効にするには
  1. マニフェストを編集します。

  2. ディスクに AWS AppConfig 書き込む設定を選択し、 writeTo 要素を追加します。以下がその例です。

    { "application_name:environment_name:configuration_name": { "writeTo": { "path": "path_to_configuration_file" } } }

    以下がその例です。

    { "MyTestApp:MyTestEnvironment:MyNewConfiguration": { "writeTo": { "path": "/tmp/aws-appconfig/mobile-app/beta/enable-mobile-payments" } } }
  3. 変更を保存します。configuration.json ファイルは、新しい設定データがデプロイされるたびに更新されます。

ディスクへの設定コピーの書き込みが機能していることを検証する

エージェント AWS AppConfig ログを確認することで、設定のコピーがディスクに書き込まれていることを確認できます。フレーズINFO「書き込み設定」のINFOログエントリapplication:environment:configuration' から へ file_path「」は、 AWS AppConfig エージェントが設定コピーをディスクに書き込むことを示します。

以下がその例です。

[appconfig agent] 2023/11/13 11:33:27 INFO AppConfig Agent 2.0.x [appconfig agent] 2023/11/13 11:33:28 INFO serving on localhost:2772 [appconfig agent] 2023/11/13 11:33:28 INFO retrieved initial data for 'MobileApp:Beta:EnableMobilePayments' in XX.Xms [appconfig agent] 2023/11/13 17:05:49 INFO wrote configuration 'MobileApp:Beta:EnableMobilePayments' to /tmp/configs/your-app/your-env/your-config.json