账户自定义 - AWS Control Tower

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

账户自定义

AFT 可以在已配置的账户中部署标准或自定义配置。在 AFT 管理账户中,AFT 为每个账户提供一个管道。通过此渠道,您可以在所有账户、一组账户或个人账户中实现自定义。您可以运行 Python 脚本、bash 脚本和 Terraform 配置,也可以在账户自定义阶段与 AWS CLI 进行交互。

概述

在您选择的git存储库(存储全局自定义项或存储账户自定义项的存储库)中指定自定义项后,AFT 管道将自动完成账户自定义阶段。要追溯自定义帐户,请参阅重新调用自定义

全局自定义(可选)

您可以选择将某些自定义设置应用于 AFT 配置的所有账户。例如,如果您需要创建特定的 IAM 角色或在每个账户中部署自定义控件,AFT 管道中的全局自定义阶段允许您自动执行此操作。

账户自定义(可选)

要以不同于其他 AFT 预配置账户的方式自定义个人账户或一组账户,您可以利用 AFT 管道的账户自定义部分来实现特定于账户的配置。例如,只有特定的账户可能需要访问互联网网关。

自定义先决条件

在开始自定义账户之前,请确保满足这些先决条件。

应用全局自定义

要应用全局自定义,必须将特定的文件夹结构推送到所选存储库。

  • 如果您的自定义配置采用 Python 程序或脚本的形式,请将其放在存储库中的 api_helpers/ python 文件夹下。

  • 如果您的自定义配置采用 Bash 脚本的形式,请将其放在存储库中的 api_helpers 文件夹下。

  • 如果您的自定义配置采用 Terraform 的形式,请将其放在存储库中的 terraform 文件夹下。

  • 有关创建自定义配置的更多详细信息,请参阅全局自定义 README 文件。

注意

在 AFT 管道的 AFT 账户配置框架阶段之后,会自动应用全局定制。

应用账户自定义

您可以通过将特定的文件夹结构推送到所选存储库来应用账户自定义。账户自定义在 AFT 管道中和全球定制阶段之后自动应用。您还可以在账户自定义存储库中创建多个包含不同账户自定义项的文件夹。对于您需要的每个账户自定义,请使用以下步骤。

应用账户自定义
  1. 步骤 1:为账户自定义创建文件夹

    在您选择的存储库中,将 AFT 提供的ACCOUNT_TEMPLATE文件夹复制到新文件夹。新文件夹的名称应与您在账户申请中提供的名称一致。account_customizations_name

  2. 将配置添加到您的特定账户自定义文件夹

    您可以根据配置的格式将配置添加到您的账户自定义文件夹。

    • 如果你的自定义配置采用 Python 程序或脚本的形式,请将其放在存储库中的 [account_customizations_name] /api_ helpers/p ython 文件夹下。

    • 如果您的自定义配置采用 Bash 脚本的形式,请将其放在存储库中的 [account_customizations_name] /api_ helpers 文件夹下。

    • 如果你的自定义配置采用 Terraform 的形式,请将其放在存储库中的 [account_customizations_name] /terraform 文件夹下。

    有关创建自定义配置的更多信息,请参阅账户自定义 README 文件。

  3. 请参阅账户请求文件中的特定account_customizations_name参数

    AFT 账户请求文件包含输入参数account_customizations_name。输入您的账户自定义名称作为此参数的值。

注意

您可以为环境中的账户提交多个账户申请。如果您想应用不同或相似的账户自定义设置,请使用账户请求中的account_customizations_name输入参数指定账户自定义。有关更多信息,请参阅提交多个账户申请

重新调用自定义

AFT 提供了一种在 AFT 管道中重新调用自定义项的方法。当您添加了新的自定义步骤或对现有自定义项进行更改时,此方法非常有用。当您重新调用时,AFT 会启动自定义管道以对 AFT 配置的账户进行更改。 event-source-based 重新调用允许您对个人账户、所有账户、根据其 OU 对账户或根据标签选择的账户应用自定义设置。

按照以下三个步骤重新调用 AFT 配置的账户的自定义设置。

第 1 步:将更改推送到全局或账户自定义存储库 git

