

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

# 为 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)。