教程:创建一个简单的管道(S3 存储桶) - AWS CodePipeline

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

教程:创建一个简单的管道(S3 存储桶)

创建管道的最简单方法是在 AWS CodePipeline 控制台中使用创建管道向导。

在本教程中,您将创建一个两阶段管道,该管道使用受版本控制的 S3 源存储桶 CodeDeploy 并发布示例应用程序。

注意

当 Amazon S3 是您的管道的源提供程序时,您可以将一个或多个源文件压缩到单个 .zip 文件中,然后将 .zip 文件上传到源桶。您也可以上传单个解压缩的文件;但是,需要 .zip 文件的下游操作将失败。

重要

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

创建此简单管道后,您将另外添加一个阶段,禁用然后再启用阶段之间的过渡。

重要

在此过程中,您在管道中添加的许多操作都涉及在创建管道之前需要创建的 AWS 资源。 AWS 源操作的资源必须始终在您创建管道的同一 AWS 区域创建。例如,如果您在美国东部(俄亥俄州)地区创建管道,则您的 CodeCommit 存储库必须位于美国东部(俄亥俄州)区域。

您可以在创建管道时添加跨区域操作。 AWS 跨区域操作的资源必须位于您计划执行操作的同一 AWS 区域。有关更多信息,请参阅 在中添加跨区域操作 CodePipeline

在开始之前,您应完成入门 CodePipeline中的先决条件。

步骤 1:为您的应用程序创建 S3 源存储桶

您可以将源文件或应用程序存储在任何受版本控制的位置。在本教程中,您将为示例应用程序文件创建一个 S3 桶,并对该桶启用版本控制。启用版本控制后,您可将示例应用程序复制到该存储桶。

创建 S3 存储桶
  1. 登录控制台,网址为 AWS Management Console。打开 S3 控制台。

  2. 请选择创建存储桶

  3. 对于存储桶名称,输入您的存储桶的名称(例如 awscodepipeline-demobucket-example-date)。

    注意

    由于 Amazon S3 中的所有桶名称必须是唯一的,因此请使用您自己的名称,而不是示例中显示的名称。您可以通过添加日期来更改示例名称。请记下该名称,因为您需要在本教程的其余部分中使用该名称。

    区域中,选择您要在其中创建管道的区域(例如美国西部(俄勒冈州)),然后选择创建桶

  4. 创建存储桶后,系统会显示成功横幅。选择转到存储桶详细信息

  5. 属性选项卡上,选择版本控制。选择启用版本控制,然后选择保存

    启用版本控制后,Amazon S3 会在桶中存储每个对象的每个版本。

  6. 权限选项卡上,保留默认设置。有关 S3 存储桶和对象权限的更多信息,请参阅在策略中指定权限

  7. 接下来,下载一个示例,并将该示例保存到本地计算机上的文件夹或目录中。

    1. 选择以下选项之一。如果要对 Windows Server 实例执行本教程中的步骤,请选择 SampleApp_Windows.zip

      • 如果您想使用部署到亚马逊 Linux 实例 CodeDeploy,请在此处下载示例应用程序:SampleApp_Linux.zip

      • 如果你想使用部署到 Windows 服务器实例 CodeDeploy,请在此处下载示例应用程序:SampleApp_Windows.zip

      示例应用程序包含以下用于部署的文件 CodeDeploy:

      • appspec.yml— 应用程序规范文件(AppSpec文件)是一个YAML格式的文件, CodeDeploy 用于管理部署。有关该 AppSpec 文件的更多信息,请参阅《AWS CodeDeploy 用户指南》中的CodeDeploy AppSpec 文件参考

      • index.html - 索引文件包含已部署的示例应用程序的主页。

      • LICENSE.txt - 许可证文件包含示例应用程序的许可证信息。

      • 脚本文件 - 示例应用程序使用脚本将文本文件写入实例上的某个位置。为多个 CodeDeploy 部署生命周期事件分别写入一个文件,如下所示:

        • (仅限 Linux 示例)scripts 文件夹 - 该文件夹包含以下 shell 脚本,用于安装依赖项以及启动和停止自动部署的示例应用程序:install_dependenciesstart_serverstop_server

        • (仅限 Windows 示例)before-install.bat - 此批处理脚本用于 BeforeInstall 部署生命周期事件,它将运行以删除此示例在先前部署中写入的旧文件,并在您的实例上创建一个位置用于写入新文件。

    2. 下载压缩(zipped)文件。不要解压缩该文件。

  8. 在 Amazon S3 控制台中,为您的桶上传文件:

    1. 选择上传

    2. 拖放文件或选择添加文件并通过浏览找到该文件。

    3. 选择上传

