

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

# 設定 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
```