本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AFT 账户预置管道
管道的账户预置阶段完成后,AFT 框架将继续运行。它会自动执行一系列步骤,以确保在账户自定义阶段开始之前,新预置的账户已具备详细信息。
以下是 AFT 管道执行的后续步骤。
-
验证账户请求输入。
-
检索有关已预置账户的信息,例如账户 ID。
-
将账户元数据存储在 AFT 管理账户的 DynamoDB 表中。
-
在新配置的账户中创建 AWSAFTExecutionIAM 角色。AFT 将担任此角色来执行账户自定义阶段,因为此角色授予对 Account Factory 产品组合的访问权限。
-
应用您在账户请求输入参数中提供的账户标签。
-
应用您在部署 AFT 时选择的 AFT 功能选项。
-
应用您提供的 AFT 账户预置自定义设置。下一部分将详细介绍如何在
git
存储库中使用 AWS Step Functions 状态机设置这些自定义项。此阶段有时被称为账户预置框架阶段。这是核心预置流程的一部分,但是您之前已经设置了一个提供自定义集成的框架作为账户预置工作流的一部分,然后在下个阶段,系统将向账户添加其他自定义项。 -
对于配置的每个账户,它都会 AWS CodePipeline 在 AFT 管理账户中创建一个账户,该账户将运行以执行(下一个全局)账户自定义阶段。
-
为每个预置账户(和目标账户)调用账户自定义管道。
-
向 SNS 主题发送成功或失败通知,您可以从该主题中检索消息。
使用状态机设置账户预置框架自定义
如果您在预置账户之前设置了自定义的非 Terraform 集成,则这些自定义项将包含在您的 AFT 账户配置工作流中。例如,您可能需要进行某些自定义,以确保 AFT 创建的所有账户都符合组织的标准和策略(例如安全标准),并且在系统添加其他自定义项之前,这些标准可以添加到账户中。在接下来的全局账户自定义阶段开始之前,系统将在每个预置账户上实施这些账户预置框架自定义设置。
注意
本部分中描述的 AFT 功能适用于理解 AWS Step Functions 功能的高级用户。作为替代方案,我们建议您在账户自定义阶段使用全局帮助程序。
AFT 账户预置框架会调用由您定义的 AWS Step Functions 状态机来实施您的自定义设置。请参阅 AWS Step Functions 文档,详细了解可能的状态机集成。
下面是一些常用集成。
-
采用您选择的语言的 AWS Lambda 函数
-
使用 Docker 容器的 AWS ECS 或 AWS Fargate 任务
-
使用自定义工作程序的 AWS Step Functions 活动,托管在 AWS 中或本地
-
Amazon SNS 或 SQS 集成
如果未定义 AWS Step Functions 状态机,则该阶段将在无操作的情况下通过。要创建 AFT 账户预置自定义状态机,请按照创建 AFT 账户预置自定义状态机中的说明进行操作。添加自定义设置之前,请确保您满足先决条件。
这些类型的集成不是 AWS Control Tower 的一部分,无法在 AFT 账户自定义的 API 之前的全局阶段添加这些集成。不过,AFT 管道允许您将这些自定义项设置为预置流程的一部分,它们将在预置工作流中运行。如以下各部分所述,在开始 AFT 账户预置阶段之前,您必须通过提前创建状态机来实施这些自定义设置。
创建状态机的先决条件
-
具有经过全面部署的 AFT。有关 AFT 部署的更多信息,请参阅部署 AWS Control Tower Account Factory for Terraform(AFT)。
-
在您的环境中为 AFT 账户预置自定义设置
git
存储库。请参阅部署后步骤了解更多信息。
创建 AFT 账户预置自定义状态机
第 1 步:修改状态机定义
修改示例 customizations.asl.json
状态机定义。该示例位于您在部署后步骤中所设置的用于存储 AFT 账户预置自定义项的 git
存储库中。要了解有关状态机定义的更多信息,请参阅《AWS Step Functions 开发人员指南》。
第 2 步:包含相应的 Terraform 配置
将带有 .tf
扩展的 Terraform 文件与自定义集成的状态机定义放在同一个 git
存储库中。例如,如果您选择在状态机任务定义中调用 Lambda 函数,则需要将 lambda.tf
文件包含在同一目录中。确保包含自定义配置所需的 IAM 角色和权限。
当您提供适当的输入时,AFT 管道会自动调用您的状态机,并在 AFT 账户预置框架阶段部署您的自定义设置。
重新启动 AFT 账户预置框架和自定义
AFT 为通过 AFT 管道发布的每个账户执行账户预置框架和自定义步骤。要重新启动账户预置自定义,您可以使用以下两种方法之一:
-
在账户请求存储库中对现有账户进行任何更改。
-
使用 AFT 预置新账户。