第 2 步:创建亚马逊 EC2 Windows 实例并安装 CodeDeploy 代理

注意

本教程提供了创建亚马逊 EC2 Windows 实例的示例步骤。有关创建 Amazon EC2 Linux 实例的示例步骤,请参阅步骤 3:创建 Amazon EC2 Linux 实例并安装 CodeDeploy 代理。当系统提示您输入要创建的实例数时,请指定 2 个实例。

在此步骤中,您将创建 Windows Server Amazon EC2 实例,您将在其中部署示例应用程序。作为此过程的一部分,您将创建一个实例角色,其策略允许在实例上安装和管理 CodeDeploy 代理。 CodeDeploy 代理是一个软件包,允许在 CodeDeploy 部署中使用实例。您还可以附加策略,允许实例获取 CodeDeploy 代理用于部署您的应用程序的文件,并允许该实例由其管理SSM。

创建实例角色
  1. 打开IAM控制台,网址为 https://console.aws.amazon.com/iam/)。

  2. 在控制台控制面板中,选择角色

  3. 选择创建角色

  4. 选择受信任实体的类型下,选择 AWS 服务。在 “选择用例” 下,选择 EC2,然后选择 “下一步:权限”。

  5. 搜索名为 AmazonEC2RoleforAWSCodeDeploy 的策略并将其选中。

  6. 搜索名为 AmazonSSMManagedInstanceCore 的策略并将其选中。选择下一步:标签

  7. 选择下一步:审核。输入角色的名称(例如 EC2InstanceRole)。

    注意

    记下您的角色名称以便在下一步中使用。在创建实例时选择此角色。

    选择 Create role(创建角色)。

启动实例
  1. 打开 Amazon EC2 控制台,网址为https://console.aws.amazon.com/ec2/

  2. 在侧面导航栏中,选择实例,然后从页面顶部选择启动实例

  3. 名称和标签下,对于名称,输入 MyCodePipelineDemo。这会为实例分配标签 Name 和标签值 MyCodePipelineDemo。稍后,您将创建一个将示例 CodeDeploy 应用程序部署到实例的应用程序。 CodeDeploy根据标签选择要部署的实例。

  4. 应用程序和操作系统映像(Amazon 机器映像) 下,选择 Windows 选项。(这被描述AMI为微软 Windows Server 2019 Base,被标记为 “符合免费套餐资格”,可以在快速入门下找到...)

  5. 实例类型下,选择符合免费套餐条件的 t2.micro 类型作为实例的硬件配置。

  6. 密钥对(登录) 下,选择或创建密钥对。

    也可以选择继续操作但不提供密钥对

    注意

    在本教程中,您可以继续操作而不提供密钥对。SSH要使用连接您的实例,请创建或使用 key pair。

  7. 网络设置下,执行以下操作:

    自动分配公有 IP 中,确保状态为启用

    • 分配安全组旁边,选择创建新安全组

    • 在 “来源类型” 行中 SSH,选择 “我的 IP”。

    • 选择 “添加安全组”,选择 HTTP,然后在 “来源类型” 下选择 “我的 IP”。

  8. 展开高级详细信息。在IAM实例配置文件中,选择您在上一个过程中创建的IAM角色(例如,EC2InstanceRole)。

  9. 摘要下的实例数下,输入 2

  10. 选择启动实例

  11. 选择查看所有实例以关闭确认页面并返回控制台。

  12. 您可以在实例页面上查看启动的状态。启动实例时,其初始状态为 pending。实例启动后,其状态更改为running,并获得一个公共DNS名称。(如果未显示 DNS “公开” 列,请选择 “显示 /隐藏” 图标,然后选择 “公开 DNS”。)

  13. 可能需要花几分钟时间,实例才能准备好让您连接到它。检查您的实例是否通过了状态检查。您可以在状态检查列中查看此信息。

步骤 3:在中创建应用程序 CodeDeploy

在中 CodeDeploy,应用程序是您要部署的代码的标识符,以名称的形式出现。 CodeDeploy 使用此名称来确保在部署期间引用修订版、部署配置和部署组的正确组合。在本教程稍后创建管道时,您可以选择在此步骤中创建的 CodeDeploy 应用程序的名称。

您首先要创建一个 CodeDeploy 要使用的服务角色。如果已创建服务角色,则无需创建其他服务角色。

