View a markdown version of this page

配置 AWS AppConfig 代理从多个账户检索配置 - AWS AppConfig

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置 AWS AppConfig 代理从多个账户检索配置

AWS 账户 通过在 AWS AppConfig 代理清单中输入凭据覆盖,可以将 AWS AppConfig 代理配置为从多个服务器检索配置。凭证覆盖包括 (IAM) 角色的亚马逊资源名称 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 API 操作来检索在这些账户中 AWS AppConfig 运行的配置数据:

AWS AppConfig 代理如何单独使用 IAM 角色 AWS 账户。

配置从供应商账户检索配置数据的权限

AWS AppConfig 在检索账户中运行的代理需要权限才能从供应商账户检索配置数据。您可以通过在每个供应商账户中创建 AWS Identity and Access Management (IAM) 角色来向代理授予权限。 AWS AppConfig 检索账户中的代理担任此角色以从供应商账户获取数据。完成本节中的过程,来创建 IAM 权限策略、IAM 角色并将代理覆盖添加到清单中。

开始前的准备工作

在 IAM 中创建权限策略和角色之前,请收集以下信息。

  • 每个人的 ID AWS 账户。检索 账户是将调用其它账户来获取配置数据的账户。供应商 账户是将向检索账户提供配置数据的账户。

  • 检索账户 AWS AppConfig 中使用的 IAM 角色的名称。以下是默认情况下使用的 AWS AppConfig角色列表:

    • 对于亚马逊弹性计算云 (Amazon EC2), AWS AppConfig 使用实例角色。

    • 对于 AWS Lambda, AWS AppConfig 使用 Lambda 执行角色。

    • 对于亚马逊弹性容器服务(亚马逊 ECS)和亚马逊弹性 Kubernetes 服务(亚马逊 EKS), AWS AppConfig 使用容器角色。

    如果您通过指定ROLE_ARN环境变量将 AWS AppConfig 代理配置为使用不同的 IAM 角色,请记下该名称。

创建权限策略

使用 IAM 控制台通过以下过程创建权限策略。完成每个将 AWS 账户 为检索账户提供配置数据的程序。

创建 IAM policy
  1. 登录供应商账户。 AWS 管理控制台

  2. 使用 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  3. 在导航窗格中,选择 策略,然后选择 创建策略。

  4. 选择 JSON 选项。

  5. 在策略编辑器中,用以下策略语句替换默认 JSON。example resource placeholder使用供应商账户详细信息更新每个。

    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" } ] }
  6. 选择下一步。

  7. 在策略名称字段中,输入名称。

  8. (可选)对于添加标签,添加一个或多个标签键值对,以组织、跟踪或控制此策略的访问权限。

  9. 选择创建策略。系统将让您返回到 Policies 页面。

  10. 在将为检索账户提供配置数据的每个 AWS 账户 程序中重复此过程。

创建 IAM 角色

使用 IAM 控制台通过以下过程创建 IAM 角色。完成每个将 AWS 账户 为检索账户提供配置数据的程序。

创建 IAM 角色
  1. 登录供应商账户。 AWS 管理控制台

  2. 使用 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  3. 在导航窗格中,选择角色,然后选择创建策略。

  4. 对于 Trusted entity type(可信实体类型),选择 AWS 账户。

  5. 在 AWS 账户部分中,选择其它 AWS 账户。

  6. 在账户 ID 字段中,输入检索账户 ID。

  7. (可选)作为此代入角色的安全最佳实践,请选择需要外部 ID 并输入字符串。

  8. 选择下一步。

  9. 在添加权限页面上,使用搜索字段来查找您在前面过程中创建的策略。选中其名称旁边的复选框。

  10. 选择下一步。

  11. 对于角色名称,输入一个名称。

  12. (可选)对于描述,输入描述。

  13. 对于步骤 1:选择受信任的实体,选择编辑。将默认 JSON 信任策略替换为以下策略。example resource placeholder使用您的检索账户中的信息更新每一个信息。

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/appconfig_role_in_retrieval_account" }, "Action": "sts:AssumeRole" } ] }
  14. (可选)在 Tags(标签)中添加一个或多个标签密钥值对,以组织、跟踪或控制此角色的访问权限。

  15. 选择 Create role (创建角色)。系统将让您返回到 角色 页面。

  16. 搜索您刚创建的角色。选择该存储桶。在 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