

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

# CodePipeline 概述
<a name="cfct-codepipeline-overview"></a>

配置包需要亚马逊简单存储服务 (Amazon S3) S AWS CodePipeline ervice 和。配置包包含以下项目：
+ 一个清单文件
+ 一组配套模板
+ 其他 JSON 文件，用于描述和实现您的 AWS Control Tower 环境自定义

默认情况下，`_custom-control-tower-configuration.zip` 配置包按以下命名约定加载到 Amazon S3 存储桶中：

`custom-control-tower-configuration-{{accountID}}-{{region}}`.

**注意**  
 默认情况下，CfCT 创建一个 Amazon S3 存储桶来存储管道源。大多数客户都使用此默认设置。如果您已有 AWS CodeCommit 存储库，则可以将源位置更改为存储 AWS CodeCommit 库。有关更多信息，请参阅《*AWS CodePipeline 用户指南》 CodePipeline*[中的编辑管道](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-edit.html)。

*清单文件*是一个文本文件，描述了您可以部署哪些 AWS 资源来自定义 landing zone。 CodePipeline 执行以下任务：
+ 提取清单文件、一组配套模板及其他 JSON 文件
+ 执行清单和模板验证
+ 调用 CfCT 清单文件中的各部分来运行特定的[管道阶段](#code-pipeline-stages)。

通过自定义清单文件并从配置包文件名中删除下划线（\_）来更新配置包时，它会自动启动 AWS CodePipeline。

**记住下划线**  
示例配置包文件名以下划线（\_）开头，因此不会自动触发 AWS CodePipeline 。完成配置包的自定义后，上传不带下划线（\_）的文件 `custom-control-tower-configuration.zip`，以便在 AWS CodePipeline中触发部署。

## AWS CodePipeline 阶段
<a name="code-pipeline-stages"></a>

cfcT 管道需要几个 AWS CodePipeline 阶段才能实施和更新您的 AWS Control Tower 环境。

1. **源阶段**

   源阶段是初始阶段。您的自定义配置包将启动此管道阶段。的源 AWS CodePipeline 可以是 Amazon S3 存储桶，也可以是 AWS CodeCommit 存储库，可以在其中托管配置包。

1. **构建阶段**

   构建阶段 AWS CodeBuild 需要验证配置包的内容。这些检查包括使用 CloudFormation `validate-template`和测试`manifest.yaml`文件语法和架构，以及包中包含或远程托管的所有 CloudFormation 模板`cfn_nag`。如果清单文件和 CloudFormation 模板通过测试，管道将继续执行下一阶段。如果测试失败，您可以查看 CodeBuild 日志以确定问题，并根据需要编辑配置源文件。

1. **手动审批阶段（可选）**

   手动审批阶段为可选阶段。如果启用此阶段，它将提供对配置管道的额外控制。它会在部署期间暂停管道，直到获得审批。启动堆栈时，您可以通过将**管道审批阶段**参数编辑为**是**来选择手动审批。

1. **策略阶段**

   策略阶段调用服务控制策略 (SCP) 或资源控制策略 (RCP) 状态机来调用 AWS Organizations APIs 该创建或。 SCPs RCPs

1. **CloudFormation 资源阶段**

    CloudFormation 资源阶段调用堆栈集状态机来部署您在清单文件中提供的账户或组织单位列表 (OUs) 中指定的资源。状态机按照清单文件中指定的顺序创建 CloudFormation 资源。要指定资源依赖关系，请按照清单文件中指定资源的顺序进行排列。清单文件中资源的顺序是指定依赖关系的唯一方法。