创建 CodeDeploy 服务角色
  1. 打开IAM控制台,网址为 https://console.aws.amazon.com/iam/)。

  2. 在控制台控制面板中,选择角色

  3. 选择 Create role(创建角色)。

  4. 选择受信任实体下,选择 AWS 服务。在 Use case(使用案例)下,选择 CodeDeployCodeDeploy从列出的选项中进行选择。选择下一步AWSCodeDeployRole 托管策略已附加到角色。

  5. 选择下一步

  6. 输入角色的名称(例如 CodeDeployRole),然后选择创建角色

要在中创建应用程序 CodeDeploy
  1. https://console.aws.amazon.com/codede ploy 上打开 CodeDeploy 控制台。

  2. 如果未出现 “应用程序” 页面,请在 AWS CodeDeploy 菜单上选择 “应用程序”。

  3. 选择创建应用程序

  4. Application name(应用程序名称)中,输入 MyDemoApplication

  5. 计算平台中,选择 EC2/本地

  6. 选择创建应用程序

要在中创建部署组 CodeDeploy
  1. 在显示应用程序的页面上,选择创建部署组

  2. Deployment group name(部署组名称)中,输入 MyDemoDeploymentGroup

  3. 服务角色中,选择您之前创建的服务角色。您使用的服务角色必须至少 AWS CodeDeploy 具有创建服务角色中所述的信任和权限 CodeDeploy。要获取服务角色ARN,请参阅获取服务角色ARN(控制台)

  4. 部署类型下,选择就地

  5. 在 “环境配置” 下,选择 Amazon EC2 实例。在字段中选择名称,然后在字段中输入 MyCodePipelineDemo

    重要

    您必须为此处的 Name 键选择与您在创建EC2实例时分配给实例相同的值。如果您使用 MyCodePipelineDemo 以外的内容标记实例,则在此处,请务必使用该内容。

  6. 在 “使用 S AWS ystems Manager 配置代理” 下,选择 “立即并安排更新”。这将在实例上安装代理。Windows 实例已经配置了SSM代理,现在将使用 CodeDeploy 代理进行更新。

  7. 部署设置下,选择 CodeDeployDefault.OneAtaTime

  8. 负载均衡器下,确保未选中启用负载均衡框。您无需为此示例设置负载均衡器或选择目标组。取消选中此复选框后,不会显示负载均衡器选项。

  9. 高级部分中,保留默认值。

  10. 选择 Create deployment group(创建部署组)

第 4 步:在中创建您的第一个管道 CodePipeline

在这部分的教程中,您将创建管道。示例将自动通过管道运行。

创建 CodePipeline 自动发布流程
  1. 登录 AWS Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home

  2. 欢迎页面、入门页面或管道页面上,选择创建管道

  3. 步骤 1:选择管道设置管道名称中,输入 MyFirstPipeline

    注意

    如果您为管道选择另一个名称,请确保在本教程的剩下部分使用该名称替代 MyFirstPipeline。创建管道后,便无法再更改其名称。管道名称受一些限制的约束。有关更多信息,请参阅 中的配额 AWS CodePipeline

  4. CodePipeline 提供 V1 和 V2 类型的管道,它们的特性和价格各不相同。V2 类型是您在控制台中唯一可以选择的类型。有关更多信息,请参阅管道类型。有关定价的信息 CodePipeline,请参阅定价

  5. 服务角色中,执行下列操作之一:

    • 选择 “新建服务角色” CodePipeline 以允许在中创建新的服务角色IAM。

    • 选择 “现有服务角色” 以使用已在中创建的服务角色IAM。在角色名称中,从列表中选择您的服务角色。

  6. 高级设置中的各项设置保留为默认值,然后选择下一步

  7. 步骤 2: 添加源阶段源提供程序中,选择 Amazon S3。在存储桶中,输入您在步骤 1:为您的应用程序创建 S3 源存储桶中创建的 S3 存储桶的名称。在S3 对象键中,输入带或不带文件路径的对象键。请记住加上文件的扩展名。例如,对于 SampleApp_Windows.zip,输入示例文件名,如以下示例所示:

    SampleApp_Windows.zip

    选择下一步

    更改检测选项下面,保留默认值。这 CodePipeline 允许使用 Amazon E CloudWatch vents 来检测源存储桶中的更改。

    选择下一步

  8. 步骤 3:添加构建阶段中,选择跳过构建阶段,并通过再次选择跳过接受警告消息。选择下一步

  9. 步骤 4:添加部署阶段中,在部署提供程序中,选择CodeDeploy 。“区域” 字段默认为与您的管道 AWS 区域 相同。在应用程序名称中,输入 MyDemoApplication,或选择刷新按钮,然后从列表中选择应用程序名称。在部署组中,输入 MyDemoDeploymentGroup 或者从列表中选择它,然后选择下一步

    注意

    名称“Deploy”是在步骤 4:添加部署阶段步骤中创建的阶段的默认名称,就像“Source”是管道第一阶段的默认名称一样。

  10. 步骤 5:审核中,查看信息,然后选择创建管道

  11. 管道开始运行。当 CodePipeline 示例向部署中的每个 Amazon EC2 实例部署网页时,您可以查看进度以及成功和失败消息。 CodeDeploy

