

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

# 为 CodeDeploy （AWS CLI 或亚马逊 EC2 控制台）创建 Amazon EC2 实例
<a name="instances-ec2-create"></a>

这些说明向您展示了如何启动配置为用于 CodeDeploy 部署的新 Amazon EC2 实例。

您可以使用我们的 CloudFormation 模板启动运行亚马逊 Linux 或 Windows 服务器的 Amazon EC2 实例，该实例已配置为用于 CodeDeploy 部署。我们不为运行 Ubuntu 服务器或红帽企业 Linux (RHEL) 的 Amazon EC2 实例提供 CloudFormation 模板。有关模板使用的替代方法，请参阅[使用以下实例 CodeDeploy](instances.md)。

您可以使用亚马逊 EC2 控制台或亚马逊 EC2 API 启动亚马逊 EC2 实例。 AWS CLI

## 启动 Amazon EC2 实例（控制台）
<a name="instances-ec2-create-console"></a>

### 先决条件
<a name="instances-ec2-create-console-prerequisites"></a>

如果您尚未执行此操作，请按照中的[入门 CodeDeploy](getting-started-codedeploy.md)说明设置和配置 AWS CLI 并创建 IAM 实例配置文件。

### 启动 Amazon EC2 实例
<a name="instances-ec2-create-console-steps"></a>

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

1. 在导航窗格中，选择 **Instances（实例）**，然后选择 **Launch Instance（启动实例）**。

