示例 2:使用 AWS CloudFormation 创建 Amazon S3 管道
本演练介绍如何使用 AWS CloudFormation 控制台创建基础设施,该基础设施包括连接到 Amazon S3 源桶的管道。在本教程中,您可使用提供的示例模板文件创建您的资源堆栈,其中包含您的源桶、构件存储、管道以及更改检测资源(例如,您的 Amazon CloudWatch Events 规则和 CloudTrail 跟踪)。在 AWS CloudFormation 中创建资源堆栈后,您可以在 AWS CodePipeline 控制台中查看您的管道。该管道是一个两阶段管道,具有一个 Amazon S3 源阶段和一个 CodeDeploy 部署阶段。
先决条件
您必须已创建以下资源以便与 AWS CloudFormation 示例模板结合使用:
-
您必须已创建 Amazon EC2 实例,并在该实例上安装 CodeDeploy 代理。您必须已创建 CodeDeploy 应用程序和部署组。使用您在教程:创建一个简单的管道(CodeCommit 存储库)中创建的 Amazon EC2 和 CodeDeploy 资源。
-
选择以下链接以下载用于通过 Amazon S3 源创建管道的示例 AWS CloudFormation 模板文件:
-
从 SampleApp_Linux.zip 下载示例应用程序。
将 .zip 文件保存在本地计算机上。创建堆栈后,您将上传 .zip 文件。
在 AWS CloudFormation 中创建管道
-
打开 AWS CloudFormation 控制台并选择创建堆栈。选择使用新资源(标准)。
-
在选择一个模板中,选择上传模板。选中选择文件,然后从您的本地计算机选择模板文件。选择下一步。
-
在堆栈名称中,输入管道的名称。将显示由示例模板指定的参数。输入以下参数:
-
在 ApplicationName 中,输入您的 CodeDeploy 应用程序的名称。您可以替换
DemoApplication默认名称。 -
在 BetaFleet 中,输入您的 CodeDeploy 部署组的名称。您可以替换
DemoFleet默认名称。 -
在 SourceObjectKey 中,输入
SampleApp_Linux.zip。在模板创建存储桶和管道后,将此文件上传到存储桶。
-
-
选择下一步。在接下来的页面上接受默认值,然后选择下一步。
-
在功能中,选择我确认 AWS CloudFormation 可能创建 IAM 资源,然后选择创建堆栈。
-
在堆栈创建完成后,查看事件列表以检查是否存在任何错误。
故障排查
正在 AWS CloudFormation 中创建管道的 IAM 用户可能需要额外的权限才能为管道创建资源。策略中需要以下权限才能允许 AWS CloudFormation 为 Amazon S3 管道创建所需的 Amazon CloudWatch Events 资源:
{ "Effect": "Allow", "Action": [ "events:PutRule", "events:PutEvents", "events:PutTargets", "events:DeleteRule", "events:RemoveTargets", "events:DescribeRule" ], "Resource": "resource_ARN" } -
在 CloudFormation 中,在您的堆栈的 Resources (资源) 选项卡中,查看已为您的堆栈创建的资源。
注意
要查看已创建的管道,请在 CloudFormation 中找到堆栈的资源选项卡下的逻辑 ID 列。记下管道的物理 ID 列中的名称。在 CodePipeline 中,您可以在创建堆栈的区域中查看具有相同物理 ID(管道名称)的管道。
选择名称中包含
sourcebucket标签的 S3 存储桶,例如s3-cfn-codepipeline-sourcebucket-y04EXAMPLE.。不要选择管道构件存储桶。源存储桶为空,因为资源是由 CloudFormation 新创建的。打开 Amazon S3 控制台,并找到您的
sourcebucket桶。选择 Upload (上传),然后按照说明上传SampleApp_Linux.zip.zip 文件。注意
当 Amazon S3 是管道的源提供程序时,您必须将所有源文件打包为单个 .zip 文件上传到桶。否则,源操作将失败。
-
通过以下网址登录 AWS 管理控制台 并打开 CodePipeline 控制台:https://console.aws.amazon.com/codepipeline/
。 在管道下,选择您的管道,然后选择查看。该图显示了您的管道源和部署阶段。
-
完成以下过程中的步骤来创建您的 AWS CloudTrail 资源。
在 AWS CloudTrail 中创建 AWS CloudFormation 资源
-
打开 AWS CloudFormation 控制台并选择创建堆栈。
-
在选择一个模板中,选择将模板上传到 Amazon S3。选择浏览,然后从您的本地计算机选择 AWS CloudTrail 资源的模板文件。选择下一步。
-
在堆栈名称中,输入资源堆栈的名称。将显示由示例模板指定的参数。输入以下参数:
-
在 SourceObjectKey 中,对示例应用程序的 zip 文件接受默认值。
-
-
选择下一步。在接下来的页面上接受默认值,然后选择下一步。
-
在功能中,选择我确认 AWS CloudFormation 可能创建 IAM 资源,然后选择创建。
-
在堆栈创建完成后,查看事件列表以检查是否存在任何错误。
策略中需要以下权限才能允许 AWS CloudFormation 为 Amazon S3 管道创建所需的 CloudTrail 资源:
{ "Effect": "Allow", "Action": [ "cloudtrail:CreateTrail", "cloudtrail:DeleteTrail", "cloudtrail:StartLogging", "cloudtrail:StopLogging", "cloudtrail:PutEventSelectors" ], "Resource": "resource_ARN" } -
通过以下网址登录 AWS 管理控制台 并打开 CodePipeline 控制台:https://console.aws.amazon.com/codepipeline/
。 在管道下,选择您的管道,然后选择查看。该图显示了您的管道源和部署阶段。
-
在您的源存储桶中,提交并推送更改。您的更改检测资源会拾取更改,并且您的管道启动。