恭喜您!您刚刚在中创建了一个简单的管道 CodePipeline。管道具有两个阶段:

  • 一个名为 Source 的源阶段,此阶段会检测存储在 S3 存储桶中的受版本控制的示例应用程序中的更改,并将这些更改提取到管道中。

  • 部署阶段,用于将这些更改部署到EC2实例。 CodeDeploy

现在,验证结果。

验证您的管道是否已成功运行
  1. 查看管道的初始进度。每个阶段的状态将从还没有任何执行变为正在进行,然后变为 成功失败。管道将在几分钟内完成首次运行。

  2. 操作状态显示成功之后,在部署阶段的状态区域中,选择详细信息。这将打开 CodeDeploy 控制台。

  3. 部署组选项卡的部署生命周期事件下,选择一个实例 ID。此操作将打开 EC2 控制台。

  4. 在 “描述” 选项卡的 “公开” 中DNS,复制地址,然后将其粘贴到 Web 浏览器的地址栏中。查看上传到 S3 存储桶的示例应用程序的索引页面。

    此网页为您上传到 S3 桶的示例应用程序显示。

有关阶段和操作以及管道如何工作的更多信息,请参阅CodePipeline 概念

(可选)步骤 5:在管道中添加另一个阶段

现在,在管道中添加另一个阶段,使用 CodeDeploy从暂存服务器部署到生产服务器。首先,在中创建另一个部署组 CodeDeploy。 CodePipelineDemoApplication 然后,您添加一个包含使用此部署组的操作的阶段。要添加另一个阶段,您可以使用 CodePipeline 控制台或在 AWS CLI JSON文件中检索和手动编辑管道的结构,然后运行update-pipeline命令使用所做的更改更新管道。

在中创建第二个部署组 CodeDeploy

注意

在本教程的这一部分中,您将创建第二个部署组,但要部署到与以前相同的 Amazon EC2 实例。这仅用于演示目的。它被故意设计为无法向您显示错误是如何显示的。 CodePipeline

要在中创建第二个部署组 CodeDeploy
  1. https://console.aws.amazon.com/codede ploy 上打开 CodeDeploy 控制台。

  2. 选择应用程序,然后在应用程序列表中选择 MyDemoApplication

  3. 选择部署组选项卡,然后选择创建部署组

  4. 创建部署组页面的部署组名称中,输入第二个部署组的名称(例如 CodePipelineProductionFleet)。

  5. 服务角色中,选择与初始部署相同的 CodeDeploy 服务角色(不是 CodePipeline 服务角色)。

  6. 部署类型下,选择就地

  7. 在 “环境配置” 下,选择 Amazon EC2 实例。在框中选择名称,然后在框中从列表中选择 MyCodePipelineDemo。保留部署设置的默认配置。

  8. 部署配置中,选择 CodeDeployDefault.OneAtaTime

  9. 负载均衡器中,取消选择启用负载均衡

  10. 选择 Create deployment group(创建部署组)

将部署组作为另一个阶段添加到管道中

现在您有了另一个部署组,您可以添加一个阶段,该阶段使用此部署组部署到您之前使用的相同EC2实例。您可以使用 CodePipeline控制台或 AWS CLI 添加此阶段。

创建第三个阶段(控制台)

