その他の取り出し機能 - AWS AppConfig

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

その他の取り出し機能

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

  • マルチアカウント取得: プライマリまたは取得 AWS アカウント の AWS AppConfig エージェントを使用して、複数のベンダーアカウントから設定データを取得します。

  • ディスクへの設定コピーの書き込み: 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

ファイル:/path/to/agent-manifest.json

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

AWS AppConfig 設定

application-name environment-name configuration-name

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

環境変数

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

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

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

マルチアカウント取得

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

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

{ "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 (ベンダーアカウント) に指定された個別のロールを引き受け、GetLatest設定 API オペレーションを呼び出して、それらのアカウントで実行されている AWS AppConfig 設定データを取得する方法を示しています。

AWS AppConfig エージェントが別々の 間で IAM ロールと連携する方法 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. https://console.aws.amazon.com/iam/ で IAM コンソール を開きます。

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

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

  5. ポリシーエディタ で、デフォルトの JSON を次のポリシーステートメントに置き換えます。各リソースプレースホルダーの例をベンダーアカウントの詳細で更新します。

    { "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. [次へ] をクリックします。

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

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

  9. ポリシーの作成を選択します。システムによってポリシーページに戻ります。

  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. [次へ] をクリックします。

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

  10. [次へ] をクリックします。

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

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

  13. ステップ 1: 信頼できるエンティティ を選択する で編集 を選択します。デフォルトの JSON 信頼ポリシーを次のポリシーに置き換えます。各リソースプレースホルダーの例を取得アカウントからの情報で更新します。

    { "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 ロールを作成したら、取得アカウントのマニフェストを更新します。具体的には、ベンダーアカウントから設定データを取得するための認証情報ブロックと IAM ロール ARN を追加します。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::' の初期データを取得するためのINFOレベルログYourEnvironmentNameYourConfigurationNameは、取得が成功するための最適な指標です。取り出しが失敗した場合、失敗の理由を示す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 エージェントは、ディスクにコピーされた設定ファイルから読み取りません。設定をディスクにバックアップする場合は、Amazon EC2 で AWS AppConfig エージェントを使用する」または「Amazon ECS BACKUP_DIRECTORYと Amazon EKS でエージェントを使用する」の環境変数とPRELOAD_BACKUP環境変数を参照してください。 AWS AppConfig

警告

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

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

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

ディスクへの設定の書き込みコピーを有効にするには
  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 が設定 'application environment configuration ' to file_path」を記述したINFOログエントリは、 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