AWS CodeDeploy
User Guide (API Version 2014-10-06)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

步骤 4:部署您的“Hello,World!”应用程序

现在您将部署上传到 Amazon S3 的示例“Hello,World!”应用程序修订。您将使用 AWS CLI 或 AWS CodeDeploy 控制台部署修订并监视部署进度。成功部署应用程序修订之后,您将检查结果。

使用 AWS CodeDeploy 部署您的应用程序修订

部署您的应用程序修订 (CLI)

  1. 首先,部署需要对应的部署组。不过,在创建部署组之前,您需要服务角色 ARN。服务角色是 IAM 角色,该角色授予某个服务代表您执行操作的权限。在这种情况下,服务角色将提供 AWS CodeDeploy 权限来访问您的 Amazon EC2 实例,以扩展(读取)其 Amazon EC2 实例标签。

    您应该已经按照创建服务角色 (CLI) 中的说明创建了服务角色。要获取服务角色的 ARN,请参阅获取服务角色 ARN (CLI)

  2. 您已拥有 ARN,现在可调用 create-deployment-group 命令来创建名为 HelloWorld_DepGroup 的部署组;这些部署组关联到名为 HelloWorld_App 的应用程序,使用名为 CodeDeployDemo 的 Amazon EC2 实例标签以及名为 CodeDeployDefault.OneAtATime 的部署配置,其服务角色 ARN 为:

    Copy
    aws deploy create-deployment-group --application-name HelloWorld_App --deployment-group-name HelloWorld_DepGroup --deployment-config-name CodeDeployDefault.OneAtATime --ec2-tag-filters Key=Name,Value=CodeDeployDemo,Type=KEY_AND_VALUE --service-role-arn serviceRoleARN

    注意

    create-deployment-group 命令支持创建触发器,这些触发器导致向主题订阅者发送有关部署和实例中的指定事件的 Amazon SNS 通知。此命令还支持下列选项:自动回滚部署和设置警报以在满足 Amazon CloudWatch 警报中的特定监控阈值时停止部署。本教程中的示例不包含适用于这些操作的命令。

  3. 现在调用 create-deployment 命令来创建部署,该部署与名为 HelloWorld_App 的应用程序、名为 CodeDeployDefault.OneAtATime 的部署配置以及名为 HelloWorld_DepGroup 的部署组关联,使用名为 codedeploydemobucket 的存储桶中名为 HelloWorld_App.zip 的应用程序修订:

    Copy
    aws deploy create-deployment --application-name HelloWorld_App --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name HelloWorld_DepGroup --s3-location bucket=codedeploydemobucket,bundleType=zip,key=HelloWorld_App.zip

