

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

# 教程：用于 CodeDeploy 将应用程序部署到 Auto Scaling 组
<a name="tutorials-auto-scaling-group"></a>

在本教程中，您将使用将应用程序修订部署 CodeDeploy 到 Auto Scaling 组。Amazon EC2 Auto Scaling 使用预定义条件启动 Amazon EC2 实例，然后在不再需要这些实例时将其终止。Amazon EC2 Auto Scaling 可以通过确保始终有正确数量的 Amazon EC2 实例来处理部署负载来帮助 CodeDeploy 扩展。有关 Amazon EC2 Auto Scaling 与集成的信息 CodeDeploy，请参阅[CodeDeploy 与亚马逊 EC2 Auto Scaling 集成](integrations-aws-auto-scaling.md)。

**Topics**
+ [先决条件](tutorials-auto-scaling-group-prerequisites.md)
+ [步骤 1：创建和配置 Auto Scaling 组](tutorials-auto-scaling-group-create-auto-scaling-group.md)
+ [步骤 2：将应用程序部署到 Auto Scaling 组](tutorials-auto-scaling-group-create-deployment.md)
+ [步骤 3：检查结果](tutorials-auto-scaling-group-verify.md)
+ [步骤 4：增加 Auto Scaling 组中的 Amazon EC2 实例数量](tutorials-auto-scaling-group-scale-up.md)
+ [步骤 5：再次检查结果](tutorials-auto-scaling-group-reverify.md)
+ [步骤 6：清除](tutorials-auto-scaling-group-clean-up.md)

# 先决条件
<a name="tutorials-auto-scaling-group-prerequisites"></a>

在本教程中遵循以下步骤操作：
+ 完成中的所有步骤[入门 CodeDeploy](getting-started-codedeploy.md)，包括设置和配置以及创建 IAM 实例配置文件 (**CodeDeployDemo-EC2-Instance-Profile**) 和服务角色 (**CodeDeployDemo**)。 AWS CLI *服务角色* 是一种特殊类型的 IAM 角色，用于为服务提供代表您执行操作的权限。
+ 如果您使用启动模板创建 Auto Scaling 组，则必须添加以下权限：
  +  `ec2:RunInstances` 
  +  `ec2:CreateTags` 
  +  `iam:PassRole` 

  有关更多信息，请参阅《Amazon EC2 Auto Scaling 用户指南》**中的 [步骤 2：创建服务角色](getting-started-create-service-role.md)、[为 Auto Scaling 组创建启动模板](https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html)和[启动模板支持](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-launch-template-permissions.html)。
+  创建并使用与 Ubuntu 服务器实例兼容的修订版，然后。 CodeDeploy对于您的修订，可以执行以下操作之一：
  + 创建并使用[教程：使用 CodeDeploy （Windows 服务器、Ubuntu 服务器或红帽企业 Linux）将应用程序部署到本地实例](tutorials-on-premises-instance.md)教程的[步骤 2：创建示例应用程序修订](tutorials-on-premises-instance-2-create-sample-revision.md)中的示例修订。
  + 自行创建修订，具体请参阅[正在处理的应用程序修订版 CodeDeploy](application-revisions.md)。