您可以使用 CodePipeline 控制台添加使用新部署组的新阶段。由于此部署组正在部署到您已经使用的EC2实例,因此此阶段的部署操作将失败。

  1. 登录 AWS Management Console 并打开 CodePipeline 控制台,网址为 http://console.aws.amazon。 com/codesuite/codepipeline/home

  2. 名称中,选择您创建的管道的名称 MyFirstPipeline。

  3. 在管道详细信息页中,选择编辑

  4. 编辑页面上,选择 + 添加阶段以紧随 Deploy 阶段之后添加一个阶段。

    显示编辑屏幕上的 “+ 添加舞台” 按钮的图片
  5. 添加阶段阶段名称中,输入 Production。选择添加阶段

  6. 在新阶段中,选择 + 添加操作组

  7. 编辑操作操作名称中,输入 Deploy-Second-Deployment。在 “操作提供者” 中的 “部署” 下,选择CodeDeploy

  8. 在该 CodeDeploy 部分的应用程序名称中,MyDemoApplication从下拉列表中进行选择,就像创建管道时一样。在部署组中,选择您刚刚创建的部署组 CodePipelineProductionFleet。在输入构件中,从源操作中选择输入构件。选择保存

  9. 编辑页面上,选择保存。在保存管道更改中,选择保存

  10. 虽然新阶段已添加到您的管道中,但该阶段显示为 No executions yet 状态,因为没有发生触发管道再次运行的更改。您必须手动重新运行最新修订,以了解编辑后的管道的运行情况。在管道详细信息页面中,选择发布更改,然后在系统提示时选择发布。这会通过管道运行在源操作中指定的每个源位置中提供的最新修订。

    或者,要使用重新运行管道,请从本地 Linux、macOS 或 Unix 计算机上的终端或本地 Windows 计算机上的命令提示符处运行start-pipeline-execution该命令,指定管道的名称。 AWS CLI 这将第二次通过管道运行您的源存储桶中的应用程序。

    aws codepipeline start-pipeline-execution --name MyFirstPipeline

    该命令返回 pipelineExecutionId 对象。

  11. 返回 CodePipeline 控制台,在管道列表中 MyFirstPipeline,选择打开视图页面。

    管道显示三个阶段以及项目经历这三个阶段时的状态。管道经历所有阶段可能需要 5 分钟的时间。您将看到前两个阶段的部署取得成功,正如之前一样,但 Production 阶段显示 Deploy-Second-Deployment 操作失败。

  12. Deploy-Second-Deployment 操作中,选择 Details。您将被重定向到 CodeDeploy部署页面。在这种情况下,故障是由于第一个实例组部署到所有实EC2例,而第二个部署组没有留下任何实例。

    注意

    此故障是特意设计的,是为了演示某个管道阶段出现故障会怎么样。

创建第三个阶段 (CLI)

尽管使用 AWS CLI 向管道添加阶段比使用控制台更为复杂,但它可以更清楚地了解管道的结构。

为管道创建第三个阶段
  1. 在本地 Linux、macOS 或 Unix 计算机上打开终端会话,或者在本地 Windows 计算机上打开命令提示符,运行 get-pipeline 命令,以显示您刚创建的管道的结构。对于 MyFirstPipeline,您可以键入以下命令:

    aws codepipeline get-pipeline --name "MyFirstPipeline"

    此命令返回的结构 MyFirstPipeline。输出的第一部分应类似于以下内容:

    { "pipeline": { "roleArn": "arn:aws:iam::80398EXAMPLE:role/AWS-CodePipeline-Service", "stages": [ ...

    输出的最后部分包括管道元数据,应类似于以下内容:

    ... ], "artifactStore": { "type": "S3" "location": "amzn-s3-demo-bucket", }, "name": "MyFirstPipeline", "version": 4 }, "metadata": { "pipelineArn": "arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline", "updated": 1501626591.112, "created": 1501626591.112 } }
  2. 将此结构复制并粘贴到纯文本编辑器中,并将文件保存为 pipeline.json。为了方便起见,请将此文件保存在运行 aws codepipeline 命令的相同目录中。

    注意

    你可以使用以下get-pipeline命令JSON直接通过管道将它们传送到文件中:

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
  3. 部署阶段部分复制并粘贴在前两个阶段之后。由于它是一个部署阶段,就像部署阶段一样,您可以将其用作第三个阶段的模板。

  4. 更改阶段的名称和部署组详细信息。

    以下示例显示了JSON您在部署阶段之后添加到 pipeline.json 文件中的内容。使用新值编辑突出显示的元素。请记住,使用逗号分隔部署生产阶段定义。

    , { "name": "Production", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "Deploy-Second-Deployment", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "CodePipelineDemoApplication", "DeploymentGroupName": "CodePipelineProductionFleet" }, "runOrder": 1 } ] }
  5. 如果您使用的是使用get-pipeline命令检索到的管道结构,则必须从JSON文件中删除这些metadata行。否则,update-pipeline 命令无法使用它。删除 "metadata": { } 行以及 "created""pipelineARN""updated" 字段。

    例如,从结构中删除以下各行:

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }

    保存该文件。

  6. 运行update-pipeline命令,指定管道JSON文件,类似于以下内容:

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json

    该命令会返回更新后管道的整个结构。

    重要

    务必在文件名前包含 file://。此命令中需要该项。

  7. 运行 start-pipeline-execution 命令,并且指定管道的名称。这将第二次通过管道运行您的源存储桶中的应用程序。

    aws codepipeline start-pipeline-execution --name MyFirstPipeline

    该命令返回 pipelineExecutionId 对象。

  8. 打开 CodePipeline 控制台并MyFirstPipeline从管道列表中进行选择。

    管道显示三个阶段以及项目经历这三个阶段时的状态。管道经历所有阶段可能需要 5 分钟的时间。虽然前两个阶段的部署取得成功,正如之前一样,但 Production 阶段显示 Deploy-Second-Deployment 操作失败。

  9. Deploy-Second-Deployment 操作中,选择 Details 以查看故障详细信息。您将被重定向到 CodeDeploy 部署的详细信息页面。在这种情况下,故障是由于第一个实例组部署到所有实EC2例,而第二个部署组没有留下任何实例。

    注意

    此故障是特意设计的,是为了演示某个管道阶段出现故障会怎么样。

