

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

# 步骤 4：部署 Hello World 应用程序
<a name="tutorials-windows-deploy-application"></a>

现在，您将部署已上传到 Amazon S3 的示例 Hello World 应用程序修订。您可以使用 AWS CLI 或 CodeDeploy 控制台来部署修订版并监控部署进度。成功部署应用程序修订之后，可以检查结果。

**Topics**
+ [使用部署您的应用程序修订版 CodeDeploy](#tutorials-windows-deploy-application-create-deployment)
+ [监控您的部署并排除故障](#tutorials-windows-deploy-application-monitor)
+ [验证您的部署](#tutorials-windows-deploy-application-verify)

## 使用部署您的应用程序修订版 CodeDeploy
<a name="tutorials-windows-deploy-application-create-deployment"></a>

 您可以使用 CLI 或控制台部署应用程序。

**Topics**
+ [部署您的应用程序修订（CLI）](#tutorials-windows-deploy-application-create-deployment-cli)
+ [部署应用程序修订（控制台）](#tutorials-windows-deploy-application-create-deployment-console)

### 部署您的应用程序修订（CLI）
<a name="tutorials-windows-deploy-application-create-deployment-cli"></a>

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

   您应该已经按照[创建服务角色（CLI）](getting-started-create-service-role.md#getting-started-create-service-role-cli)中的说明创建了服务角色。要获取服务角色的 ARN，请参阅[获取服务角色 ARN（CLI）](getting-started-create-service-role.md#getting-started-get-service-role-cli)。

1. 现在您已拥有此 ARN，请调用 **create-deployment-group** 命令，使用名为 **CodeDeployDemo** 的 Amazon EC2 实例标签和名为 **CodeDeployDefault.OneAtATime** 的部署配置创建一个与名为 **HelloWorld\$1App** 的应用程序相关联的名为 **HelloWorld\$1DepGroup** 的部署组（具有指定的服务角色 ARN）：

   ```
   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](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html)命令支持创建触发器，从而向主题订阅者发送有关部署和实例中指定事件的 Amazon SNS 通知。该命令还支持自动回滚部署和设置警报以在满足 Amazon CloudWatch 警报中的监控阈值时停止部署的选项。本教程中不包含用于这些操作的命令。

1. 在创建部署之前，部署组中的实例必须安装 CodeDeploy 代理。您可以使用以下命令通过 AWS Systems Manager 从命令行安装代理：

   ```
   aws ssm create-association --name AWS-ConfigureAWSPackage --targets Key=tag:Name,Values=CodeDeployDemo --parameters action=Install,name=AWSCodeDeployAgent --schedule-expression "cron(0 2 ? * SUN *)" 
   ```

   此命令在 Systems Manager 状态管理器中创建关联，该关联将安装 CodeDeploy 代理，然后在每个星期日凌晨 2:00 尝试对其进行更新。有关 CodeDeploy 代理的更多信息，请参阅[使用代 CodeDeploy 理](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent.html)。有关 Systems Manager 的详细信息，请参阅[什么是 AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)。

1. 现在调用 **create-deployment** 命令，使用名为 **amzn-s3-demo-bucket** 的存储桶中名为 **HelloWorld\$1App.zip** 的应用程序修订，创建一个与名为 **HelloWorld\$1App** 的应用程序、名为 **CodeDeployDefault.OneAtATime** 的部署配置、名为 **HelloWorld\$1DepGroup** 的部署组关联的部署。

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

### 部署应用程序修订（控制台）
<a name="tutorials-windows-deploy-application-create-deployment-console"></a>

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

   您应该已经按照[创建服务角色（控制台）](getting-started-create-service-role.md#getting-started-create-service-role-console)中的说明创建了服务角色。要获取服务角色的 ARN，请参阅[获取服务角色 ARN（控制台）](getting-started-create-service-role.md#getting-started-get-service-role-console)。

1. 现在您已获得 ARN，您可以使用 CodeDeploy 控制台来部署您的应用程序修订版。

   登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。
**注意**  
使用您在[入门 CodeDeploy](getting-started-codedeploy.md)中设置的同一用户登录。

1. 在导航窗格中，展开**部署**，然后选择**应用程序**。

1. 选择 **HelloWorld\$1App**。

1. 在**部署组**选项卡中，选择**创建部署组**。

1. 在 **Deployment group name（部署组名称）**中，输入 **HelloWorld\$1DepGroup**。

1. 在**服务角色**中，选择服务角色的名称。

1. 在**部署类型**中，选择**就地**。

1. 在**环境配置**中，选择 **Amazon EC2 实例**。

1. 在使用的 **Agent 配置**中 AWS Systems Manager，保留默认值。

1. 在**键**中，输入 **Name**。

1. 在**值**中，输入 **CodeDeployDemo**。

1. 在**部署配置**中，选择**CodeDeployDefault。 OneAtATime**。

1. 在**负载均衡器**中，清除**启用负载均衡**。

1. 选择 **Create deployment group（创建部署组）**。

1. 选择**创建部署**。

1. 在**部署组**中，选择 **HelloWorld\$1 DepGroup**

1. 在**修订类型**中，选择**我的应用程序将存储在 Amazon S3** 中，然后在**修订位置**中输入已上传到 Amazon S3 的示例 Hello World 应用程序修订的位置。获取位置：

   1. 打开 Amazon S3 控制台，网址为 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

   1. 在存储桶列表中，选择 **amzn-s3-demo-bucket**（或您将应用程序修订上传到的存储桶的名称）。

   1. 在对象列表中，选择 **HelloWorld\$1App.zip**。

   1. 在 **Overview（概述）**选项卡上，选择 **Copy path（复制路径）**。

   1. 返回 CodeDeploy 控制台，然后在 “**修订位置**” 中粘贴 “**链接**” 字段值。

1. 对于 **Revision file type（修订文件类型）**，选择 **.zip**。

1. （可选）在 **Deployment description（部署描述）**中输入注释。

1. 选择 **Create deployment（创建部署）**。有关您新创建的部署的信息将显示在 **Deployments** 页上。

## 监控您的部署并排除故障
<a name="tutorials-windows-deploy-application-monitor"></a>

使用 AWS CLI 或控制台监控您的部署并对其进行故障排除。

**Topics**
+ [监视您的部署并排除故障（CLI）](#tutorials-windows-deploy-application-monitor-cli)
+ [监视您的部署和故障排除（控制台）](#tutorials-windows-deploy-application-monitor-console)

### 监视您的部署并排除故障（CLI）
<a name="tutorials-windows-deploy-application-monitor-cli"></a>

1. 针对名为 **HelloWorld\$1App** 的应用程序和名为 **HelloWorld\$1DepGroup** 的部署组调用 **list-deployments** 命令，以获取部署的 ID：

   ```
   aws deploy list-deployments --application-name HelloWorld_App --deployment-group-name HelloWorld_DepGroup --query "deployments" --output text
   ```

1. 通过部署 ID 调用 **get-deployment** 命令：

   ```
   aws deploy get-deployment --deployment-id deploymentID --query "deploymentInfo.status" --output text
   ```

1. 该命令将返回部署的整体状态。如果成功，该值将为 `Succeeded`。

   如果整体状态为 `Failed`，则您可以调用诸如 [list-deployment-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-instances.html) 和 [get-deployment-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-instance.html) 这样的命令来排除故障。有关更多故障排除选项，请参阅[分析日志文件以调查针对实例的部署失败](troubleshooting-ec2-instances.md#troubleshooting-deploy-failures)。

### 监视您的部署和故障排除（控制台）
<a name="tutorials-windows-deploy-application-monitor-console"></a>

在 CodeDeploy 控制台的 “**部署**” 页面上，您可以在 “状态” 列中监控部署的**状态**。

要获取有关部署的详细信息（特别是在 **Status** 列值为 **Succeeded** 之外的任何值的情况下），请执行以下操作：

1. 在**部署**表中，选择您的部署 ID。部署失败后，部署的详细信息页中将显示描述失败原因的消息。

1. 将显示有关部署实例的更多信息。部署失败之后，您可以确定在哪些 Amazon EC2 实例上失败以及部署在哪个步骤失败。

1. 如果您需要执行进一步的故障排除，可以使用类似于 [使用 CodeDeploy 查看实例详细信息](instances-view-details.md) 的技巧。您还可以分析有关 Amazon EC2 实例的部署日志文件。有关更多信息，请参阅 [分析日志文件以调查针对实例的部署失败](troubleshooting-ec2-instances.md#troubleshooting-deploy-failures)。

## 验证您的部署
<a name="tutorials-windows-deploy-application-verify"></a>

部署成功后，请验证您的安装是否正常工作。使用 Amazon EC2 实例的公有 DNS 地址，在 Web 浏览器中查看网页。（要获取公有 DNS 值，请在 Amazon EC2 控制台中，选择 Amazon EC2 实例，然后在**描述**选项卡上，查找**公有 DNS** 的值。）

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

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

如果成功，您应该看到 Hello, World\$1 网页。