

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

# 步骤 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**（实例类型要求）部分中，使用默认设置简化此步骤。（请勿覆盖启动模板。） 在本教程中，您将仅 On-Demand 使用启动模板中指定的实例类型启动实例。

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`实例标签。