

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

# 使用 Amazon EC2 实例 CodeDeploy
<a name="instances-ec2"></a>

Amazon EC2 实例是您使用 Amazon Elastic Compute Cloud 创建和配置的虚拟计算环境。Amazon EC2 在 AWS 云中提供可扩展的计算容量。您可以根据 CodeDeploy 部署需要，使用 Amazon EC2 启动任意数量或数量的虚拟服务器。

有关 Amazon EC2 的更多信息，请参阅 [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/)。

本节中的说明向您展示如何创建和配置用于 CodeDeploy 部署的 Amazon EC2 实例。

**Topics**
+ [为创建一个 Amazon EC2 实例 CodeDeploy](instances-ec2-create.md)
+ [创建 Amazon EC2 实例（CloudFormation 模板）](instances-ec2-create-cloudformation-template.md)
+ [配置一个 Amazon EC2 实例](instances-ec2-configure.md)

# 为 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 代理的自动安装和更新。

# 为 CodeDeploy （CloudFormation 模板）创建 Amazon EC2 实例
<a name="instances-ec2-create-cloudformation-template"></a>

您可以使用我们的 CloudFormation 模板快速启动运行亚马逊 Linux 或 Windows 服务器的 Amazon EC2 实例。您可以使用 AWS CLI、 CodeDeploy 控制台或 AWS APIs 使用模板启动实例。除了启动实例之外，模板还可用于：
+ 指示 CloudFormation 向实例授予参与 CodeDeploy部署的权限。
+ 为实例添加标签，以便在部署期间 CodeDeploy 可以找到它。
+ 在实例上安装并运行 CodeDeploy 代理。

您不必使用我们的 CloudFormation 来设置 Amazon EC2 实例。有关替代方法，请参阅[使用以下实例 CodeDeploy](instances.md)。

我们不为运行 Ubuntu 服务器或红帽企业 Linux (RHEL) 的 Amazon EC2 实例提供 CloudFormation 模板。