1. 在 **Step 1: Choose an Amazon Machine Image（AMI）（步骤 1: 选择 Amazon 系统映像（AMI））**页上，从 **Quick Start（快速启动）**选项卡中，找到要使用的操作系统和版本，然后选择 **Select（选择）**。您必须选择支持的 Amazon EC2 AMI 操作系统 CodeDeploy。有关更多信息，请参阅 [CodeDeploy 代理支持的操作系统](codedeploy-agent.md#codedeploy-agent-supported-operating-systems)。

1. 在**步骤 2: 选择一个实例类型**页上，选择任何可用的 Amazon EC2 实例类型，然后选择**下一步: 配置实例详细信息**。

1. 在**步骤 3：配置实例详细信息**页上的 **IAM 角色**列表中，选择您在[步骤 4：为 Amazon EC2 实例创建 IAM 实例配置文件](getting-started-create-iam-instance-profile.md)中创建的 IAM 实例角色。如果您使用建议的角色名称，则选择 **CodeDeployDemo-EC2-Instance-Profile**。如果您创建了自己的角色名称，请选择该名称。
**注意**  
如果**网络**列表中未显示默认虚拟私有云（VPC），则必须选择或创建 Amazon VPC 和子网。选择**新建 VPC** 和/或**新建子网**。有关更多信息，请参阅[您的 VPC 和子网](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)。

1. 选择**下一步：添加存储**。

1. 将 **Step 4: Add Storage（步骤 4: 添加存储）**页保持不变，然后选择 **Next: Add Tags（下一步: 添加标签）**。

1. 在 **Step 5: Add Tags（步骤 5: 添加标记）**页面上，选择 **Add Tag（添加标记）**。

1.  在 **Key（键）**框中，键入 **Name**。在 **Value（值）**框中，键入 **CodeDeployDemo**。
**重要**  
**Key（键）**和 **Value（值）**框的内容是区分大小写的。

1. 选择 **Next: Configure Security Group**。

1. 在 **Step 6: Configure Security Group（步骤 6: 配置安全组）**页上，将 **Create a new security group（创建新安全组）**选项保持选中状态。

   将为运行 Amazon Linux、Ubuntu Server 或 RHEL 的 Amazon EC2 实例配置默认 SSH 角色。将为运行 Windows Server 的 Amazon EC2 实例配置默认 RDP 角色。

1. 如果您要打开 HTTP 端口，请选择 **Add Rule（添加规则）**按钮，然后从 **Type（类型）**下拉列表中，选择 **HTTP**。接受 **Source（源）**默认值 **Custom 0.0.0.0/0（自定义 0.0.0.0/0）**，然后选择 **Review and Launch（审核和启动）**。
**注意**  
在生产环境中，我们建议限制对 SSH、RDP 和 HTTP 端口的访问，而不是指定 **Anywhere 0.0.0.0/0**。 CodeDeploy 不需要不受限制的端口访问，也不需要 HTTP 访问。有关更多信息，请参阅[有关保护您的 Amazon EC2 实例的提示](https://aws.amazon.com/articles/1233)。

   如果 **Boot from General Purpose（SSD）（由通用（SSD）启动）**对话框出现，请遵循说明，然后选择 **Next（下一步）**。

1. 将 **Step 7: Review Instance Launch（步骤 7: 查看实例启动）**页保持不变，然后选择 **Launch（启动）**。

1. 在 **Select an existing key pair or create a new key pair（选择现有密钥对或创建新密钥对）**对话框中，选择 **Choose an existing key pair（选择现有密钥对）**或 **Create a new key pair（创建新密钥对）**。如果您已配置 Amazon EC2 实例密钥对，则可在此处选择它。

   如果您尚未拥有 Amazon EC2 实例密钥对，请选择**创建新密钥对**并为密钥对指定一个可识别的名称。选择**下载密钥对**以将 Amazon EC2 实例密钥对下载到您的计算机。
**重要**  
如果您需要使用 SSH 或 RDP 访问您的 Amazon EC2 实例，则必须具有密钥对。

1. 选择**启动新实例**。

1. 选择 Amazon EC2 实例的 ID。在实例启动并通过所有检查之前，请不要继续。

### 安装代 CodeDeploy 理
<a name="instances-ec2-create-console-agent"></a>

在 CodeDeploy部署中使用 CodeDeploy 代理之前，必须先将其安装在您的 Amazon EC2 实例上。有关更多信息，请参阅 [安装代 CodeDeploy 理](codedeploy-agent-operations-install.md)。

**注意**  
在控制台中创建部署组时，可以配置 CodeDeploy 代理的自动安装和更新。

## 启动 Amazon EC2 实例（CLI）
<a name="instances-ec2-create-cli"></a>

### 先决条件
<a name="instances-ec2-create-cli-prerequisites"></a>

如果您尚未执行此操作，请按照中的[入门 CodeDeploy](getting-started-codedeploy.md)说明设置和配置 AWS CLI 并创建 IAM 实例配置文件。

### 启动 Amazon EC2 实例
<a name="instances-ec2-create-cli-steps"></a>

1. **仅针对 Windows Server** 如果您要创建运行 Windows Server 的 Amazon EC2 实例，请调用 **create-security-group** 和 **authorize-security-group-ingress** 命令来创建允许 RDP 访问（默认情况下不允许）或者 HTTP 访问的安全组。例如，要创建名为 *CodeDeployDemo-Windows-Security-Group 的安全组*，请逐一运行以下命令：

   ```
   aws ec2 create-security-group --group-name CodeDeployDemo-Windows-Security-Group --description "For launching Windows Server images for use with CodeDeploy"
   ```

   ```
   aws ec2 authorize-security-group-ingress --group-name CodeDeployDemo-Windows-Security-Group --to-port 3389 --ip-protocol tcp --cidr-ip 0.0.0.0/0 --from-port 3389
   ```

   ```
   aws ec2 authorize-security-group-ingress --group-name CodeDeployDemo-Windows-Security-Group --to-port 80 --ip-protocol tcp --cidr-ip 0.0.0.0/0 --from-port 80
   ```
**注意**  
在演示中，这些命令将创建一个安全组来允许通过端口 3389 的 RDP 无限制访问或通过端口 80 的 HTTP 无限制访问。作为最佳实践，建议您将访问限制到 RDP 和 HTTP 端口。 CodeDeploy 不需要无限制的端口访问，也不需要 HTTP 访问。有关更多信息，请参阅[有关保护您的 Amazon EC2 实例的提示](https://aws.amazon.com/articles/1233)。

1. 调用 **run-instances** 命令以创建并启动 Amazon EC2 实例。

   在您调用此命令之前，您需要收集以下内容：
   + 您用于实例的亚马逊系统映像 (AMI*ami-id*) () 的 ID。要获取此 ID，请参阅[查找合适的 AMI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html)。
   + 您创建的 Amazon EC2 实例类型的名称 (*instance-type*)，例如`t1.micro`。有关列表，请参阅 [Amazon EC2 实例类型](https://aws.amazon.com/ec2/instance-types/)。
   + 有权访问存储您所在地区的 CodeDeploy 代理安装文件的 Amazon S3 存储桶的 IAM 实例配置文件的名称。

     有关创建 IAM 实例配置文件的信息，请参阅[步骤 4：为 Amazon EC2 实例创建 IAM 实例配置文件](getting-started-create-iam-instance-profile.md)。
   + 亚马逊 EC2 实例密钥对 (*key-name*) 的名称，用于允许通过SSH访问运行亚马逊 Linux、Ubuntu Server 的亚马逊 EC2 实例，或者对运行 Windows 服务器的亚马逊 EC2 实例进行 RHEL 或 RDP 访问。
**重要**  
仅键入密钥对名称而不是密钥对文件扩展名。例如，*my-keypair*，而不是 *my-keypair.pem*。

     要查找密钥对名称，请打开 Amazon EC2 控制台，网址为 [https://console.aws.amazon.com/ec2](https://console.aws.amazon.com/ec2)。在导航窗格中，在 **Network & Security（网络和安全）**下，选择 **Key Pairs（密钥对）**，然后记下列表中的密钥对名称。

     要生成密钥对，请参阅[使用 Amazon EC2 创建您的密钥对](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#having-ec2-create-your-key-pair)。请务必在《AWS 一般参考》**的[区域和终端节点](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中列出的其中一个区域中创建密钥对。否则，您将无法将 Amazon EC2 实例密钥对与一起使用 CodeDeploy。

   **对于 Amazon Linux、RHEL 和 Ubuntu Server**

   旨在调用 **run-instances** 命令以启动运行 Amazon Linux、Ubuntu Server 或 RHEL 的 Amazon EC2 实例并附加您在[步骤 4：为 Amazon EC2 实例创建 IAM 实例配置文件](getting-started-create-iam-instance-profile.md)中创建的 IAM 实例配置文件。例如：

   ```
   aws ec2 run-instances \
     --image-id ami-id \
     --key-name key-name \
     --count 1 \
     --instance-type instance-type \
     --iam-instance-profile Name=iam-instance-profile
   ```
**注意**  
此命令将为 Amazon EC2 实例创建一个允许访问多个端口的默认安全组，包括通过端口 22 的 SSH 无限制访问或通过端口 80 的 HTTP 无限制访问。作为最佳实践，我们建议仅限制对 SSH 和 HTTP 端口的访问。 CodeDeploy 不需要不受限制的端口访问，也不需要 HTTP 端口访问权限。有关更多信息，请参阅[有关保护您的 Amazon EC2 实例的提示](https://aws.amazon.com/articles/1233)。

   **对于 Windows Server**

   旨在调用 **run-instances** 命令以启动运行 Windows Server 的 Amazon EC2 实例、附加您在[步骤 4：为 Amazon EC2 实例创建 IAM 实例配置文件](getting-started-create-iam-instance-profile.md)中创建的 IAM 实例配置文件，并指定您在步骤 1 中创建的安全组的名称。例如：

   ```
   aws ec2 run-instances --image-id ami-id --key-name key-name --count 1 --instance-type instance-type --iam-instance-profile Name=iam-instance-profile --security-groups CodeDeploy-Windows-Security-Group
   ```

   这些命令将使用指定的 AMI 实例配置文件启动一个具有指定的 AMI、密钥对和实例类型的 Amazon EC2 实例，并在启动过程中运行指定脚本。

1. 记下输出中的 `InstanceID` 的值。如果您忘记此值，可稍后通过对 Amazon EC2 实例密钥对调用 **describe-instances** 命令来获取它。

   ```
   aws ec2 describe-instances --filters "Name=key-name,Values=keyName" --query "Reservations[*].Instances[*].[InstanceId]" --output text
   ```

   使用实例 ID 调用**create-tags**命令，该命令会标记 Amazon EC2 实例，以便以后在部署期间 CodeDeploy 可以找到该实例。在以下示例中，标签名为 **CodeDeployDemo**，但您可指定所需的任何 Amazon EC2 实例标签。

   ```
   aws ec2 create-tags --resources instance-id --tags Key=Name,Value=CodeDeployDemo
   ```

   您可以为一个实例同时应用多个标签。例如：

   ```
   aws ec2 create-tags --resources instance-id --tags Key=Name,Value=testInstance Key=Region,Value=West Key=Environment,Value=Beta
   ```

   要验证 Amazon EC2 实例是否已启动并通过所有检查，请使用实例 ID 调用 **describe-instance-status** 命令。

   ```
   aws ec2 describe-instance-status --instance-ids instance-id --query "InstanceStatuses[*].InstanceStatus.[Status]" --output text 
   ```

如果实例已启动并通过所有检查，输出中将显示 `ok`。

### 安装代 CodeDeploy 理
<a name="instances-ec2-create-console-agent"></a>

在 CodeDeploy部署中使用 CodeDeploy 代理之前，必须先将其安装在您的 Amazon EC2 实例上。有关更多信息，请参阅 [安装代 CodeDeploy 理](codedeploy-agent-operations-install.md)。

**注意**  
在控制台中创建部署组时，可以配置 CodeDeploy 代理的自动安装和更新。