

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

# 教程：使用创建管道 AWS CloudFormation
<a name="tutorials-cloudformation"></a>

这些示例提供了示例模板，允许您使用这些模板 AWS CloudFormation 来创建管道，该管道在每次源代码更改时都会将您的应用程序部署到您的实例。示例模板创建了一个可以在 AWS CodePipeline中查看的管道。该渠道通过 Amazon CloudWatch Events 检测已保存的更改是否到达。

**重要**  
作为创建管道的一部分，客户提供的 S3 工件存储桶将 CodePipeline 用于项目。（这与用于 S3 源操作的存储桶不同。） 如果 S3 工件存储桶与您的管道账户位于不同的账户中，请确保 S3 工件存储桶归其所有 AWS 账户 ，该存储桶是安全且可靠的。

**Topics**
+ [示例 1：使用创建 AWS CodeCommit 管道 AWS CloudFormation](tutorials-cloudformation-codecommit.md)
+ [示例 2：使用以下命令创建 Amazon S3 管道 AWS CloudFormation](tutorials-cloudformation-s3.md)

# 示例 1：使用创建 AWS CodeCommit 管道 AWS CloudFormation
<a name="tutorials-cloudformation-codecommit"></a>

本演练向您展示如何使用 AWS CloudFormation 控制台创建基础架构，其中包括连接到 CodeCommit 源存储库的管道。在本教程中，您将使用提供的示例模板文件创建资源堆栈，其中包括您的项目存储、管道和更改检测资源，例如您的 Amazon Ev CloudWatch ents 规则。在中创建资源堆栈后 AWS CloudFormation，您可以在 AWS CodePipeline 控制台中查看您的管道。该管道是一个分为两个阶段的管道，包括 CodeCommit 源阶段和 CodeDeploy 部署阶段。

**先决条件：**

您必须已创建以下资源才能与 AWS CloudFormation 示例模板一起使用：
+ 您必须已创建一个源存储库。您可以使用您在中创建的 AWS CodeCommit 存储库[教程：创建简单的管道（CodeCommit 存储库）](tutorials-simple-codecommit.md)。
+ 您必须已创建 CodeDeploy 应用程序和部署组。您可以使用在[教程：创建简单的管道（CodeCommit 存储库）](tutorials-simple-codecommit.md)中创建的 CodeDeploy 资源。
+ [选择以下链接之一下载用于创建管道的示例 AWS CloudFormation 模板文件：[YAML](samples/codepipeline-codecommit-events-yaml.zip) \$1 JSON](samples/codepipeline-codecommit-events-json.zip)

  解压缩该文件并将其放在您的本地计算机上。
+ 下载 [SampleApp\$1Linux.zip](samples/SampleApp_Linux.zip) 示例应用程序文件。



**在中创建您的管道 AWS CloudFormation**

