

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

# マニフェストを使用して追加の取得機能を有効にする
<a name="appconfig-agent-how-to-use-additional-features"></a>

AWS AppConfig エージェントには、アプリケーションの設定を取得するのに役立つ以下の追加機能があります。
+ [複数のアカウントから設定を取得するように AWS AppConfig エージェントを設定する](appconfig-agent-how-to-use-additional-features-multi-account.md): プライマリまたは*取得* AWS アカウント から AWS AppConfig エージェントを使用して、複数のベンダーアカウントから設定データを取得します。
+ [ディスクに設定コピーを書き込むように AWS AppConfig エージェントを設定する](appconfig-agent-how-to-use-additional-features-write-to-disk.md): AWS AppConfig エージェントを使用して設定データをディスクに書き込みます。この機能を使用すると、ディスクから設定データを読み取るアプリケーションを使用しているお客様は、 AWS AppConfigと統合できます。

## エージェントマニフェストについて
<a name="appconfig-agent-how-to-use-additional-features-about-manifests"></a>

これらの 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:aws: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 エージェント Lambda 拡張機能の設定](appconfig-integration-lambda-extensions-config.md)
+ [Amazon EC2 での AWS AppConfig エージェントの使用](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-integration-ec2.html#appconfig-integration-ec2-configuring)
+ [Amazon ECS および Amazon EKS での AWS AppConfig エージェントの使用](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-integration-containers-agent.html#appconfig-integration-containers-agent-configuring)

# 複数のアカウントから設定を取得するように AWS AppConfig エージェントを設定する
<a name="appconfig-agent-how-to-use-additional-features-multi-account"></a>

 AWS AppConfig エージェントマニフェストに認証情報の上書きを入力することで、複数の AWS アカウント から設定を取得するように AWS AppConfig エージェントを設定できます。*認証情報の上書き*には、 AWS Identity and Access Management (IAM) ロールの Amazon リソースネーム (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:aws:us-west-1:iam::123456789012:role/MyTestRole",
            "roleExternalId": "00b148e2-4ea4-46a1-ab0f-c422b54d0aac",
            "roleSessionName": "AWSAppConfigAgent",
            "credentialsDuration": "2h" 
        }
    }
}
```

設定を取得する前に、エージェントはマニフェストから設定の認証情報の詳細を読み取り、その設定に指定された IAM ロールを引き受けます。1 つのマニフェストで、異なる設定に対して異なる認証情報オーバーライドのセットを指定できます。次の図は、 AWS AppConfig エージェントがアカウント A (取得アカウント) で実行されているときに、アカウント B と C (ベンダーアカウント) に指定された個別のロールを引き受け、[GetLatestConfiguration](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_GetLatestConfiguration.html) API オペレーションを呼び出して、それらのアカウントで実行されている AWS AppConfig 設定データを取得する方法を示しています。

![\[AWS AppConfig エージェントが 間で IAM ロールを操作する方法 AWS アカウント。\]](http://docs.aws.amazon.com/ja_jp/appconfig/latest/userguide/images/agent multi-account.png)


## ベンダーアカウントから設定データを取得するアクセス許可を設定する
<a name="appconfig-agent-how-to-use-additional-features-multi-account-permission"></a>

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 マネジメントコンソール にサインインします。

1. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) で IAM コンソール を開きます。

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

1. **[JSON]** オプションを選択します。

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

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "appconfig:StartConfigurationSession",
                   "appconfig:GetLatestConfiguration"
               ],
               "Resource": "arn:aws:appconfig:us-east-1:111122223333:application/vendor_application_ID/environment/vendor_environment_ID/configuration/vendor_configuration_ID"
           }
       ]
   }
   ```

------

   例を示します。

------
#### [ JSON ]

****  

   ```
   {
       "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"
       }
      ]
   }
   ```

------

1. [**次へ**] を選択します。

1. **[ポリシー名]** フィールドに名前を入力します。

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

1. [**Create policy**] (ポリシーの作成) を選択します。システムによって**ポリシー**ページに戻ります。

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

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

**IAM ロールを作成するには**

1. ベンダーアカウントの AWS マネジメントコンソール にサインインします。

1. IAM コンソール ([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)) を開きます。

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

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

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

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

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

1. [**次へ**] を選択します。

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

1. [**次へ**] を選択します。

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

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

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

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/appconfig_role_in_retrieval_account"
               },
               "Action": "sts:AssumeRole"
           }
       ]
   }
   ```

------

1. (オプション) **[Tags]** (タグ)で、タグとキーの値のペアを 1 つまたは複数追加して、このロールのアクセスを整理、追跡、または制御します。

1. **[Create role]** (ロールの作成) を選択します。**ロール**ページが再度表示されます。

1. 作成したロールを検索します。これを選択します。**[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:aws:us-west-1:iam::123456789012:role/MyTestRole",
            "roleExternalId": "00b148e2-4ea4-46a1-ab0f-c422b54d0aac",
            "roleSessionName": "AwsAppConfigAgent",
            "credentialsDuration": "2h" 
        }
    }
}
```

**マルチアカウント取得が機能していることを確認します**  
エージェント AWS AppConfig ログを確認することで、エージェントが複数のアカウントから設定データを取得できることを検証できます。「`YourApplicationName`:`YourEnvironmentName`:`YourConfigurationName`」の取得された初期データの `INFO` レベルのログは、取得が成功したことを示す最適な指標です。取得に失敗した場合、失敗の理由を示す `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 エージェントを設定する
<a name="appconfig-agent-how-to-use-additional-features-write-to-disk"></a>

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

この機能は、設定バックアップ機能として使用するように設計されていません。 AWS AppConfig エージェントは、ディスクにコピーされた設定ファイルから読み取りません。設定をディスクにバックアップする場合は、[Amazon EC2 で AWS AppConfig エージェントを使用する](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-integration-ec2.html#appconfig-integration-ec2-configuring)か、Amazon ECS `BACKUP_DIRECTORY`と Amazon EKS で エージェントを使用するための および `PRELOAD_BACKUP`環境変数を参照してください。 [AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-integration-containers-agent.html#appconfig-integration-containers-agent-configuring)

**警告**  
この機能に関する次の重要事項に留意してください。  
ディスクに保存されている設定は*プレーンテキスト*で保存され、人間が読み取ることができます。機密データを含む設定では、この機能を有効にしないでください。
この機能はローカルディスクに書き込みます。ファイルシステムのアクセス許可には、最小特権の原則を使用します。詳細については、「[最小特権アクセスの実装](appconfig-security.md#appconfig-security-least-privilege-access)」を参照してください。

**ディスクへの設定コピーの書き込みを有効にするには**

1. マニフェストを編集します。

1. ディスクに 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"
           }
       }
   }
   ```

1. 変更内容を保存します。configuration.json ファイルは、新しい設定データがデプロイされるたびに更新されます。

**ディスクへの設定コピーの書き込みが機能していることを検証する**  
エージェント AWS AppConfig ログを確認することで、設定のコピーがディスクに書き込まれていることを確認できます。「INFO wrote configuration '*application*:*environment*:*configuration*' to *file\$1path*」というフレーズを含む`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
```