

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用資訊清單來啟用其他擷取功能
<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。

資訊清單可以包含多個組態。此外，資訊清單中的每個組態都可以識別一或多個用於指定組態的代理程式功能。資訊清單的內容使用下列格式：

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

以下是具有兩種組態的資訊清單 JSON 範例。第一個組態 (*MyApp*) 不會使用任何 AWS AppConfig 代理程式功能。第二個組態 (*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 Agent 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 AppConfig 客服人員設定為從多個 AWS 帳戶 擷取組態。*登入資料覆寫*包括 (IAM) 角色的 Amazon Resource Name 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:aws:us-west-1:iam::123456789012:role/MyTestRole",
            "roleExternalId": "00b148e2-4ea4-46a1-ab0f-c422b54d0aac",
            "roleSessionName": "AWSAppConfigAgent",
            "credentialsDuration": "2h" 
        }
    }
}
```

在擷取組態之前，代理程式會從資訊清單中讀取組態的登入資料詳細資訊，然後擔任為該組態指定的 IAM 角色。您可以在單一資訊清單中指定不同組態的不同登入資料覆寫集。下圖顯示 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/zh_tw/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 帳戶。*擷取*帳戶是將呼叫其他帳戶以取得組態資料的帳戶。*廠商*帳戶是將組態資料提供給擷取帳戶的帳戶。
+ 擷取帳戶中 使用的 IAM AWS AppConfig 角色名稱。根據預設 AWS AppConfig，以下是 所使用的角色清單：
  + 對於 Amazon Elastic Compute Cloud (Amazon EC2)， AWS AppConfig 會使用執行個體角色。
  + 對於 AWS Lambda， AWS AppConfig 使用 Lambda 執行角色。
  + 對於 Amazon Elastic Container Service (Amazon ECS) 和 Amazon Elastic Kubernetes Service (Amazon EKS)， AWS AppConfig 會使用容器角色。

  如果您透過指定`ROLE_ARN`環境變數將 AWS AppConfig 代理程式設定為使用不同的 IAM 角色，請記下該名稱。

**建立許可政策**  
使用下列程序，使用 IAM 主控台建立許可政策。完成每個 中的程序 AWS 帳戶 ，以提供擷取帳戶的組態資料。

**建立 IAM 政策**

1. 登入廠商帳戶中 AWS 管理主控台 的 。

1. 在 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 中開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Policies (政策)**，然後選擇 **Create policy (建立政策)**。

1. 選擇 **JSON** 選項。

1. 在**政策編輯器**中，將預設 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. 選擇**建立政策**。系統會讓您返回 **Policies (政策)** 頁面。

1. 在 AWS 帳戶 將為擷取帳戶提供組態資料的每個 中重複此程序。

**建立 IAM 角色**  
使用下列程序，使用 IAM 主控台建立 IAM 角色。完成每個 中的程序 AWS 帳戶 ，以提供擷取帳戶的組態資料。

**若要建立一個 IAM 角色**

1. 登入廠商帳戶中 AWS 管理主控台 的 。

1. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

1. 在導覽窗格中，選擇**角色**，然後選擇**建立政策**。

1. 對於 **Trusted entity type** (信任的實體類型)，請選擇 **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. 選擇 **Create role** (建立角色)。系統會讓您回到 **Roles (角色)** 頁面。

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`：' 擷取初始資料的`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 代理程式將組態副本寫入磁碟
<a name="appconfig-agent-how-to-use-additional-features-write-to-disk"></a>

您可以設定 AWS AppConfig 代理程式自動將組態副本以純文字形式儲存到磁碟。此功能可讓具有從磁碟讀取組態資料的應用程式的客戶與 整合 AWS AppConfig。

此功能並非設計做為組態備份功能使用。 AWS AppConfig 代理程式不會從複製到磁碟的組態檔案讀取。如果您想要將組態備份到磁碟，請參閱[將 AWS AppConfig 代理程式與 Amazon EC2 ](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-integration-ec2.html#appconfig-integration-ec2-configuring)搭配使用或[將 AWS AppConfig 代理程式與 Amazon ECS 和 Amazon EKS 搭配使用的 和](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-integration-containers-agent.html#appconfig-integration-containers-agent-configuring) `BACKUP_DIRECTORY``PRELOAD_BACKUP`環境變數。

**警告**  
請注意有關此功能的下列重要資訊：  
儲存到磁碟的組態會以*純文字*形式儲存，且可供人類讀取。請勿針對包含敏感資料的組態啟用此功能。
此功能會寫入本機磁碟。使用檔案系統許可的最低權限原則。如需詳細資訊，請參閱[實作最低權限存取](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 將組態 '*application*：*environment*：*configuration*' 寫入 *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
```