1. 从 [SampleApp\$1Linux.zip](samples/SampleApp_Linux.zip) 解压文件，然后将文件上传到您的 AWS CodeCommit 存储库。您必须将解压缩的文件上传到存储库的根目录。您可以按照[第 2 步：向 CodeCommit 存储库中添加示例代码](tutorials-simple-codecommit.md#codecommit-add-code)中的说明将文件推送到您的存储库。

1. 打开 AWS CloudFormation 控制台并选择 “**创建堆栈**”。选择**使用新资源（标准）**。

1. 在**指定模板**下，选择**上传模板**。选中**选择文件**，然后从您的本地计算机选择模板文件。选择**下一步**。

1. 在**堆栈名称**中，输入管道的名称。将显示由示例模板指定的参数。输入以下参数：

   1. 在中 **ApplicationName**，输入您的 CodeDeploy应用程序的名称。

   1. 在中 **BetaFleet**，输入您的 CodeDeploy 部署组的名称。

   1. 在中 **BranchName**，输入要使用的存储库分支。

   1. 在中 **RepositoryName**，输入您的 CodeCommit 源存储库的名称。

1. 选择**下一步**。在接下来的页面上接受默认值，然后选择**下一步**。

1. 在 “**能力**” 中，选择 “**我确认 AWS CloudFormation 可能会创建 IAM 资源**”，然后选择 “**创建堆栈**”。

1. 在堆栈创建完成后，查看事件列表以检查是否存在任何错误。

   **故障排查**

   在中创建管道的 IAM 用户 AWS CloudFormation 可能需要额外的权限才能为管道创建资源。策略中需要以下权限才能 AWS CloudFormation 为 CodeCommit管道创建所需的 Amazon E CloudWatch vents 资源：

   ```
   {
        "Effect": "Allow",
        "Action": [
           "events:PutRule",
           "events:PutEvents",
           "events:PutTargets",
           "events:DeleteRule",
           "events:RemoveTargets",
           "events:DescribeRule"
        ],
        "Resource": "resource_ARN"
   }
   ```

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，网址为[https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/)。

   在**管道**下，选择您的管道并选择**查看**。该图显示了您的管道源和部署阶段。
**注意**  
要查看已创建的管道，请在 CloudFormation中找到堆栈的**资源**选项卡下的**逻辑 ID** 列。记下管道的**物理 ID** 列中的名称。在中 CodePipeline，您可以在创建堆栈的区域中查看具有相同物理 ID（管道名称）的管道。

1. 在您的源存储库中，提交并推送更改。您的更改检测资源会拾取更改，并且您的管道启动。

# 示例 2：使用以下命令创建 Amazon S3 管道 AWS CloudFormation
<a name="tutorials-cloudformation-s3"></a>

本演练向您展示如何使用 AWS CloudFormation 控制台创建基础设施，其中包括连接到 Amazon S3 源存储桶的管道。在本教程中，您将使用提供的示例模板文件创建资源堆栈，其中包括您的源存储桶、项目存储、管道和更改检测资源，例如您的 Amazon Ev CloudWatch ents 规则和 CloudTrail跟踪。在中创建资源堆栈后 AWS CloudFormation，您可以在 AWS CodePipeline 控制台中查看您的管道。该管道是一个分为两个阶段的管道，包括一个 Amazon S3 源阶段和一个 CodeDeploy部署阶段。

**先决条件：**

您必须拥有以下资源才能与 AWS CloudFormation 示例模板一起使用：
+ 您必须已创建 Amazon EC2 实例，并在实例上安装了 CodeDeploy 代理。您必须已创建 CodeDeploy 应用程序和部署组。使用您在中创建的 Amazon EC2 和 CodeDeploy 资源[教程：创建简单的管道（CodeCommit 存储库）](tutorials-simple-codecommit.md)。
+ 选择以下链接下载用于使用 Amazon S3 源创建管道的示例 AWS CloudFormation 模板文件：
  + 为您的管道下载示例模板：[YAML](samples/codepipeline-s3-events-yaml.zip) \$1 [JSON](samples/codepipeline-s3-events-json.zip)
  + [下载 CloudTrail 存储桶和跟踪的示例模板：[YAML](samples/codepipeline-s3-cloudtrail-yaml.zip) \$1 JSON](samples/codepipeline-s3-cloudtrail-json.zip)
  + 解压缩文件并将其放在您的本地计算机上。
+ 从 [SampleApp\$1Linux.zip](samples/SampleApp_Linux.zip) 下载示例应用程序。

  将 .zip 文件保存在本地计算机上。创建堆栈后，您将上传 .zip 文件。

**在中创建您的管道 AWS CloudFormation**

1. 打开 AWS CloudFormation 控制台，然后选择 “**创建堆栈**”。选择**使用新资源（标准）**。

1. 在**选择一个模板**中，选择**上传模板**。选中**选择文件**，然后从您的本地计算机选择模板文件。选择**下一步**。

1. 在**堆栈名称**中，输入管道的名称。将显示由示例模板指定的参数。输入以下参数：

   1. 在中 **ApplicationName**，输入您的 CodeDeploy 应用程序的名称。您可以替换 `DemoApplication` 默认名称。

   1. 在中 **BetaFleet**，输入您的 CodeDeploy 部署组的名称。您可以替换 `DemoFleet` 默认名称。

   1. 在 **SourceObjectKey** 中输入 `SampleApp_Linux.zip`。在模板创建存储桶和管道后，将此文件上传到存储桶。

1. 选择**下一步**。在接下来的页面上接受默认值，然后选择**下一步**。

1. 在 “**能力**” 中，选择 “**我确认 AWS CloudFormation 可能会创建 IAM 资源**”，然后选择 “**创建堆栈**”。

1. 在堆栈创建完成后，查看事件列表以检查是否存在任何错误。

   **故障排查**

   在中创建管道的 IAM 用户 AWS CloudFormation 可能需要额外的权限才能为管道创建资源。策略中需要以下权限 AWS CloudFormation 才能允许为 Amazon S3 管道创建所需的 Amazon Ev CloudWatch ents 资源：

   ```
   {
        "Effect": "Allow",
        "Action": [
           "events:PutRule",
           "events:PutEvents",
           "events:PutTargets",
           "events:DeleteRule",
           "events:RemoveTargets",
           "events:DescribeRule"
        ],
        "Resource": "resource_ARN"
   }
   ```

1. 在 CloudFormation堆栈的 “**资源**” 选项卡中，查看为您的堆栈创建的资源。
**注意**  
要查看已创建的管道，请在 CloudFormation中找到堆栈的**资源**选项卡下的**逻辑 ID** 列。记下管道的**物理 ID** 列中的名称。在中 CodePipeline，您可以在创建堆栈的区域中查看具有相同物理 ID（管道名称）的管道。

   选择名称中包含 `sourcebucket` 标签的 S3 存储桶，例如 `s3-cfn-codepipeline-sourcebucket-y04EXAMPLE.`。不要选择管道构件存储桶。

   源存储桶为空，因为资源是由 CloudFormation新创建的。打开 Amazon S3 控制台，并找到您的 `sourcebucket` 桶。选择 **Upload (上传)**，然后按照说明上传 `SampleApp_Linux.zip` .zip 文件。
**注意**  
当 Amazon S3 是管道的源提供程序时，您必须将所有源文件打包为单个 .zip 文件上传到桶。否则，源操作将失败。

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，网址为[https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/)。

   在**管道**下，选择您的管道，然后选择**查看**。该图显示了您的管道源和部署阶段。

1. 完成以下过程中的步骤来创建您的 AWS CloudTrail 资源。

**在中创建您的 AWS CloudTrail 资源 AWS CloudFormation**

1. 打开 AWS CloudFormation 控制台，然后选择 “**创建堆栈**”。

1. 在**选择一个模板**中，选择**将模板上传到 Amazon S3**。选择 “**浏览**”，然后从本地计算机上为 AWS CloudTrail 资源选择模板文件。选择**下一步**。

1. 在**堆栈名称**中，输入资源堆栈的名称。将显示由示例模板指定的参数。输入以下参数：

   1. 在中 **SourceObjectKey**，接受示例应用程序的 zip 文件的默认值。

1. 选择**下一步**。在接下来的页面上接受默认值，然后选择**下一步**。

1. 在 “**能力**” 中，选择 “**我确认 AWS CloudFormation 可能会创建 IAM 资源**”，然后选择 “**创建**”。

1. 在堆栈创建完成后，查看事件列表以检查是否存在任何错误。

   策略中需要以下权限 AWS CloudFormation 才能创建 Amazon S3 管道所需的 CloudTrail 资源：

   ```
   {
        "Effect": "Allow",
        "Action": [
           "cloudtrail:CreateTrail",
           "cloudtrail:DeleteTrail",
           "cloudtrail:StartLogging",
           "cloudtrail:StopLogging",
           "cloudtrail:PutEventSelectors"
        ],
        "Resource": "resource_ARN"
   }
   ```

1. 登录 AWS 管理控制台 并打开 CodePipeline 控制台，网址为[https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/)。

   在**管道**下，选择您的管道，然后选择**查看**。该图显示了您的管道源和部署阶段。

1. 在您的源存储桶中，提交并推送更改。您的更改检测资源会拾取更改，并且您的管道启动。