+ 使用以下**入站规则**创建名为 **CodeDeployDemo-AS-SG** 的安全组：
  + 类型：HTTP
  + 源：任何位置

  这是查看您的应用程序和验证部署是否成功所必需的。有关如何创建安全组的信息，请参阅《Amazon EC2 用户指南》**中的[创建安全组](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#creating-security-group)。

 

# 步骤 1：创建和配置 Auto Scaling 组
<a name="tutorials-auto-scaling-group-create-auto-scaling-group"></a>

在本步骤中，您将创建一个包含单个 Amazon Linux、RHEL 或 Windows Server Amazon EC2 实例的 Auto Scaling 组。在后面的步骤中，您将指示 Amazon EC2 Auto Scaling 再添加一个 Amazon EC2 实例， CodeDeploy 并将您的修订版部署到该实例。

**Topics**
+ [创建和配置 Auto Scaling 组（CLI）](#tutorials-auto-scaling-group-create-auto-scaling-group-cli)
+ [创建和配置 Auto Scaling 组（控制台）](#tutorials-auto-scaling-group-create-auto-scaling-group-console)

## 创建和配置 Auto Scaling 组（CLI）
<a name="tutorials-auto-scaling-group-create-auto-scaling-group-cli"></a>

1. 调用 **create-launch-template** 命令创建 Amazon EC2 启动模板。

   在调用此命令之前，您需要使用本教程的 AMI 的 ID，由占位符*image-id*表示。您还需要一个 Amazon EC2 实例密钥对的名称才能访问由占位符*key-name*表示的 Amazon EC2 实例。

   要获取适用于本教程的 AMI 的 ID，请执行以下操作：

   1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

   1. 在导航窗格中的 **Instances** 下，选择 **Instances**，然后选择 **Launch Instance**。

   1. 在**选择一个 Amazon 系统映像**页上的**快速启动**选项卡上，记下 **Amazon Linux 2 AMI**、**Red Hat Enterprise Linux 7.1**、**Ubuntu Server 14.04 LTS** 或 **Microsoft Windows Server 2012 R2** 旁边的 AMI 的 ID。
**注意**  
如果您拥有与 CodeDeploy 兼容的 AMI 自定义版本，则在此选择它，而不用浏览**快速启动**选项卡。有关将自定义 AMI 与 CodeDeploy Amazon EC2 Auto Scaling 配合使用的信息，请参阅[将自定义 AMI 与 CodeDeploy Amazon EC2 Auto Scaling 配合使用](integrations-aws-auto-scaling.md#integrations-aws-auto-scaling-custom-ami)。

   对于 Amazon EC2 实例密钥对，使用 Amazon EC2 实例密钥对的名称。

   调用 **create-launch-template** 命令。

   在本地 Linux、macOS 或 Unix 计算机上：

   ```
   aws ec2 create-launch-template \
     --launch-template-name CodeDeployDemo-AS-Launch-Template \
     --launch-template-data file://config.json
   ```

   文件 `config.json` 的内容：

   ```
   { 
     "InstanceType":"t1.micro",
     "ImageId":"image-id",
     "IamInstanceProfile":{
       "Name":"CodeDeployDemo-EC2-Instance-Profile"
     },
     "KeyName":"key-name"
   }
   ```

   在本地 Windows 计算机上：

   ```
   aws ec2 create-launch-template --launch-template-name CodeDeployDemo-AS-Launch-Template --launch-template-data file://config.json
   ```

   文件 `config.json` 的内容：

   ```
   { 
     "InstanceType":"t1.micro",
     "ImageId":"image-id",
     "IamInstanceProfile":{
       "Name":"CodeDeployDemo-EC2-Instance-Profile"
     },
     "KeyName":"key-name"
   }
   ```

   这些命令与`config.json`文件一起创建以您的 Auto Scaling 组命名 CodeDeployDemo-AS-Launch-Template的 Amazon EC2 启动模板，该模板将在后续步骤中基于 t1.micro Amazon EC2 实例类型创建。根据您对 `ImageId`、`IamInstanceProfile` 和 `KeyName` 的输入，启动模板还指定 AMI ID、启动时要传递给实例的 IAM 角色关联的实例配置文件名称，以及连接到实例时要使用的 Amazon EC2 密钥对。

1.  调用 **create-auto-scaling-group** 命令以创建一个 Auto Scaling 组。您需要在区域中列出的其中一个区域中的一个可用区的名称，[以及中以占位符*availability-zone*表示的*AWS 一般参考*终端节点](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)。
**注意**  
要查看区域中的可用区列表，请调用：  

   ```
   aws ec2 describe-availability-zones --region region-name
   ```
例如，要查看美国西部（俄勒冈州）区域中的可用区列表，请调用：  

   ```
   aws ec2 describe-availability-zones --region us-west-2
   ```
有关区域名称标识符的列表，请参阅[各区域的资源工具包存储桶名称](resource-kit.md#resource-kit-bucket-names)。

   在本地 Linux、macOS 或 Unix 计算机上：

   ```
   aws autoscaling create-auto-scaling-group \
     --auto-scaling-group-name CodeDeployDemo-AS-Group \
     --launch-template CodeDeployDemo-AS-Launch-Template,Version='$Latest' \
     --min-size 1 \
     --max-size 1 \
     --desired-capacity 1 \
     --availability-zones availability-zone \
     --tags Key=Name,Value=CodeDeployDemo,PropagateAtLaunch=true
   ```

   在本地 Windows 计算机上：

   ```
   aws autoscaling create-auto-scaling-group --auto-scaling-group-name CodeDeployDemo-AS-Group --launch-template LaunchTemplateName=CodeDeployDemo-AS-Launch-Template,Version="$Latest" --min-size 1 --max-size 1 --desired-capacity 1 --availability-zones availability-zone --tags Key=Name,Value=CodeDeployDemo,PropagateAtLaunch=true
   ```

   这些命令基于名为 **CodeDeployDemo-AS-Launch-Template** 的 Amazon EC2 启动模板创建名为 **CodeDeployDemo-AS-Group** 的 Auto Scaling 组。此 Auto Scaling 组只有一个在指定可用区中创建的 Amazon EC2 实例。此 Auto Scaling 组中的每个实例都具有标签 `Name=CodeDeployDemo`。该标签将在以后安装 CodeDeploy 代理时使用。

1. 针对 **CodeDeployDemo-AS-Group** 调用 **describe-auto-scaling-groups** 命令：

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].[HealthStatus, LifecycleState]" --output text
   ```

   请在返回的值显示 `Healthy` 和 `InService` 之后继续。

1.  您的 Auto Scaling 组中的实例必须安装 CodeDeploy 代理才能用于 CodeDeploy 部署。通过调用 AWS Systems Manager 带有创建 Auto Scaling 组时添加的标签的**create-association**命令来安装 CodeDeploy 代理。

   ```
   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 Auto Scaling 组中的所有实例上安装代理，然后在每周日凌晨 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)。

## 创建和配置 Auto Scaling 组（控制台）
<a name="tutorials-auto-scaling-group-create-auto-scaling-group-console"></a>

1. 打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

1. 在全局导航栏中，确保选中《AWS 一般参考》**的[区域和终端节点](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中列出的某个区域。Amazon EC2 Auto Scaling 资源与您指定的区域绑定，并且 CodeDeploy 仅在特定区域受支持。

1. 在导航栏中的**实例**下，选择**启动模板**。

1. 选择**Create launch template**（创建启动模板）。

1. 在**启动模板名称和描述**对话框中，为**启动模板名称**输入 **CodeDeployDemo-AS-Launch-Template**。对其他字段保留默认值。

1. 在**亚马逊机器映像（AMI）**对话框中，单击 **AMI** 下的下拉列表，选择适用于本教程的 AMI：

   1. 在 **AMI** 下拉列表的**快速启动**选项卡上，选择以下选项之一：**Amazon Linux 2 AMI**、**Red Hat Enterprise Linux 7.1**、**Ubuntu Server 14.04 LTS** 或 **Microsoft Windows Server 2012 R2**。
**注意**  
如果您拥有与 CodeDeploy 兼容的 AMI 自定义版本，则在此选择它，而不用浏览**快速启动**选项卡。有关将自定义 AMI 与 CodeDeploy Amazon EC2 Auto Scaling 配合使用的信息，请参阅[将自定义 AMI 与 CodeDeploy Amazon EC2 Auto Scaling 配合使用](integrations-aws-auto-scaling.md#integrations-aws-auto-scaling-custom-ami)。

1. 在**实例类型**中，选择下拉列表，然后选择 **t1.micro**。您可以使用搜索栏来更快地找到它。

1. 在**密钥对（登录）**对话框中，选择**选择现有密钥对**。在**选择密钥对**下拉列表中，选择您在前面步骤中创建或使用的 Amazon EC2 实例密钥对。

1. 在**网络设置**对话框中，选择**虚拟公有云（VPC）**。

   在**安全组**下拉列表中，选择您在[教程的先决条件部分](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorials-auto-scaling-group-prerequisites.html)中创建的安全组（**CodeDeployDemo-AS-SG**）。

1. 展开**高级详细信息**对话框。在 **IAM 实例配置文件**下拉列表中，在 **IAM 实例配置文件**下选择您之前创建的 IAM 角色（**CodeDeployDemo-EC2-Instance-Profile**）。

   保留其余的默认值。

1. 选择**Create launch template**（创建启动模板）。

1. 在**后续步骤**对话框中，选择**创建 Auto Scaling 组**。

1. 在**选择启动模板或配置**页面上，对于 **Auto Scaling 组名称**，键入 **CodeDeployDemo-AS-Group**。

1. 在**启动模板**对话框中，应该已经填充您的启动模板（**CodeDeployDemo-AS-Launch-Template**），如果没有，请从下拉菜单中将其选中。保留默认选择，然后选择**下一步**。

1. 在**选择实例启动选项**页面的**网络**部分，对于 **VPC**，选择默认的 VPC。然后为**可用区和子网**选择默认子网。如果无法选择默认 VPC，则必须创建 VPC。有关更多信息，请参阅 [Amazon VPC 入门](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-getting-started.html)。

1. 在 **Instance type requirements**（实例类型要求）部分中，使用默认设置简化此步骤。（请勿覆盖启动模板。） 在本教程中，您将仅使用启动模板中指定的实例类型启动按需实例。

1. 选择 **Next**（下一步）转至 **Configure advanced options**（配置高级选项）页面。

1. 保持默认值，然后选择**下一步**。

1. 在**配置组大小和扩展策略**页面上，保留默认**组大小**值 1。选择**下一步**。

1. 跳过配置通知的步骤，然后选择**下一步**。

1. 在**添加标签**页面上，添加一个标记，以便以后安装 CodeDeploy 代理时使用。选择 **Add tag（添加标签）**。

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

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

   选择**下一步**。

1. 在**审核**页面上，检查 Auto Scaling 组的详细信息，然后选择**创建 Auto Scaling 组**。

1. 在导航栏中，在 **Auto Scaling 组**处于选中状态的情况下，选择 **CodeDeployDemo-AS-Group**，然后选择**实例管理**选项卡。在 “**生命周期**” 列中**InService**显示的值且 “健康” 的值出现在 “**健康****状态**” 列中之前，请勿继续操作。

1. 按照安装 CodeDeploy 代理中的步骤[安装 CodeDeploy 代理，](https://docs.aws.amazon.com/codedeploy/latest/userguide/codedeploy-agent-operations-install.html)并使用`Name=CodeDeployDemo`实例标签。

# 步骤 2：将应用程序部署到 Auto Scaling 组
<a name="tutorials-auto-scaling-group-create-deployment"></a>

在此步骤中，您会将修订部署到 Auto Scaling 组中的单个 Amazon EC2 实例。

**Topics**
+ [创建部署（CLI）](#tutorials-auto-scaling-group-create-deployment-cli)
+ [创建部署（控制台）](#tutorials-auto-scaling-group-create-deployment-console)

## 创建部署（CLI）
<a name="tutorials-auto-scaling-group-create-deployment-cli"></a>

1. 调用 **create-application** 命令以创建一个名为 **SimpleDemoApp** 的应用程序。

   ```
   aws deploy create-application --application-name SimpleDemoApp
   ```

1. 您应该已经按照[步骤 2：为创建服务角色 CodeDeploy](getting-started-create-service-role.md)中的说明创建了一个服务角色。该服务角色将 CodeDeploy 授予访问您的 Amazon EC2 实例以扩展（读取）其标签的权限。您将需要服务角色 ARN。要获取服务角色 ARN，请按照[获取服务角色 ARN（CLI）](getting-started-create-service-role.md#getting-started-get-service-role-cli) 中的说明操作。

1. 现在您已拥有一个服务角色 ARN，请调用 **create-deployment-group** 命令，使用名为 **CodeDeployDemo-AS-Group** 的 Auto Scaling 组和名为 **CodeDeployDefault.OneAtATime** 的部署配置创建一个与名为 **SimpleDemoApp** 的应用程序相关联的名为 **SimpleDemoDG** 的部署组（具有指定的服务角色 ARN）。
**注意**  
该[create-deployment-group](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-group.html)命令支持创建触发器，从而向主题订阅者发送有关部署和实例中指定事件的 Amazon SNS 通知。该命令还支持自动回滚部署和设置警报以在满足 Amazon CloudWatch 警报中的监控阈值时停止部署的选项。本教程中不包含用于这些操作的命令。

   在本地 Linux、macOS 或 Unix 计算机上：

   ```
   aws deploy create-deployment-group \
     --application-name SimpleDemoApp \
     --auto-scaling-groups CodeDeployDemo-AS-Group \
     --deployment-group-name SimpleDemoDG \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --service-role-arn service-role-arn
   ```

   在本地 Windows 计算机上：

   ```
   aws deploy create-deployment-group --application-name SimpleDemoApp --auto-scaling-groups CodeDeployDemo-AS-Group --deployment-group-name SimpleDemoDG --deployment-config-name CodeDeployDefault.OneAtATime --service-role-arn service-role-arn
   ```

1. 调用 **create-deployment** 命令，使用指定位置的修订创建一个与名为 **SimpleDemoApp** 的应用程序、名为 **CodeDeployDefault.OneAtATime** 的部署配置、名为 **SimpleDemoDG** 的部署组相关联的部署。

   **对于 Amazon Linux 和 RHEL Amazon EC2 实例，从本地 Linux、macOS 或 Unix 计算机调用**

    

   ```
   aws deploy create-deployment \
     --application-name SimpleDemoApp \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --deployment-group-name SimpleDemoDG \
     --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Linux.zip
   ```

   *bucket-name*是包含您所在地区的 CodeDeploy 资源包文件的 Amazon S3 存储桶的名称。例如，对于美国东部（俄亥俄州）区域，请*bucket-name*替换为`aws-codedeploy-us-east-2`。有关存储桶名称的列表，请参阅[各区域的资源工具包存储桶名称](resource-kit.md#resource-kit-bucket-names)。

   **对于 Amazon Linux 和 RHEL Amazon EC2 实例，从本地 Windows 计算机调用**

    

   ```
   aws deploy create-deployment --application-name SimpleDemoApp --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name SimpleDemoDG --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Linux.zip
   ```

   *bucket-name*是包含您所在地区的 CodeDeploy 资源包文件的 Amazon S3 存储桶的名称。例如，对于美国东部（俄亥俄州）区域，请*bucket-name*替换为`aws-codedeploy-us-east-2`。有关存储桶名称的列表，请参阅[各区域的资源工具包存储桶名称](resource-kit.md#resource-kit-bucket-names)。

   **对于 Windows Server Amazon EC2 实例，从本地 Linux、macOS 或 Unix 计算机调用**

    

   ```
   aws deploy create-deployment \
     --application-name SimpleDemoApp \
     --deployment-config-name CodeDeployDefault.OneAtATime \
     --deployment-group-name SimpleDemoDG \
     --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Windows.zip
   ```

   *bucket-name*是包含您所在地区的 CodeDeploy 资源包文件的 Amazon S3 存储桶的名称。例如，对于美国东部（俄亥俄州）区域，请*bucket-name*替换为`aws-codedeploy-us-east-2`。有关存储桶名称的列表，请参阅[各区域的资源工具包存储桶名称](resource-kit.md#resource-kit-bucket-names)。

   **对于 Windows Server Amazon EC2 实例，从本地 Windows 计算机调用**

   ```
   aws deploy create-deployment --application-name SimpleDemoApp --deployment-config-name CodeDeployDefault.OneAtATime --deployment-group-name SimpleDemoDG --s3-location bucket=bucket-name,bundleType=zip,key=samples/latest/SampleApp_Windows.zip
   ```

   *bucket-name*是包含您所在地区的 CodeDeploy 资源包文件的 Amazon S3 存储桶的名称。例如，对于美国东部（俄亥俄州）区域，请*bucket-name*替换为`aws-codedeploy-us-east-2`。有关存储桶名称的列表，请参阅[各区域的资源工具包存储桶名称](resource-kit.md#resource-kit-bucket-names)。
**注意**  
目前， CodeDeploy 不提供部署到 Ubuntu Server Amazon EC2 实例的示例修订。要自己创建修订，请参阅[正在处理的应用程序修订版 CodeDeploy](application-revisions.md)。

1. 调用 **get-deployment** 命令以确保部署已成功。

   在调用此命令之前，您需要应该已经通过调用 **create-deployment** 命令返回的部署 ID。如果需要再次获取部署 ID，请针对名为 **SimpleDemoApp** 的应用程序和名为 **SimpleDemoDG** 的部署组调用 **list-deployments** 命令：

   ```
   aws deploy list-deployments --application-name SimpleDemoApp --deployment-group-name SimpleDemoDG --query "deployments" --output text
   ```

   现在，使用部署 ID 调用 **get-deployment** 命令：

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

   请在返回的值为 `Succeeded` 之后继续。

## 创建部署（控制台）
<a name="tutorials-auto-scaling-group-create-deployment-console"></a>

1. 您应该已经按照[步骤 2：为创建服务角色 CodeDeploy](getting-started-create-service-role.md)中的说明创建了一个服务角色。服务角色将授予访问您的实例以扩展（读取）其标签的 CodeDeploy 权限。在使用 CodeDeploy 控制台部署应用程序修订版之前，您需要服务角色 ARN。要获取服务角色 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. 选择**创建应用程序**。

1. 选择**自定义应用程序**。

1. 在 **Application name（应用程序名称）**中，输入 **SimpleDemoApp**。

1. 在**计算平台**中，选择 **EC2/本地**。

1. 选择**创建应用程序**。

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

1. 在 **Deployment group name（部署组名称）**中，输入 **SimpleDemoDG**。

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

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

1. 在**环境配置**中，选择 **Auto Scaling 组**，然后选择 **CodeDeployDemo-AS-Group**。

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

1. 清除**启用负载均衡**。

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

1. 在“部署组”页面中，选择**创建部署**。

1. 对于**修订类型**，选择**我的应用程序存储在 Amazon S3 中**。

1. 在**修订位置**中，输入您的操作系统的示例应用程序的位置和区域。

   **对于 Amazon Linux 和 RHEL Amazon EC2 实例**  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/tutorials-auto-scaling-group-create-deployment.html)

   **对于 Windows Server Amazon EC2 实例**  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/tutorials-auto-scaling-group-create-deployment.html)

    **对于 Ubuntu Server Amazon EC2 实例**

   键入存储在 Amazon S3 中的自定义应用程序修订的位置。

1. 保留**部署描述**为空。

1. 展开**高级**。

1. 选择 **Create deployment（创建部署）**。
**注意**  
如果显示**失败**而不是**成功**，则您可能需要尝试[监控您的部署并排除故障](tutorials-wordpress-deploy-application.md#tutorials-wordpress-deploy-application-monitor)中的一些方法（使用应用程序名称 **SimpleDemoApp** 和部署组名称 **SimpleDemoDG**）。

# 步骤 3：检查结果
<a name="tutorials-auto-scaling-group-verify"></a>

在此步骤中，您将检查是否在 Auto Scaling 组中的单个 Amazon EC2 实例上 CodeDeploy 安装了该**SimpleDemoApp**修订版。

**Topics**
+ [检查结果（CLI）](#tutorials-auto-scaling-group-verify-cli)
+ [检查结果（控制台）](#tutorials-auto-scaling-group-verify-console)

## 检查结果（CLI）
<a name="tutorials-auto-scaling-group-verify-cli"></a>

首先，您将需要 Amazon EC2 实例的公有 DNS。

使用通过调 AWS CLI 用**describe-instances**命令获取 Auto Scaling 组中 Amazon EC2 实例的公有 DNS。

在调用此命令之前，您将需要 Amazon EC2 实例的 ID。要获取此 ID，请如前一样针对 **CodeDeployDemo-AS-Group** 调用 **describe-auto-scaling-groups**：

```
aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].InstanceId" --output text
```

现在调用 **describe-instances** 命令：

```
aws ec2 describe-instances --instance-id instance-id --query "Reservations[0].Instances[0].PublicDnsName" --output text
```

返回的值是 Amazon EC2 实例的公有 DNS。

使用网络浏览器，使用如下所示的 URL 显示部署到该 Amazon EC2 实例的 SimpleDemoApp 修订：

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

如果您看到恭喜页面，则表示您已成功使用 CodeDeploy 在 Auto Scaling 组中的单个 Amazon EC2 实例上部署了修订！

接下来，您将一个 Amazon EC2 实例添加到 Amazon EC2 组中。在 Amazon EC2 Auto Scaling 添加亚马逊 EC2 实例后， CodeDeploy 会将您的修订版部署到新实例。

## 检查结果（控制台）
<a name="tutorials-auto-scaling-group-verify-console"></a>

首先，您将需要 Amazon EC2 实例的公有 DNS。

打开位于 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 的 Amazon EC2 控制台。

在 Amazon EC2 导航窗格的 **Auto Scaling** 下，选择 **Auto Scaling 组**，然后选择 **CodeDeployDemo-AS-Group** 条目。

在**实例**选项卡上，选择列表中的 Amazon EC2 实例 ID。

在 **Instances** 页中的 **Description** 选项卡上，记下 **Public DNS** 值。它看上去应与下类似：**ec2-01-234-567-890.compute-1.amazonaws.com**。

使用网络浏览器，使用如下所示的 URL 显示部署到该 Amazon EC2 实例的 SimpleDemoApp 修订：

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

如果您看到恭喜页面，则表示您已成功使用 CodeDeploy 在 Auto Scaling 组中的单个 Amazon EC2 实例上部署了修订！

接下来，将一个 Amazon EC2 实例添加到 Amazon EC2 组中。在 Amazon EC2 Auto Scaling 添加亚马逊 EC2 实例后， CodeDeploy 会将您的修订版部署到新的亚马逊 EC2 实例。

# 步骤 4：增加 Auto Scaling 组中的 Amazon EC2 实例数量
<a name="tutorials-auto-scaling-group-scale-up"></a>

在此步骤中，指示 Auto Scaling 组创建其他 Amazon EC2 实例。在 Amazon EC2 Auto Scaling 创建实例后，将您的修订 CodeDeploy 部署到该实例。

**Topics**
+ [扩展 Auto Scaling 组中的 Amazon EC2 实例数（CLI）](#tutorials-auto-scaling-group-scale-up-cli)
+ [扩展部署组中的 Amazon EC2 实例数（控制台）](#tutorials-auto-scaling-group-scale-up-console)

## 扩展 Auto Scaling 组中的 Amazon EC2 实例数（CLI）
<a name="tutorials-auto-scaling-group-scale-up-cli"></a>

1. 调用 **update-auto-scaling-group** 命令以将名为 **CodeDeployDemo-AS-Group** 的 Auto Scaling 组中的 Amazon EC2 实例数量从 1 增至 2。

   在本地 Linux、macOS 或 Unix 计算机上：

   ```
   aws autoscaling update-auto-scaling-group \
     --auto-scaling-group-name CodeDeployDemo-AS-Group \
     --min-size 2 \
     --max-size 2 \
     --desired-capacity 2
   ```

   在本地 Windows 计算机上：

   ```
   aws autoscaling update-auto-scaling-group --auto-scaling-group-name CodeDeployDemo-AS-Group --min-size 2 --max-size 2 --desired-capacity 2
   ```

1. 确保 Auto Scaling 组现在有两个 Amazon EC2 实例。针对 **CodeDeployDemo-AS-Group** 调用 **describe-auto-scaling-groups** 命令：

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].[HealthStatus, LifecycleState]" --output text
   ```

   请在返回的值显示 `Healthy` 和 `InService` 之后继续。

## 扩展部署组中的 Amazon EC2 实例数（控制台）
<a name="tutorials-auto-scaling-group-scale-up-console"></a>

1. 在 Amazon EC2 导航栏的 **Auto Scaling** 下，选择 **Auto Scaling 组**，然后选择 **CodeDeployDemo-AS-Group**。

1. 选择**操作**，然后选择**编辑**。

1. 在 **Details（详细信息）**选项卡上的 **Desired（所需数量）**、**Min（最小数量）**和 **Max（最大数量）**框中，键入 **2**，然后选择 **Save（保存）**。

1. 选择 **Instances** 选项卡。新的 Amazon EC2 实例应该会出现在列表中。（如果该实例未出现，您可能需要选择几次 **Refresh** 按钮。） 在 “**生命周期**” 列中**InService**显示的值且 “健康” 的值出现在 “**健康****状态**” 列中之前，请勿继续操作。

# 步骤 5：再次检查结果
<a name="tutorials-auto-scaling-group-reverify"></a>

在此步骤中，您将检查是否在 Auto Scaling 组中的新实例上 CodeDeploy 安装了 SimpleDemoApp修订版。

**Topics**
+ [检查自动部署结果（CLI）](#tutorials-auto-scaling-group-reverify-cli)
+ [检查自动部署结果（控制台）](#tutorials-auto-scaling-group-reverify-console)

## 检查自动部署结果（CLI）
<a name="tutorials-auto-scaling-group-reverify-cli"></a>

1. 在调用 **get-deployment** 命令之前，您将需要自动部署的 ID。要获取 ID，请针对名为 **SimpleDemoApp** 的应用程序和名为 **SimpleDemoDG** 的部署组调用 **list-deployments** 命令：

   ```
   aws deploy list-deployments --application-name SimpleDemoApp --deployment-group-name SimpleDemoDG --query "deployments" --output text
   ```

   应该有两个部署 IDs。在对 **get-deployment** 命令的调用中使用您尚未使用的 ID：

   ```
   aws deploy get-deployment --deployment-id deployment-id --query "deploymentInfo.[status, creator]" --output text
   ```

   除了部署状态外，在命令输出中，您应该还会看到 `autoScaling`。（`autoScaling` 意味着 Amazon EC2 Auto Scaling 已创建部署。） 

   请在部署状态显示 `Succeeded` 之后继续。

1. 在调用 **describe-instances** 命令之前，您将需要新的 Amazon EC2 实例的 ID。要获取此 ID，请针对 **CodeDeployDemo-AS-Group** 再次调用 **describe-auto-scaling-groups** 命令：

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names CodeDeployDemo-AS-Group --query "AutoScalingGroups[0].Instances[*].InstanceId" --output text
   ```

   现在调用 **describe-instances** 命令：

   ```
   aws ec2 describe-instances --instance-id instance-id --query "Reservations[0].Instances[0].PublicDnsName" --output text
   ```

   在 **describe-instances** 命令输出中，记下新的 Amazon EC2 实例的公有 DNS。

1. 使用如下所示的 URL，在 Web 浏览器中显示部署到该 Amazon EC2 实例的 `SimpleDemoApp` 修订：

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

   如果出现恭喜页面，则表示您曾经 CodeDeploy 在 Auto Scaling 群组中向扩展后的 Amazon EC2 实例部署修订版！

## 检查自动部署结果（控制台）
<a name="tutorials-auto-scaling-group-reverify-console"></a>

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

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

   

1. 选择 Amazon EC2 Auto Scaling 创建的部署的部署 ID。

   .

1.  **部署**页显示有关部署的信息。通常，您会自己创建部署，但 Amazon EC2 Auto Scaling 会代表您创建一个部署以将您的修订部署到新的 Amazon EC2 实例。

1. 页面顶部显示**成功**之后，在实例上验证结果。您首先需要获取实例的公有 DNS：

1. 在 Amazon EC2 导航窗格的 **Auto Scaling** 下，选择 **Auto Scaling 组**，然后选择 **CodeDeployDemo-AS-Group** 条目。

1. 在**实例**选项卡上，选择新的 Amazon EC2 实例的 ID。

1. 在 **Instances** 页中的 **Description** 选项卡上，记下 **Public DNS** 值。它看上去应与下类似：**ec2-01-234-567-890.compute-1.amazonaws.com**。

使用如下所示的 URL，显示部署到该实例的 `SimpleDemoApp` 修订：

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

如果出现恭喜页面，则表示您曾经 CodeDeploy 在 Auto Scaling 群组中向扩展后的 Amazon EC2 实例部署修订版！

# 步骤 6：清除
<a name="tutorials-auto-scaling-group-clean-up"></a>

在此步骤中，您将删除 Auto Scaling 组，以避免对您在本教程中使用的资源持续收费。或者，您可以删除 Auto Scaling 配置和 CodeDeploy部署组件记录。

**Topics**
+ [清除资源（CLI）](#tutorials-auto-scaling-group-clean-up-cli)
+ [清除资源（控制台）](#tutorials-auto-scaling-group-clean-up-console)

## 清除资源（CLI）
<a name="tutorials-auto-scaling-group-clean-up-cli"></a>

1. 通过针对 **CodeDeployDemo-AS-Group** 调用 **delete-auto-scaling-group** 命令来删除 Auto Scaling 组。这同时将终止 Amazon EC2 实例。

   ```
   aws autoscaling delete-auto-scaling-group --auto-scaling-group-name CodeDeployDemo-AS-Group --force-delete
   ```

1. （可选）通过对名为 **CodeDeployDemo-AS-Launch-Template** 的启动配置调用 **delete-launch-template** 命令，删除 Auto Scaling 启动模板：

   ```
   aws ec2 delete-launch-template --launch-template-name CodeDeployDemo-AS-Launch-Template
   ```

1. 或者， CodeDeploy 通过对名为的应用程序调用**delete-application**命令来删除该应用程序**SimpleDemoApp**。这同时将删除所有关联的部署、部署组和修订记录。

   ```
   aws deploy delete-application --application-name SimpleDemoApp
   ```

1. 要删除 Systems Manager 状态管理器关联，请调用 **delete-association** 命令。

   ```
   aws ssm delete-association --assocation-id association-id
   ```

   你可以*association-id*通过调用**describe-association**命令来获取。

   ```
   aws ssm describe-association --name AWS-ConfigureAWSPackage --targets Key=tag:Name,Values=CodeDeployDemo
   ```

## 清除资源（控制台）
<a name="tutorials-auto-scaling-group-clean-up-console"></a>

要删除 Auto Scaling 组，同时终止 Amazon EC2 实例，请执行以下操作：

1. 

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

1. 在 Amazon EC2 导航窗格的 **Auto Scaling** 下，选择 **Auto Scaling 组**，然后选择 **CodeDeployDemo-AS-Group** 条目。

1. 依次选择 **Actions**、**Delete** 和 **Yes, Delete**。

（可选）要删除启动模板，请执行以下操作：

1.  在导航栏中的 **Auto Scaling** 下，选择**启动配置**，然后选择 **CodeDeployDemo-AS-Launch-Template**。

1. 依次选择 **Actions**、**Delete launch configuration** 和 **Yes, Delete**。

1. （可选）从中删除应用程序 CodeDeploy。这同时将删除所有关联的部署、部署组和修订记录。在 [https://console.aws.amazon.com/codede](https://console.aws.amazon.com/codedeploy) ploy 上打开 CodeDeploy 控制台。

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

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

   

1. 在应用程序列表中，选择 **SimpleDemoApp**。

1. 在 **Application details** 页上，选择 **Delete application**。

1. 当系统提示时，输入 **Delete**，然后选择**删除**。

要删除 Systems Manager 状态管理器关联，请执行以下操作：

1. 在 https://console.aws.amazon.com /systems- AWS Systems Manager manager 上打开控制台。

1. 在导航窗格中，选择**状态管理器**。

1. 选择您创建的关联，然后选择**删除**。