(可选)步骤 6:禁用和启用阶段之间的过渡 CodePipeline

您可以启用或禁用管道中阶段之间的过渡。禁用阶段之间的过渡允许您手动控制一个阶段和另一个阶段之间的过渡。例如,您可能希望运行管道的前两个阶段,但是禁用向第三阶段的过渡,直到您准备好部署到生产环境,或者您要排查该阶段的问题或故障。

禁用和启用 CodePipeline 管道中各个阶段之间的过渡
  1. 打开 CodePipeline 控制台并MyFirstPipeline从管道列表中进行选择。

  2. 在管道详细信息页面中,选择第二个阶段(部署)与您在上一部分中添加的第三个阶段(生产)之间的禁用过渡按钮。

  3. 禁用过渡中,键入禁用阶段过渡的原因,然后选择禁用

    各个阶段之间的箭头显示一个图标和颜色变化,以及启用过渡按钮。

    该图显示了输入的禁用过渡的原因为 “在我对故障进行故障排除时禁用过渡”
  4. 再次将示例应用程序上传到 S3 存储桶。由于存储桶启用了版本控制,因此这一更改将启动管道。

  5. 返回管道详细信息页面,查看各个阶段的状态。管道视图会随之发生变化,以显示前两个阶段的进度和成功消息,但第三个阶段不会发生任何变化。此过程可能需要几分钟时间。

  6. 通过选择两个阶段之间的启用过渡按钮,即可启用过渡。在 Enable transition 对话框中,选择 Enable。这一阶段将在几分钟内开始运行,并尝试处理已经历管道的前两个阶段的项目。

    注意

    如果您希望第三阶段成功,请在启用过渡之前编辑 CodePipelineProductionFleet 部署组,然后指定部署应用程序的另一组EC2实例。有关如何执行此操作的更多信息,请参阅更改部署组设置。如果您创建更多EC2实例,则可能会产生额外费用。

步骤 7:清理资源

您可以将在本教程中创建的一些资源用于教程:创建一个四阶段管道。例如,您可以重复使用 CodeDeploy 应用程序和部署。您可以使用提供者(例如)配置生成操作 CodeBuild,这是云中完全托管的生成服务。您还可以配置一个将提供方与生成服务器或系统结合使用的生成操作,例如 Jenkins。

但是,在完成本教程和任何其他教程之后,您应该删除管道及其使用的资源,以避免为继续使用这些资源付费。首先,删除管道,然后删除 CodeDeploy 应用程序及其关联的 Amazon EC2 实例,最后删除 S3 存储桶。

清理本教程中使用的资源
  1. 要清理您的 CodePipeline 资源,请按照中删除管道中的说明进行操作 AWS CodePipeline。

  2. 要清理 CodeDeploy 资源,请按照清理资源(控制台)中的说明进行操作。

  3. 要删除 S3 存储桶,请按照删除或清空存储桶中的说明操作。如果您不打算创建更多管道,请删除为存储管道构件而创建的 S3 存储桶。有关此存储桶的更多信息,请参阅CodePipeline 概念