您可以根据需要更新您的全局和账户自定义设置,并将更改推送回您的git存储库。此时,什么也没发生,自定义管道必须由事件源调用,如接下来的两个步骤所述。

步骤 2:启动 AWS Step 函数运行以重新调用自定义项

AFT 提供在 AFT 管理账户aft-invoke-customizations中调用的 AWS 步骤函数。该功能的目的是重新调用 AFT 配置的账户的自定义管道。

以下是您可以创建的事件架构(JSON 格式)的示例,用于将输入传递给 aft-invoke-customizations AWS Step 函数。

{ "include": [ { "type": "all" }, { "type": "ous", "target_value": [ "ou1","ou2"] }, { "type": "tags", "target_value": [ {"key1": "value1"}, {"key2": "value2"}] }, { "type": "accounts", "target_value": [ "acc1_ID","acc2_ID"] } ], "exclude": [ { "type": "ous", "target_value": [ "ou1","ou2"] }, { "type": "tags", "target_value": [ {"key1": "value1"}, {"key2": "value2"}] }, { "type": "accounts", "target_value": [ "acc1_ID","acc2_ID"] } ] }

示例事件架构显示,您可以选择要在重新调用过程中包含或排除的帐户。您可以按组织单位 (OU)、账户标签和账户 ID 进行筛选。如果您未应用任何筛选条件并添加声明"type":"all",则会重新调用所有 AFT 配置账户的自定义设置。

注意

如果您的 AWS Control Tower 版本是 1.6.5 或更高版本,则可以使用语法将嵌套的 OU 作为目标OU Name (ou-id-1234)。有关更多信息,请参阅以下主题GitHub

填写事件参数后,Step Functions 会运行并调用相应的自定义设置。AFT 一次最多可以调用 5 个自定义。Step Functions 会等待并循环,直到所有符合事件标准的账户都完成为止。

步骤 3:监控 AWS 步骤函数输出并观察 AWS 的 CodePipeline 运行情况

  • 生成的 Step Function 输出包含与 Step Function 输入事件源匹配的账户 ID。

  • 在 “开发者工具” CodePipeline 下导航到 AWS,查看账户 ID 的相应自定义渠道。

使用 AFT 账户自定义请求跟踪进行故障排除

基于包含目标账户和自定义请求 ID 的 AWS Lambda 发射日志的账户自定义工作流程。AFT 允许您使用 Amazon CloudWatch Logs 跟踪自定义请求并对其进行故障排除,方法是向您提供 L CloudWatch ogs Insights 查询,您可以使用这些查询按目标账户或自定义请求 ID 筛选与您的自定义请求相关的 CloudWatch 日志。有关更多信息,请参阅《亚马逊日志用户指南》中的使用 Amaz CloudWatch on Logs 分析 CloudWatch 日志数据

使用 AFT 的 CloudWatch 日志见解
  1. 打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/

  2. 在导航窗格中,选择日志,然后选择日志见解

  3. 选择 “查询”。

  4. 在 “示例查询” 下,选择 Terraform 的 Account Factor y,然后选择以下查询之一:

    • 按账户 ID 排列的自定义日志

      注意

      请务必将 “您的账户 ID” 替换为目标账户 ID

      fields @timestamp, log_message.account_id as target_account_id, log_message.customization_request_id as customization_request_id, log_message.detail as detail, @logStream | sort @timestamp desc | filter log_message.account_id == "YOUR-ACCOUNT-ID" and @message like /customization_request_id/
    • 按自定义请求 ID 排列的自定义日志

      注意

      请务必将 “您的自定义请求编号” 替换为您的自定义请求编号。您可以在 AFT 账户配置框架 AWS Step Functions 状态机的输出中找到您的自定义请求 ID。有关 AFT 账户配置框架的更多信息,请参阅 AFT 账户配置管道

      fields @timestamp, log_message.account_id as target_account_id, log_message.customization_request_id as customization_request_id, log_message.detail as detail, @logStream | sort @timestamp desc | filter log_message.customization_request_id == "YOUR-CUSTOMIZATION-REQUEST-ID"
  5. 选择查询后,请确保选择时间间隔,然后选择 “运行查询”。