**Topics**
+ [开始前的准备工作](#instances-ec2-create-cloudformation-template-before)
+ [使用 CloudFormation 模板启动 Amazon EC2 实例（控制台）](#instances-ec2-create-cloudformation-template-console)
+ [使用 CloudFormation 模板启动 Amazon EC2 实例 (AWS CLI)](#instances-ec2-create-cloudformation-template-cli)

## 开始前的准备工作
<a name="instances-ec2-create-cloudformation-template-before"></a>

在使用 CloudFormation 模板启动 Amazon EC2 实例之前，请务必完成以下步骤。

1. 请确保您已创建管理员用户，如[步骤 1：设置](getting-started-setting-up.md)中所述。仔细检查用户是否具有以下最低权限，然后添加任何不存在的最低权限：
   + cloudformation:\$1
   + codedeploy:\$1
   + ec2:\$1
   + 我是：AddRoleToInstanceProfile
   + 我是：CreateInstanceProfile
   + 我是：CreateRole
   + 我是：DeleteInstanceProfile
   + 我是：DeleteRole
   + 我是：DeleteRolePolicy
   + 我是：GetRole
   + 我是：DeleteRolePolicy
   + 我是：PutRolePolicy
   + 我是：RemoveRoleFromInstanceProfile

1. 确保您有实例密钥对，以允许通过 SSH 访问运行 Amazon Linux 的 Amazon EC2 实例，或者允许通过 RDP 访问运行 Windows Server 的实例。

   要查找密钥对名称，请打开 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)中列出的其中一个区域中创建的。否则，您无法将实例密钥对与 CodeDeploy 结合使用。

## 使用 CloudFormation 模板启动 Amazon EC2 实例（控制台）
<a name="instances-ec2-create-cloudformation-template-console"></a>

1. 登录 AWS 管理控制台 并在 [https://console.aws.amazon.com/cloudformat](https://console.aws.amazon.com/cloudformation/) ion 上打开 CloudFormation 控制台。
**重要**  
使用您使用的相同帐户登录[入门 CodeDeploy](getting-started-codedeploy.md)。 AWS 管理控制台 在导航栏的区域选择器中，选择区域和[终端节点中列出的其中一个区域*AWS 一般参考*](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)。 CodeDeploy 仅支持这些区域。

1. 选择**创建堆栈**。

1. 在**选择模板**中，选择**指定 Amazon S3 模板 URL**。在框中，键入您所在地区的 CloudFormation 模板位置，然后选择 “**下一步**”。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/instances-ec2-create-cloudformation-template.html)

1. 在 **Stack name（堆栈名称）**框中，键入堆栈的名称（例如，**CodeDeployDemoStack**）。

1. 在 **Parameters** 中，键入以下内容，然后选择 **Next**。
   + 对于 **InstanceCount**，键入要启动的实例数量。（建议您保留默认值 **1**。）
   + 对于 **InstanceType**，键入要启动的实例类型（或保留默认值 **t1.micro**）。
   + 对于 **KeyPairName**，键入实例 key pair 名称。仅键入密钥对名称而不是密钥对文件扩展名。
   + **OperatingSystem**在 box 中，键**Windows**入启动运行 Windows 服务器的实例（或保留默认值 **Linux**）。
   + 对于 **SSHLocation**，键入用于通过 SSH 或 RDP 连接到实例的 IP 地址范围（或保留默认值 **0.0.0.0** /0）。
**重要**  
提供的默认值**0.0.0.0/0**仅用于演示目的。 CodeDeploy 不要求 Amazon EC2 实例可以不受限制地访问端口。作为最佳实践，建议您限制对 SSH（和 HTTP）端口的访问。有关更多信息，请参阅[有关保护您的 Amazon EC2 实例的提示](https://aws.amazon.com/articles/1233)。
   + 对于 **TagKey**，键入部署期间用于识别实例的实例标签密钥 CodeDeploy （或保留默认**名称**）。
   + 对于 **TagValue**，键入部署期间用于识别实例的实例标签值 CodeDeploy （或保留默认值 **CodeDeployDemo**）。

1. 在 **Options** 页上，将选项框留空，然后选择 **Next**。
**重要**  
CloudFormation 标签与 CodeDeploy 标签不同。 CloudFormation 使用标签来简化基础架构的管理。 CodeDeploy 使用标签来识别 Amazon EC2 实例。您在 “指定**参数” 页面上指定**了 CodeDeploy标签。

1. 在 “**查看**” 页面的 “**能力**” 中，选中 “**我确认 CloudFormation 可能会创建 IAM 资源**” 复选框，然后选择 “**创建**”。

   创建堆栈并启动 Amazon EC2 实例后 CloudFormation ，在 CloudFormation 控制台中，**CREATE\$1COMPL** ETE 将显示在**状态**列中。此过程可能耗时数分钟。

要验证 CodeDeploy 代理是否在 Amazon EC2 实例上运行[管理 CodeDeploy 代理操作](codedeploy-agent-operations.md)，请参阅，然后继续[使用创建应用程序 CodeDeploy](applications-create.md)。

## 使用 CloudFormation 模板启动 Amazon EC2 实例 (AWS CLI)
<a name="instances-ec2-create-cloudformation-template-cli"></a>

1. 在调用**create-stack**命令时使用我们的 CloudFormation 模板。该堆栈将启动一个安装了 CodeDeploy 代理的新 Amazon EC2 实例。

   要启动运行 Amazon Linux 的 Amazon EC2 实例，请执行以下操作：

   ```
   aws cloudformation create-stack \
     --stack-name CodeDeployDemoStack \
     --template-url templateURL \
     --parameters ParameterKey=InstanceCount,ParameterValue=1 ParameterKey=InstanceType,ParameterValue=t1.micro \
       ParameterKey=KeyPairName,ParameterValue=keyName ParameterKey=OperatingSystem,ParameterValue=Linux \
       ParameterKey=SSHLocation,ParameterValue=0.0.0.0/0 ParameterKey=TagKey,ParameterValue=Name \
       ParameterKey=TagValue,ParameterValue=CodeDeployDemo \
     --capabilities CAPABILITY_IAM
   ```

   要启动运行 Windows Server 的 Amazon EC2 实例，请执行以下操作：

   ```
   aws cloudformation create-stack --stack-name CodeDeployDemoStack --template-url template-url --parameters ParameterKey=InstanceCount,ParameterValue=1 ParameterKey=InstanceType,ParameterValue=t1.micro ParameterKey=KeyPairName,ParameterValue=keyName ParameterKey=OperatingSystem,ParameterValue=Windows ParameterKey=SSHLocation,ParameterValue=0.0.0.0/0 ParameterKey=TagKey,ParameterValue=Name ParameterKey=TagValue,ParameterValue=CodeDeployDemo --capabilities CAPABILITY_IAM
   ```

   *keyName*是实例 key pair 的名称。仅键入密钥对名称而不是密钥对文件扩展名。

   *template-url*是您所在地区的 CloudFormation 模板所在位置：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/codedeploy/latest/userguide/instances-ec2-create-cloudformation-template.html)

   此命令使用指定 Amazon S3 存储桶中的 CloudFormation 模板创建一个名**CodeDeployDemoStack**为的 CloudFormation 堆栈。虽然 Amazon EC2 实例基于 t1.micro 实例类型，但您可使用任何类型。虽然它是使用值 **CodeDeployDemo** 标记的，但您可使用任何值标记它。它已应用指定的实例密钥对。

1. 调用**describe-stacks**命令验证名为的 CloudFormation 堆栈**CodeDeployDemoStack**已成功创建：

   ```
   aws cloudformation describe-stacks --stack-name CodeDeployDemoStack --query "Stacks[0].StackStatus" --output text
   ```

   在返回 `CREATE_COMPLETE` 值之前，不要继续。

要验证 CodeDeploy 代理是否在 Amazon EC2 实例上运行[管理 CodeDeploy 代理操作](codedeploy-agent-operations.md)，请参阅，然后继续[使用创建应用程序 CodeDeploy](applications-create.md)。

# 配置要使用的 Amazon EC2 实例 CodeDeploy
<a name="instances-ec2-configure"></a>

这些说明向您展示了如何配置运行亚马逊 Linux、Ubuntu 服务器、红帽企业 Linux (RHEL) 或 Windows 服务器的 Amazon EC2 实例以用于部署。 CodeDeploy 

**注意**  
如果您没有亚马逊 EC2 实例，则可以使用该 CloudFormation 模板启动一个运行亚马逊 Linux 或 Windows Server 的实例。我们不提供适用于 Ubuntu Server 或 RHEL 的模板。

## 步骤 1：验证 IAM 实例配置文件是否已附加到 Amazon EC2 实例
<a name="instances-ec2-configure-1-verify-instance-profile-attached"></a>

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

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

1. 浏览并在列表中选择您的 Amazon EC2 实例。

1. 在详细信息窗格中的**描述**选项卡上，记下 **IAM 角色**字段中的值，然后继续下一部分。

   如果该字段为空，您可以向实例附加 IAM 实例配置文件。有关信息，请参阅[将 IAM 角色附加到实例](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role)。

## 步骤 2：验证附加的 IAM 实例配置文件是否具有正确的访问权限
<a name="instances-ec2-configure-2-verify-instance-profile-permissions"></a>

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**角色**。

1. 浏览并选择您在前一部分的步骤 4 中记下的 IAM 角色名称。
**注意**  
如果要使用 CloudFormation 模板生成的服务角色，而不是按照中的说明创建的服务角色[步骤 2：为创建服务角色 CodeDeploy](getting-started-create-service-role.md)，请注意以下几点：  
在我们 CloudFormation 模板的某些版本中，生成并附加到 Amazon EC2 实例的 IAM 实例配置文件的显示名称与 IAM 控制台中的显示名称不同。例如，IAM 实例配置文件的显示名称可能为 `CodeDeploySampleStack-expnyi6-InstanceRoleInstanceProfile-IK8J8A9123EX`，而 IAM 控制台中的 IAM 实例配置文件的显示名称可能为 `CodeDeploySampleStack-expnyi6-InstanceRole-C5P33V1L64EX`。  
为帮助您标识 IAM 控制台中的实例配置文件，您会看到二者的前缀 `CodeDeploySampleStack-expnyi6-InstanceRole` 是相同的。有关这些显示名称可能不同的原因的信息，请参阅[实例配置文件](https://docs.aws.amazon.com/IAM/latest/UserGuide/instance-profiles.html)。

1. 选择 **Trust Relationships** 选项卡。如果**可信实体**中没有显示**身份提供商 ec2.amazonaws.com** 的条目，则您无法使用此 Amazon EC2 实例。使用[使用以下实例 CodeDeploy](instances.md)中的信息停止并创建 Amazon EC2 实例。

   如果有一个显示**身份提供商 ec2.amazonaws.com** 的条目，并且您仅将应用程序存储在存储 GitHub库中，请直接跳至。[步骤 3：为 Amazon EC2 实例添加标签](#instances-ec2-configure-3-tag-instance)

   如果有显示**身份提供商 ec2.amazonaws.com** 的条目，并且您将应用程序存储在 Amazon S3 存储桶中，则选择**权限**选项卡。

1. 如果**权限策略**区域中有一个策略，则展开该策略，然后选择**编辑策略**。

1. 选择 **JSON** 选项卡。如果您将应用程序存储在 Amazon S3 存储桶中，请确保 `"s3:Get*"` 和 `"s3:List*"` 位于指定操作列表中。

   它可能如下所示：

   ```
   {"Statement":[{"Resource":"*","Action":[
     ... Some actions may already be listed here ...
     "s3:Get*","s3:List*"
     ... Some more actions may already be listed here ...
     ],"Effect":"Allow"}]}
   ```

   也可能如下所示：

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource": "*"
       }
     ]
   }
   ```

------

   如果 `"s3:Get*"` 和 `"s3:List*"` 不在指定操作列表中，请选择 **Edit** 添加它们，然后选择 **Save**。（如果 `"s3:Get*"` 和 `"s3:List*"` 都不是列表中的最后一个操作，请确保在操作后添加逗号，以便策略文档进行验证。）
**注意**  
我们建议您将此策略仅限定用于您的 Amazon EC2 实例必须访问的 Amazon S3 存储桶。确保允许访问包含 CodeDeploy 代理的 Amazon S3 存储桶。否则，在实例上安装或更新 CodeDeploy 代理时可能会出现错误。要仅向 IAM 实例配置文件授予对 Amazon S3 中某些 CodeDeploy 资源套件存储桶的访问权限，请使用以下策略，但要删除要阻止访问的存储桶的行：  

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:s3:::aws-codedeploy-us-east-2/*",
           "arn:aws:s3:::aws-codedeploy-us-east-1/*",
           "arn:aws:s3:::aws-codedeploy-us-west-1/*",
           "arn:aws:s3:::aws-codedeploy-us-west-2/*",
           "arn:aws:s3:::aws-codedeploy-ca-central-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-west-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-west-2/*",
           "arn:aws:s3:::aws-codedeploy-eu-west-3/*",
           "arn:aws:s3:::aws-codedeploy-eu-central-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-central-2/*",
           "arn:aws:s3:::aws-codedeploy-eu-north-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-south-1/*",
           "arn:aws:s3:::aws-codedeploy-eu-south-2/*",
           "arn:aws:s3:::aws-codedeploy-il-central-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-east-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-northeast-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-northeast-2/*",
           "arn:aws:s3:::aws-codedeploy-ap-northeast-3/*",
           "arn:aws:s3:::aws-codedeploy-ap-southeast-1/*",        
           "arn:aws:s3:::aws-codedeploy-ap-southeast-2/*",
           "arn:aws:s3:::aws-codedeploy-ap-southeast-3/*",
           "arn:aws:s3:::aws-codedeploy-ap-southeast-4/*",
           "arn:aws:s3:::aws-codedeploy-ap-south-1/*",
           "arn:aws:s3:::aws-codedeploy-ap-south-2/*",
           "arn:aws:s3:::aws-codedeploy-me-central-1/*",
           "arn:aws:s3:::aws-codedeploy-me-south-1/*",
           "arn:aws:s3:::aws-codedeploy-sa-east-1/*"
         ]
       }
     ]
   }
   ```

## 步骤 3：为 Amazon EC2 实例添加标签
<a name="instances-ec2-configure-3-tag-instance"></a>

有关如何为 Amazon EC2 实例添加标签 CodeDeploy 以便在部署期间找到它的说明，请参阅[在控制台中使用标签](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#Using_Tags_Console)，然后返回此页面。

**注意**  
您可以使用任何所需的键和值标记 Amazon EC2 实例。只需确保在部署到此实例时指定此密钥和值即可。

## 步骤 4：在 Amazon EC2 实例上安装 AWS CodeDeploy 代理
<a name="instances-ec2-configure-4-install-agent"></a>

有关如何在 Amazon EC2 实例上安装 CodeDeploy 代理并验证其是否正在运行的说明[管理 CodeDeploy 代理操作](codedeploy-agent-operations.md)，请参阅，然后继续[使用创建应用程序 CodeDeploy](applications-create.md)。