账户自定义 - AWS Control Tower

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

账户自定义

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

概述

在您选择的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/python 文件夹下。

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

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

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

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

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

注意

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

重新调用自定义设置

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

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

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

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

步骤 2:启动 Ste AWS p Function 运行以重新调用自定义

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

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

{ "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已配置帐户的自定义设置。

注意

如果你的 Cont AWS rol Tower Account Factory for Terraform (AFT) 版本是 1.6.5 或更高版本,你可以OUs使用语法嵌套定位)。OU Name (ou-id-1234有关更多信息,请参阅以下主题GitHub

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

第 3 步:监控 AWS Step Function 输出并观察AWS CodePipeline 运行情况

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

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

AFT账户自定义请求跟踪疑难解答

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

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

  2. 在导航窗格中,选择日志,然后选择日志洞察

  3. 选择查询

  4. 示例查询下,选择 Account Factory for Terraform,然后选择以下查询之一:

    • 按账户 ID 筛选自定义日志

      注意

      请务必"YOUR-ACCOUNT-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 筛选自定义日志

      注意

      请务必"YOUR-CUSTOMIZATION-REQUEST-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. 选择查询后,请确保选择时间间隔,然后选择运行查询