使用資訊清單來啟用其他擷取功能 - 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的環境變數:

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

檔案

file:/path/to/agent-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 Resource Name AWS Identity and Access Management (IAM)、角色 ID、工作階段名稱,以及客服人員可以擔任角色的持續時間。

您可以在資訊清單中的「憑證」區段中輸入這些詳細資訊。"credentials" 區段使用以下格式:

{ "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 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 會使用容器角色。

    如果您將 AWS AppConfig 客服人員設定為透過指定ROLE_ARN環境變數來使用不同的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 日誌,驗證客服人員是否能夠從多個帳戶擷取組態資料。'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。

此功能並非設計為用作組態備份功能。 AWS AppConfig 客服人員不會從複製到磁碟的組態檔案讀取。如果您想要將組態備份至磁碟,請參閱 BACKUP_DIRECTORYPRELOAD_BACKUP 環境變數,以搭配 Amazon 使用 AWS AppConfig Agent EC2搭配 Amazon ECS和 Amazon 使用 AWS AppConfig AgentEKS

警告

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

  • 儲存到磁碟的組態會以純文字形式儲存,且可供人工讀取。請勿為包含敏感資料的組態啟用此功能。

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

啟用寫入組態複製到磁碟
  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 wrote configuration ' 的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