部署应用程序修订(控制台)

  1. 在使用 AWS CodeDeploy 控制台部署您的应用程序修订之前,您需要服务角色 ARN。服务角色是 IAM 角色,该角色授予某个服务代表您执行操作的权限。在这种情况下,服务角色将提供 AWS CodeDeploy 权限来访问您的 Amazon EC2 实例,以扩展(读取)其 Amazon EC2 实例标签。

    您应该已经按照创建服务角色(控制台) 中的说明创建了服务角色。要获取服务角色的 ARN,请参阅获取服务角色 ARN(控制台)

  2. 现在您已拥有 ARN,可以开始使用 AWS CodeDeploy 控制台部署您的应用程序修订。

    登录 AWS 管理控制台并通过以下网址打开 AWS CodeDeploy 控制台:https://console.www.amazonaws.cn/codedeploy

    注意

    使用您在入门中使用的相同账户或 IAM 用户信息进行登录。

  3. 如果未显示 Applications 页,请在 AWS CodeDeploy 菜单上选择 Applications

  4. 在应用程序列表中,选择 HelloWorld_App

  5. Deployment groups 下,选择 Create deployment group

  6. Deployment group name 框中,键入 HelloWorld_DepGroup

  7. 在标签列表中,从 Tag type 下拉列表中选择 Amazon EC2

  8. Key 框中,键入 Name

  9. Value 框中,键入 CodeDeployDemo

    注意

    键入 CodeDeployDemo 后,Instances 下方应显示 1 来确认 AWS CodeDeploy 已找到一个匹配的 Amazon EC2 实例。

  10. Deployment configuration 下拉列表中,选择 CodeDeployDefault.OneAtATime

  11. Service role ARN 下拉列表中,选择服务角色 ARN,然后选择 Create deployment group

  12. 在 AWS CodeDeploy 菜单上,选择 Deployments

  13. 选择 Create deployment

  14. Application 下拉列表中,选择 HelloWorld_App

  15. Deployment group 下拉列表中,选择 HelloWorld_DepGroup

  16. Revision type 区域中,选择 My application is stored in Amazon S3,然后在 Revision location 框中,键入示例“Hello, World!”的位置。上传到 Amazon S3 的示例“Hello, World!”应用程序修订的位置。获取位置:

    1. 通过以下网址打开 Amazon S3 控制台:https://console.amazonaws.cn/s3/

    2. 在存储桶列表中,选择 codedeploydemobucket (或您将应用程序修订上传到的存储桶的名称)。

    3. 在对象列表中,选择 HelloWorld_App.zip

    4. 如果未显示 Properties 窗格,请选择 Properties 按钮。

    5. Properties 窗格中,将 Link 字段的值复制到您的剪贴板。

      其内容如下所示:

      https://s3.amazonaws.com/codedeploydemobucket/HelloWorld_App.zip

    6. 返回到 AWS CodeDeploy 控制台,然后在 Revision Location 框中,粘贴 Link 字段值。

  17. 如果 File type 列表中显示的消息说明无法检测文件类型,则在文件类型列表中选择 .zip

  18. (可选) 在 Deployment description 框中键入注释。

  19. Deployment configuration 下拉列表中,选择 CodeDeployDefault.OneAtATime

  20. 选择 Deploy。有关您新创建的部署的信息将显示在 Deployments 页上。

    注意

    要更新部署的当前状态,请选择表旁边的 Refresh 按钮。

监控您的部署并排除故障

监视您的部署并排除故障 (CLI)

  1. 通过对名为 HelloWorld_App 的应用程序和名为 HelloWorld_DepGroup 的部署组调用 list-deployments 命令,来获取部署 ID:

    Copy
    aws deploy list-deployments --application-name HelloWorld_App --deployment-group-name HelloWorld_DepGroup --query "deployments" --output text
  2. 使用部署 ID 调用 get-deployment 命令:

    Copy
    aws deploy get-deployment --deployment-id deploymentID --query "deploymentInfo.status" --output text
  3. 该命令将返回部署的整体状态。如果成功,该值将为 Succeeded

    如果整体状态为 Failed,则您可以调用诸如 list-deployment-instancesget-deployment-instance 等命令来排除故障。有关更多故障排除选项,请参阅分析日志文件以调查针对实例的部署失败

监视您的部署和故障排除(控制台)

在 AWS CodeDeploy 控制台的 Deployments 页上,可在 Status 列中监视部署的状态。

注意

要更新部署的当前状态,请选择表旁边的 Refresh 按钮。

要获取有关部署的详细信息(特别是在 Status 列值为 Succeeded 之外的任何值的情况下),请执行以下操作:

  1. Deployments 表中,选择部署 ID 旁的箭头。部署失败后,Details 中将显示描述失败原因的消息。

  2. Instances 中,选择 View all instances。此时将显示有关部署的更多信息。部署失败之后,您可以确定在哪些 Amazon EC2 实例上失败以及部署在哪个步骤失败。

    注意

    如果您未看到 Instances,请选择表上方的 Refresh 按钮。在 Status 列从 In progress 更改为 Created 之后,应显示 Instances

  3. 如果您需要执行进一步的故障排除,可以使用类似于 查看实例详细信息 的技巧。您还可以分析 Amazon EC2 实例上的部署日志文件。有关更多信息,请参阅 分析日志文件以调查针对实例的部署失败

验证您的部署

部署成功后,请验证您的 安装是否正常工作。使用 Amazon EC2 实例的公共 DNS 地址,在 Web 浏览器中查看网页。(要获取公共 DNS 值,请在 Amazon EC2 控制台中选择 Amazon EC2 实例,然后在 Description 选项卡上的 Public DNS 中查看值。)

例如,如果 Amazon EC2 实例的公共 DNS 地址为 ec2-01-234-567-890.compute-1.amazonaws.com,则您可以使用以下 URL:

Copy
http://ec2-01-234-567-890.compute-1.amazonaws.com/WordPress

如果成功,您应该看到“Hello, World!”网页。