使用資訊清單啟用其他擷取功能 - AWS AppConfig

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

使用資訊清單啟用其他擷取功能

AWS AppConfig 代理程式提供下列其他功能,協助您擷取應用程式的組態。

了解代理程式清單

若要啟用這些 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: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環境變數:

清單位置 環境變數值 使用案例

檔案

文件:/路徑/到代理清單 .json

如果您的資訊清單不會經常變更,請使用此方法。

AWS AppConfig 配置

application-name:environment-name:configuration-name

使用此方法進行動態更新。您可以使用與儲存其他組態相同的方式,更新和部署儲存 AWS AppConfig 為組 AWS AppConfig 態中的資訊清單。

環境變數

資訊清單內容 (JSON)

如果您的資訊清單不會經常變更,請使用此方法。在容器環境中,設定環境變數比公開檔案更容易,此方法非常有用。

如需有關為 AWS AppConfig 代理程式設定變數的詳細資訊,請參閱您使用案例的相關主題:

設定 AWS AppConfig 代理程式以從多個帳戶擷取組態

您可以在 AWS AppConfig 代理程式資訊清單中輸入認證覆寫,將 AWS AppConfig 代理程式設定為從多個 AWS 帳戶 擷取組態。登入資料覆寫包括 (ARN) 角色的 Amazon 資源名稱 AWS Identity and Access Management (IAM)、角色 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角色。您可以在單一資訊清單中為不同的組態指定一組不同的認證覆寫。下圖顯示 AWS AppConfig 代理程式在帳戶 A (擷取帳戶) 中執行時,如何假設為帳戶 B 和 C (廠商帳戶) 指定的個別角色 (廠商帳戶),然後呼叫GetLatestConfigurationAPI作業以擷取在這些帳戶中 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 彈性運算雲端 (AmazonEC2),請 AWS AppConfig 使用執行個體角色。

    • 對於 AWS Lambda, AWS AppConfig 使用 Lambda 執行角色。

    • 對於 Amazon 彈性容器服務(AmazonECS)和 Amazon 彈性 Kubernetes 服務(亞馬遜EKS), AWS AppConfig 使用容器角色。

    如果您透過指定ROLE_ARN環境變數將 AWS AppConfig Agent 設定為使用其他IAM角色,請記下該名稱。

建立權限原則

使用下列程序來使用IAM主控台建立權限原則。完成每個 AWS 帳戶 將為擷取帳戶顯示組態資料的程序。

如要建立 IAM 政策
  1. 登入供應商帳戶。 AWS Management Console

  2. 在開啟IAM主控台https://console.aws.amazon.com/iam/

  3. 在導覽窗格中,選擇 Policies (政策),然後選擇 Create policy (建立政策)

  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. (選擇性) 對於 [新增標籤],請新增一或多個標籤金鑰值組,以組織、追蹤或控制此原則的存取權。

  9. 選擇 建立政策。系統會讓您返回 Policies (政策) 頁面。

  10. 在每個將為擷取帳戶顯 AWS 帳戶 示組態資料的每個程序中重複此程序。

建立角IAM色

使用下列程序來使用IAM主控台建立IAM角色。完成每個 AWS 帳戶 將為擷取帳戶顯示組態資料的程序。

建立 IAM 角色
  1. 登入供應商帳戶。 AWS Management Console

  2. 在開啟IAM主控台https://console.aws.amazon.com/iam/

  3. 在瀏覽窗格中,選擇 [角色],然後選擇 [建立原則]。

  4. 對於 Trusted entity type (信任的實體類型),請選擇 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 (標籤),新增一個或多個標籤鍵值組來組織、追蹤或控制對此角色的存取。

  15. 選擇 Create role (建立角色)。系統會讓您回到 Roles (角色) 頁面。

  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 擷取 'YourApplicationNameYourEnvironmentName: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 代理程式將組態複本寫入磁碟

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

此功能並非設計用來做為組態備份功能。 AWS AppConfig 代理程式不會從複製到磁碟的組態檔讀取。如果您想要將組態備份到磁碟,請參閱將AWS AppConfig 代理程式BACKUP_DIRECTORY與 Amazon 搭配使用EC2或搭配 Amazon ECS 和 Amazon 使用 AWS AppConfig 代理程式的PRELOAD_BACKUP環境變數EKS。

警告

請注意下列有關此功能的重要資訊:

  • 儲存至磁碟的組態會以純文字格式儲存,且可供人類讀取。對於包含敏感資料的組態,請勿啟用此功能。

  • 此功能會寫入本機磁碟。使用檔案系統權限的最小權限原則。如需詳細資訊,請參閱實作最低權限存取

啟用寫入組態複製到磁碟
  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. 儲存您的變更。每次部署新的組態資料時,組態 .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