

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為 CodeDeploy 建立 Amazon EC2 執行個體 (CloudFormation 範本）
<a name="instances-ec2-create-cloudformation-template"></a>

您可以使用我們的 CloudFormation 範本快速啟動執行 Amazon Linux 或 Windows Server 的 Amazon EC2 執行個體。您可以使用 AWS CLI、CodeDeploy 主控台或 AWS APIs，透過 範本啟動執行個體。除了啟動執行個體之外，範本還會執行下列動作：
+ 指示 CloudFormation 授予執行個體參與 CodeDeploy 部署的許可。
+ 標記執行個體，以便 CodeDeploy 在部署期間找到它。
+ 在執行個體上安裝並執行 CodeDeploy 代理程式。

您不需要使用 CloudFormation 來設定 Amazon EC2 執行個體。如需替代方案，請參閱[使用 CodeDeploy 的執行個體](instances.md)。

我們不會為執行 Ubuntu Server 或 Red Hat Enterprise 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
   + iam:AddRoleToInstanceProfile
   + iam:CreateInstanceProfile
   + iam:CreateRole
   + iam:DeleteInstanceProfile
   + iam:DeleteRole
   + iam:DeleteRolePolicy
   + iam:GetRole
   + iam:DeleteRolePolicy
   + iam：PutRolePolicy
   + iam:RemoveRoleFromInstanceProfile

1. 請確定您擁有執行個體金鑰對，以啟用對執行 Amazon Linux 之 Amazon EC2 執行個體的 SSH 存取，或對執行 Windows Server 之執行個體的 RDP 存取。

   若要尋找金鑰對名稱，請開啟位於 https：//[https://console.aws.amazon.com/ec2](https://console.aws.amazon.com/ec2) 的 Amazon 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)。請確定已在 區域[和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中列出的其中一個區域中建立金鑰對*AWS 一般參考*。否則，您無法搭配 CodeDeploy 使用執行個體金鑰對。

## 使用 CloudFormation 範本啟動 Amazon EC2 執行個體 （主控台）
<a name="instances-ec2-create-cloudformation-template-console"></a>

1. 登入 AWS 管理主控台 並在 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 開啟 CloudFormation 主控台。
**重要**  
 AWS 管理主控台 使用您在 中使用的相同帳戶登入 [CodeDeploy 入門](getting-started-codedeploy.md)。在導覽列的區域選擇器中，選擇 區域[和 端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中列出的其中一個區域*AWS 一般參考*。CodeDeploy 僅支援這些區域。

1. 選擇 **Create Stack** (建立堆疊)。

1. 在**選擇範本中**，選擇**指定 Amazon S3 範本 URL**。在方塊中，輸入您區域 CloudFormation 範本的位置，然後選擇**下一步**。  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/instances-ec2-create-cloudformation-template.html)

1. 在 **Stack name (堆疊名稱)** 方塊中，輸入堆疊的名稱 (例如，**CodeDeployDemoStack**)。

1. 在 **Parameters (參數)** 中，輸入下列資訊，然後選擇 **Next (下一步)**。
   + 針對 **InstanceCount**，輸入您想要啟動的執行個體數目 (建議您保留預設值 **1**)。
   + 針對 **InstanceType**，輸入您想要啟動的執行個體類型 (或保留預設值 **t1.micro**)。
   + 針對 **KeyPairName**，輸入執行個體金鑰對名稱。只輸入金鑰對名稱，而非金鑰對副檔名。
   + 針對 **OperatingSystem** 方塊，輸入 **Windows**以啟動執行 Windows Server 的執行個體 （或保留 **Linux** 的預設值）。
   + 針對 **SSHLocation**，輸入 IP 地址範圍，以用於使用 SSH 或 RDP 連線至執行個體 (或保留預設值 **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 資源**方塊，然後選擇**建立**。

   在 CloudFormation 建立堆疊並啟動 Amazon EC2 執行個體之後，在 主控台中 CloudFormation ，**CREATE\$1COMPLETE** 會顯示在**狀態**欄中。此程序需要幾分鐘的時間。

若要驗證 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* 是執行個體金鑰對名稱。只輸入金鑰對名稱，而非金鑰對副檔名。

   *template-url* 是您區域的 CloudFormation 範本位置：  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/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)。