

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

# 使用 CodeDeploy 的 Amazon EC2 執行個體
<a name="instances-ec2"></a>

Amazon EC2 執行個體是您使用 Amazon Elastic Compute Cloud 建立和設定的虛擬運算環境。Amazon EC2 在 AWS 雲端中提供可擴展的運算容量。您可以使用 Amazon EC2 啟動 CodeDeploy 部署所需的任意數量或最少數量的虛擬伺服器。

如需 Amazon EC2 的詳細資訊，請參閱 [https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/)。

本節中的指示說明如何建立和設定 Amazon EC2 執行個體，以便在 CodeDeploy 部署中使用。

**Topics**
+ [為 CodeDeploy 建立 Amazon EC2 執行個體](instances-ec2-create.md)
+ [建立 Amazon EC2 執行個體 (CloudFormation 範本）](instances-ec2-create-cloudformation-template.md)
+ [設定 Amazon EC2 執行個體](instances-ec2-configure.md)

# 為 CodeDeploy (AWS CLI 或 Amazon EC2 主控台） 建立 Amazon EC2 執行個體
<a name="instances-ec2-create"></a>

這些指示說明如何啟動已設定為在 CodeDeploy 部署中使用的新 Amazon EC2 執行個體。

您可以使用我們的 CloudFormation 範本來啟動執行 Amazon Linux 或 Windows Server 的 Amazon EC2 執行個體，該執行個體已設定為在 CodeDeploy 部署中使用。我們不會為執行 Ubuntu Server 或 Red Hat Enterprise Linux (RHEL) 的 Amazon EC2 執行個體提供 CloudFormation 範本。如需使用範本之替代方案的詳細資訊，請參閱[使用 CodeDeploy 的執行個體](instances.md)。

您可以使用 Amazon EC2 主控台 AWS CLI或 Amazon EC2 APIs 來啟動 Amazon EC2 執行個體。

## 啟動 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 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Instances (執行個體)**，然後選擇 **Launch Instance (啟動執行個體)**。

1. 在 **Step 1: Choose an Amazon Machine Image (AMI) (步驟 1：選擇 Amazon Machine Image (AMI))** 頁面上，從 **Quick Start (快速入門)** 標籤中找出您想要使用的作業系統和版本，然後選擇 **Select (選取)**。您必須選擇 CodeDeploy 支援的 Amazon EC2 AMI 作業系統。如需詳細資訊，請參閱[CodeDeploy 代理程式支援的作業系統](codedeploy-agent.md#codedeploy-agent-supported-operating-systems)。

1. 在**步驟 2：選擇執行個體類型**頁面上，選擇任何可用的 Amazon EC2 執行個體類型，然後選擇**下一步：設定執行個體詳細資訊**。

1. 在**步驟 3：設定執行個體詳細資訊**頁面的 **IAM 角色**清單中，選擇您在 中建立的 IAM 執行個體角色[步驟 4：為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔](getting-started-create-iam-instance-profile.md)。如果您已使用建議的角色名稱，則選擇 **CodeDeployDemo-EC2-Instance-Profile**。如果您已建立自己的角色名稱，則請選取該名稱。
**注意**  
如果**網路**清單中未顯示預設虛擬私有雲端 (VPC)，您必須選擇或建立 Amazon VPC 和子網路。選擇 **Create new VPC (建立新 VPC)** 或 **Create new subnet (建立新的子網路)**，或兩者皆選。如需詳細資訊，請參閱[您的 VPC 和子網路](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Subnets.html)。

1. 選擇 **Next: Add Storage (下一步：新增儲存體)**。

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**，然後選擇 **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 執行個體金鑰對，則請選擇 **Create a new key pair** (建立新的金鑰對)，然後給予可輕鬆辨識的名稱。選擇**下載金鑰對**，將 Amazon EC2 執行個體金鑰對下載至您的電腦。
**重要**  
如果您想要使用 SSH 或 RDP 存取 Amazon EC2 執行個體，您必須擁有金鑰對。

1. 選擇 **Launch Instances** (啟動執行個體)。

1. 選擇 Amazon EC2 執行個體的 ID。在啟動執行個體並通過所有檢查之前，請不要繼續進行。

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

在 CodeDeploy 部署中使用 CodeDeploy 代理程式之前，必須先在 Amazon EC2 執行個體上安裝 CodeDeploy 代理程式。如需詳細資訊，請參閱[安裝 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 執行個體。

   在您呼叫此命令之前，需要收集下列資訊：
   + 您用於執行個體的 Amazon Machine Image (AMI) ID (*ami-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/)。
   + IAM 執行個體描述檔的名稱，具有存取 Amazon S3 儲存貯體的許可，該儲存貯體存放您區域的 CodeDeploy 代理程式安裝檔案。

     如需建立 IAM 執行個體描述檔的詳細資訊，請參閱 [步驟 4：為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔](getting-started-create-iam-instance-profile.md)。
   + Amazon EC2 執行個體金鑰對的名稱 (*key-name*)，可讓 SSH 存取執行 Amazon Linux、Ubuntu Server 的 Amazon EC2 執行個體，或讓 RHEL 或 RDP 存取執行 Windows Server 的 Amazon EC2 執行個體。
**重要**  
只輸入金鑰對名稱，而非金鑰對副檔名。例如，*my-keypair*，而非 *my-keypair.pem*。

     若要尋找金鑰對名稱，請開啟位於 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 使用 Amazon EC2 執行個體金鑰對。

   **適用於 Amazon Linux、RHEL 和 Ubuntu Server**

   若要呼叫 **run-instances**命令來啟動執行 Amazon Linux、Ubuntu Server 或 RHEL 的 Amazon EC2 執行個體，並連接您在 中建立的 IAM 執行個體描述檔[步驟 4：為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔](getting-started-create-iam-instance-profile.md)。例如：

   ```
   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 執行個體，並連接您在 中建立的 IAM 執行個體描述檔[步驟 4：為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔](getting-started-create-iam-instance-profile.md)，並指定您在步驟 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、金鑰對和執行個體類型啟動單一 Amazon EC2 執行個體，並使用指定的 IAM 執行個體描述檔，並在啟動期間執行指定的指令碼。

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 代理程式](codedeploy-agent-operations-install.md)。

**注意**  
您可以在主控台中建立部署群組時，設定 CodeDeploy 代理程式的自動安裝和更新。

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

# 設定 Amazon EC2 執行個體以使用 CodeDeploy
<a name="instances-ec2-configure"></a>

這些指示說明如何設定執行 Amazon Linux、Ubuntu Server、Red Hat Enterprise Linux (RHEL) 或 Windows Server 的 Amazon EC2 執行個體，以便在 CodeDeploy 部署中使用。

**注意**  
如果您沒有 Amazon EC2 執行個體，您可以使用 CloudFormation 範本啟動執行 Amazon Linux 或 Windows Server 的執行個體。我們不會提供 Ubuntu Server 或 RHEL 的範本。

## 步驟 1：確認 IAM 執行個體描述檔已連接至您的 Amazon EC2 執行個體
<a name="instances-ec2-configure-1-verify-instance-profile-attached"></a>

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)：// 開啟 Amazon 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. 在以下網址開啟 IAM 主控台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/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 執行個體。使用 中的資訊停止並建立 Amazon EC2 執行個體[使用 CodeDeploy 的執行個體](instances.md)。

   如果有項目讀取**身分提供者 (ec2.amazonaws.com)**，而您只將應用程式存放在 GitHub 儲存庫中，請跳到 [步驟 3：標記 Amazon EC2 執行個體](#instances-ec2-configure-3-tag-instance)。

   如果有讀取**身分提供者 (ec2.amazonaws.com) **的項目，且您正在 Amazon S3 儲存貯體中存放應用程式，請選擇**許可**索引標籤。

1. 如果 **Managed Policies (受管政策)** 區域中有政策，則請展開政策，然後選擇 **Edit policy (編輯政策)**。

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 儲存貯體。 Amazon EC2 請務必讓 存取包含 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)。