

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

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

CodeDeploy 支援部署至執行 Amazon Linux、Ubuntu Server、Red Hat Enterprise Linux (RHEL) 和 Windows Server 的執行個體。

您可以使用 CodeDeploy 部署到 Amazon EC2 執行個體和內部部署執行個體。內部部署執行個體是不屬於 Amazon EC2 執行個體的任何實體裝置，可執行 CodeDeploy 代理程式並連線至公有 AWS 服務端點。您可以使用 CodeDeploy 將應用程式同時部署到雲端的 Amazon EC2 執行個體，以及部署到 PCs 辦公室或資料中心伺服器的桌上型電腦。

## 比較 Amazon EC2 執行個體與內部部署執行個體
<a name="instances-comparison"></a>

下表比較 Amazon EC2 執行個體和內部部署執行個體：


| **Subject** | **Amazon EC2 執行個體** | **內部部署執行個體** | 
| --- | --- | --- | 
|  要求您安裝並執行與執行個體上執行的作業系統相容的 CodeDeploy 代理程式版本。  | 是 |  是  | 
|  需要執行個體能夠連線至 CodeDeploy。  |  是  |  是  | 
|  需要將 IAM 執行個體描述檔連接至執行個體。IAM 執行個體描述檔必須具有參與 CodeDeploy 部署的許可。如需相關資訊，請參閱[步驟 4：為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔](getting-started-create-iam-instance-profile.md)。  |  是  |  否  | 
|  需要您執行下列其中一項來驗證和註冊執行個體： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/instances.html)  |  否  |  是  | 
|  您必須先向 CodeDeploy 註冊每個執行個體，才能部署到該執行個體。  |  否  |  是  | 
|  您必須先標記每個執行個體，CodeDeploy 才能部署到執行個體。  |  是  |  是  | 
|  可以參與 Amazon EC2 Auto Scaling 和 Elastic Load Balancing 案例，作為 CodeDeploy 部署的一部分。  |  是  |  否  | 
|  可以從 Amazon S3 儲存貯體和 GitHub 儲存庫部署。  |  是  |  是  | 
|  可以支援觸發，以在部署或執行個體中發生指定的事件時，提示傳送 SMS 或電子郵件通知。  |  是  |  是  | 
|  遵守相關聯部署的計費。  |  否  |  是  | 

## CodeDeploy 的執行個體任務
<a name="instances-task-list"></a>

若要啟動或設定執行個體以用於部署，請選擇下列說明：


|  |  | 
| --- |--- |
|  我想要啟動新的 Amazon Linux 或 Windows Server Amazon EC2 執行個體。  |  若要以最少的工作量啟動 Amazon EC2 執行個體，請參閱 [為 CodeDeploy 建立 Amazon EC2 執行個體 (CloudFormation 範本）](instances-ec2-create-cloudformation-template.md)。 若要大部分自行啟動 Amazon EC2 執行個體，請參閱 [為 CodeDeploy (AWS CLI 或 Amazon EC2 主控台） 建立 Amazon EC2 執行個體](instances-ec2-create.md)。  | 
|  我想要啟動新的 Ubuntu Server 或 RHEL Amazon EC2 執行個體。  |  請參閱 [為 CodeDeploy (AWS CLI 或 Amazon EC2 主控台） 建立 Amazon EC2 執行個體](instances-ec2-create.md)。  | 
| 我想要設定 Amazon Linux、Windows Server、Ubuntu Server 或 RHEL Amazon EC2 執行個體。 | 請參閱 [設定 Amazon EC2 執行個體以使用 CodeDeploy](instances-ec2-configure.md)。 | 
| 我想要設定 Windows Server、Ubuntu Server 或 RHEL 內部部署執行個體 （非 Amazon EC2 執行個體的實體裝置）。 | 請參閱 [使用 CodeDeploy 的內部部署執行個體](instances-on-premises.md)。 | 
| 我想要 CodeDeploy 在藍/綠部署期間佈建執行個體的替代機群。 | 請參閱 [在 CodeDeploy 中使用部署](deployments.md)。 | 

若要在 Amazon EC2 Auto Scaling 群組中準備 Amazon EC2 執行個體，您必須遵循一些額外的步驟。如需詳細資訊，請參閱[將 CodeDeploy 與 Amazon EC2 Auto Scaling 整合](integrations-aws-auto-scaling.md)。

**主題**
+ [Tagging Instances for Deployments](instances-tagging.md)
+ [Working with Amazon EC2 Instances](instances-ec2.md)
+ [Working with On-Premises Instances](instances-on-premises.md)
+ [View Instance Details](instances-view-details.md)
+ [Instance Health](instances-health.md)

# CodeDeploy 中部署群組的標記執行個體
<a name="instances-tagging"></a>

為了協助管理您的 Amazon EC2 執行個體和內部部署執行個體，您可以使用標籤將自己的中繼資料指派給每個資源。標籤可讓您以不同的方式分類您的執行個體，(例如依據目的、擁有者或環境)。當您有許多執行個體時，這很實用。基於指派的標籤，您可以快速鑑別一個執行個體或一群執行個體之功用。每個標籤皆包含由您定義的一個金鑰與一個選用值。如需詳細資訊，請參閱[標記 Amazon EC2 資源](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)。

若要指定 CodeDeploy 部署群組中包含的執行個體，您可以在一或多個標籤*群組中指定標籤*。符合您標籤準則的執行個體，是該部署群組的部署建立時，安裝最新版應用程式修訂的那些。

**注意**  
您也可以在部署群組中包含 Amazon EC2 Auto Scaling 群組，但它們是透過名稱來識別，而不是透過套用至執行個體的標籤來識別。如需相關資訊，請參閱[將 CodeDeploy 與 Amazon EC2 Auto Scaling 整合](integrations-aws-auto-scaling.md)。

部署群組中執行個體的條件可以跟單一標籤群組裡的單一標籤一樣簡單。也可以最多有三個標籤群組，每個標籤群組最多 10 個標籤。

若您使用單一標籤群組，任何可透過群組中至少一個標籤識別的執行個體都會包含在部署群組中。若您使用多個標籤群組，僅由包含 *每一個* 標籤群組中辨識出至少一個標籤的執行個體。

以下範例說明如何使用標籤和標籤群組可用來選擇執行個體部署群組。

**Topics**
+ [範例 1：單一標籤群組、單一標籤](#instances-tagging-example-1)
+ [範例 2：單一標籤群組、多個標籤](#instances-tagging-example-2)
+ [範例 3：多個標籤群組、單一標籤](#instances-tagging-example-3)
+ [範例 4：多個標籤群組、多個標籤](#instances-tagging-example-4)

## 範例 1：單一標籤群組、單一標籤
<a name="instances-tagging-example-1"></a>

您可以指定單一標籤在單一標籤群組：


**標籤群組 1**  

| 金鑰 | 值 | 
| --- | --- | 
| 名稱 | AppVersion-ABC | 

每個使用 `Name=AppVersion-ABC` 標籤的執行個體，是部署群組的一部分，即使其已套用其他標籤了。

CodeDeploy 主控台設定檢視：

![\[CodeDeploy 主控台顯示一個具有一個標籤的標籤群組。\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/images/TaggingExample1-polaris.png)


JSON 結構：

```
"ec2TagSet": { 
         "ec2TagSetList": [ 
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Name",
                  "Value": "AppVersion-ABC"
               }
            ]
         ]
      },
```

## 範例 2：單一標籤群組、多個標籤
<a name="instances-tagging-example-2"></a>

您可以指定多個標籤在單一標籤群組：


**標籤群組 1**  

| 金鑰 | 值 | 
| --- | --- | 
| 區域 | 北 | 
| 區域 | 南 | 
| 區域 | 東 | 

一個執行個體與部屬群組的某部分被標籤，即使如果它有其他標籤已套用。例如，如果您有其他 `Region=West` 標籤的執行個體，他們仍不包含在此部署群組。

CodeDeploy 主控台設定檢視：

![\[CodeDeploy 主控台顯示一個具有三個標籤的標籤群組。\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/images/TaggingExample2-polaris.png)


JSON 結構：

```
"ec2TagSet": { 
         "ec2TagSetList": [ 
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Region",
                  "Value": "North"
               },
                              { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Region",
                  "Value": "South"
               },
                              { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Region",
                  "Value": "East"
               }
            ]
         ]
      },
```

## 範例 3：多個標籤群組、單一標籤
<a name="instances-tagging-example-3"></a>

您也可以使用有單一金鑰值對的標籤群組之多個組合，在每一個中為部署群組的執行個體指定標準。當您在部署群組中使用多個標籤群組，只有所有標籤群組識別出的執行個體會包含在部署群組中。


**標籤群組 1**  

| 金鑰 | 值 | 
| --- | --- | 
| 名稱 | AppVersion-ABC | 


**標籤群組 2**  

| 金鑰 | 值 | 
| --- | --- | 
| 區域 | 北 | 


**標籤群組 3**  

| 金鑰 | 值 | 
| --- | --- | 
| Type | t2.medium | 

您可能在許多區域有執行個體，和許多有 `Name=AppVersion-ABC` 標籤的執行個體類型。在此範例中，只有含有 `Region=North` 和 `Type=t2.medium` 的執行個體是部署群組的一部分。

CodeDeploy 主控台設定檢視：

![\[CodeDeploy 主控台會顯示三個標籤群組，每個群組各有一個標籤。\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/images/TaggingExample3-polaris.png)


JSON 結構：

```
"ec2TagSet": { 
         "ec2TagSetList": [ 
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Name",
                  "Value": "AppVersion-ABC"
               }
            ],
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Region",
                  "Value": "North"
               }
            ],
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Type",
                  "Value": "t2.medium"
               }
            ],
         ]
      },
```

## 範例 4：多個標籤群組、多個標籤
<a name="instances-tagging-example-4"></a>

當您使用多個標籤群組與一個或多個群組中的多個標籤，執行個體必須與每個群組至少一個標籤相符。


**標籤群組 1**  

| 金鑰 | 值 | 
| --- | --- | 
| Environment | 試用版 | 
| Environment | 安裝 | 


**標籤群組 2**  

| 金鑰 | 值 | 
| --- | --- | 
| 區域 | 北 | 
| 區域 | 南 | 
| 區域 | 東 | 


**標籤群組 3**  

| 金鑰 | 值 | 
| --- | --- | 
| Type | t2.medium | 
| 類型 | t2.large | 

在這個範例中，被包含在這個部署群組裡，一個執行個體必須標記為與 (1) `Environment=Beta` 或 `Environment=Staging`，與 (2) `Region=North`、`Region=South` 或 `Region=East`，以及與 (3 )`Type=t2.medium` 或 `Type=t2.large` 一起。

以說明，執行個體與以下標籤群組*將*在那些被包含在部署群組裡。
+ `Environment=Beta`, `Region=North`,`Type=t2.medium`
+ `Environment=Staging`,`Region=East`,`Type=t2.large`
+ `Environment=Staging`,`Region=South`,`Type=t2.large`

執行個體與以下標籤群組*將*不在那些被包含在部署群組裡。**醒目提示** 金鑰值導致執行個體被排除在外。
+ `Environment=Beta`、區域=**西**、`Type=t2.medium`
+ `Environment=Staging`、`Region=East`、類型=**t2.micro**
+ 環境=**生產**、`Region=South`、`Type=t2.large`

CodeDeploy 主控台設定檢視：

![\[CodeDeploy 主控台顯示三個標籤群組，每個群組都有多個標籤。\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/images/TaggingExample4-polaris.png)


JSON 結構：

```
"ec2TagSet": { 
         "ec2TagSetList": [ 
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Environment",
                  "Value": "Beta"
               },
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Environment",
                  "Value": "Staging"
               }
            ],
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Region",
                  "Value": "North"
               },
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Region",
                  "Value": "South"
               },
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Region",
                  "Value": "East"
               }
            ],
            [ 
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Type",
                  "Value": "t2.medium"
               },
               { 
                  "Type": "KEY_AND_VALUE",
                  "Key": "Type",
                  "Value": "t2.large"
               }
            ],
         ]
      },
```

# 使用 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)。

# 使用 CodeDeploy 的內部部署執行個體
<a name="instances-on-premises"></a>

內部部署執行個體是不屬於 Amazon EC2 執行個體的任何實體裝置，可執行 CodeDeploy 代理程式並連線至公有 AWS 服務端點。

將 CodeDeploy 應用程式修訂版部署至內部部署執行個體包含兩個主要步驟：
+ **步驟 1** – 設定每個現場部署執行個體、向 CodeDeploy 註冊執行個體，然後標記執行個體。
+ **步驟 2** – 將應用程式修訂部署至內部部署執行個體。
**注意**  
若要試驗建立和部署範例應用程式修訂版，以正確設定和註冊現場部署執行個體，請參閱[教學課程：使用 CodeDeploy 將應用程式部署至內部部署執行個體 (Windows Server、Ubuntu Server 或 Red Hat Enterprise Linux)](tutorials-on-premises-instance.md)。如需現場部署執行個體及其如何使用 CodeDeploy 的相關資訊，請參閱 [使用 CodeDeploy 的內部部署執行個體](#instances-on-premises)。

如果您不想再在部署中使用現場部署執行個體，您可以從部署群組中移除現場部署執行個體標籤。如需更強力的方法，請從執行個體移除現場部署執行個體標籤。您也可以明確撤銷現場部署執行個體的註冊，如此，則該現場部署執行個體不能再嫆於任何部署。如需詳細資訊，請參閱[在 CodeDeploy 中管理內部部署執行個體操作](on-premises-instances-operations.md)。

本節中的指示說明如何設定現場部署執行個體，然後使用 CodeDeploy 註冊和標記執行個體，以便在部署中使用。本節也說明如何使用 CodeDeploy 取得現場部署執行個體的相關資訊，並在您不再計劃部署現場部署執行個體之後取消註冊現場部署執行個體。

**Topics**
+ [設定現場部署執行個體的先決條件](instances-on-premises-prerequisites.md)
+ [註冊現場部署執行個體](on-premises-instances-register.md)
+ [管理內部部署執行個體操作](on-premises-instances-operations.md)

# 設定現場部署執行個體的先決條件
<a name="instances-on-premises-prerequisites"></a>

在您可以註冊現場部署執行個體前，必須滿足以下先決條件。

**重要**  
如果您使用 [register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 命令，並定期重新整理使用 AWS Security Token Service (AWS STS) 產生的臨時登入資料，還有其他先決條件。如需相關資訊，請參閱[IAM 工作階段 ARN 註冊先決條件](register-on-premises-instance-iam-session-arn.md#register-on-premises-instance-iam-session-arn-prerequisites)。

**裝置要求**

您想要使用 CodeDeploy 準備、註冊和標記為現場部署執行個體的裝置必須執行支援的作業系統。如需清單，請參閱[CodeDeploy 代理程式支援的作業系統](codedeploy-agent.md#codedeploy-agent-supported-operating-systems)。

如果您的作業系統不受支援，CodeDeploy 代理程式可作為開放原始碼，讓您適應您的需求。如需詳細資訊，請參閱 GitHub 中的 [CodeDeploy 代理](https://github.com/aws/aws-codedeploy-agent)程式儲存庫。

**對外通訊**

內部部署執行個體必須能夠連線至公有 AWS 服務端點，才能與 CodeDeploy 通訊。

CodeDeploy 代理程式會透過連接埠 443 使用 HTTPS 進行傳出通訊。

**管理控制**

內部部署執行個體上用來設定內部部署執行個體的本機或網路帳戶，必須能夠以 `sudo` 或 `root`（適用於 Ubuntu Server) 或以管理員 （適用於 Windows Server) 身分執行。

**IAM 許可**

您用來註冊現場部署執行個體的 IAM 身分必須獲得完成註冊的許可 （並視需要取消註冊現場部署執行個體）。

除了 中所述的政策之外[步驟 3：限制 CodeDeploy 使用者的許可](getting-started-policy.md)，請確定呼叫的 IAM 身分已連接下列其他政策。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow", 
      "Action": [
        "iam:CreateAccessKey",
        "iam:CreateUser",
        "iam:DeleteAccessKey",
        "iam:DeleteUser",
        "iam:DeleteUserPolicy",
        "iam:ListAccessKeys",
        "iam:ListUserPolicies",
        "iam:PutUserPolicy",
        "iam:GetUser"
      ],
      "Resource": "*"
    }
  ]
}
```

------

如需關於如何附加 IAM 政策的資訊，請參閱[管理 IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html)。

# 向 CodeDeploy 註冊現場部署執行個體
<a name="on-premises-instances-register"></a>

若要註冊現場部署執行個體，您必須使用 IAM 身分來驗證您的請求。您可以從以下選項中選擇使用的 IAM 身分和註冊方式：
+ 使用 IAM 角色 ARN 來驗證請求。
  + 使用 [register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 命令並定期重新整理使用 AWS Security Token Service (AWS STS) 產生的臨時登入資料，以手動設定大多數的註冊選項。此選項提供最高層級的安全性，因為身分驗證會使用逾時且必須定期重新整理的臨時權杖進行。建議針對任何大小的生產部署使用此選項。如需相關資訊，請參閱[使用 register-on-premises-instance 命令 (IAM 工作階段 ARN) 註冊現場部署執行個體](register-on-premises-instance-iam-session-arn.md)。
+ （不建議） 使用 IAM 使用者 ARN 來驗證請求。
  + 使用 [註冊](https://docs.aws.amazon.com/cli/latest/reference/deploy/register.html)命令進行最自動化的註冊程序。此選項僅應用於安全性較不值得關注的非生產部署。此選項較不安全，因為它使用靜態 （永久） 登入資料進行身分驗證。此選項適用於註冊單一現場部署執行個體。如需相關資訊，請參閱[使用 register 命令 (IAM 使用者 ARN) 註冊現場部署執行個體](instances-on-premises-register-instance.md)。
  + 使用 [register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 命令手動設定大多數的註冊選項。適用於註冊少量的現場部署執行個體。如需相關資訊，請參閱[使用 register-on-premises-instance 命令 (IAM 使用者 ARN) 註冊現場部署執行個體](register-on-premises-instance-iam-user-arn.md)。

**Topics**
+ [使用 register-on-premises-instance 命令 (IAM 工作階段 ARN) 註冊現場部署執行個體](register-on-premises-instance-iam-session-arn.md)
+ [使用 register 命令 (IAM 使用者 ARN) 註冊現場部署執行個體](instances-on-premises-register-instance.md)
+ [使用 register-on-premises-instance 命令 (IAM 使用者 ARN) 註冊現場部署執行個體](register-on-premises-instance-iam-user-arn.md)

# 使用 register-on-premises-instance 命令 (IAM 工作階段 ARN) 註冊現場部署執行個體
<a name="register-on-premises-instance-iam-session-arn"></a>

若要最大程度控制現場部署執行個體的身分驗證和註冊，您可以使用 [register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 命令，並定期重新整理使用 AWS Security Token Service () 產生的臨時憑證AWS STS。執行個體的靜態 IAM 角色會擔任這些重新整理 AWS STS 登入資料的角色，以執行 CodeDeploy 部署操作。

當您需要註冊大量執行個體時，此方法非常有用。它可讓您使用 CodeDeploy 自動化註冊程序。您可以使用自己的身分和身分驗證系統來驗證內部部署執行個體，並將 IAM 工作階段憑證從服務分發給執行個體，以便與 CodeDeploy 搭配使用。

**注意**  
或者，您可以使用分佈至所有現場部署執行個體的共用 IAM 使用者來呼叫 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API，以擷取現場部署執行個體的工作階段登入資料。此方法安全性較低，不建議用於生產或任務關鍵環境。

使用以下主題中的資訊，使用 產生的臨時安全登入資料來設定現場部署執行個體 AWS STS。

**Topics**
+ [IAM 工作階段 ARN 註冊先決條件](#register-on-premises-instance-iam-session-arn-prerequisites)
+ [步驟 1：建立現場部署執行個體將擔任的 IAM 角色](#register-on-premises-instance-iam-session-arn-1)
+ [步驟 2：使用 產生個別執行個體的臨時登入資料 AWS STS](#register-on-premises-instance-iam-session-arn-2)
+ [步驟 3：將組態檔案新增至現場部署執行個體](#register-on-premises-instance-iam-session-arn-3)
+ [步驟 4：為 CodeDeploy 部署準備內部部署執行個體](#register-on-premises-instance-iam-session-arn-4)
+ [步驟 5：向 CodeDeploy 註冊現場部署執行個體](#register-on-premises-instance-iam-session-arn-5)
+ [步驟 6：標記內部部署執行個體](#register-on-premises-instance-iam-session-arn-6)
+ [步驟 7：將應用程式修訂部署至內部部署執行個體](#register-on-premises-instance-iam-session-arn-7)
+ [步驟 8：追蹤現場部署執行個體的部署](#register-on-premises-instance-iam-session-arn-8)

## IAM 工作階段 ARN 註冊先決條件
<a name="register-on-premises-instance-iam-session-arn-prerequisites"></a>

除了列於[設定現場部署執行個體的先決條件](instances-on-premises-prerequisites.md)中的必要條件之外，也必須符合下列其他要求：

**IAM 許可**

您用來註冊現場部署執行個體的 IAM 身分必須獲得執行 CodeDeploy 操作的許可。確定 **AWSCodeDeployFullAccess** 受管政策已連接至 IAM 身分。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

**用於重新整理臨時登入資料的系統**

如果您使用 IAM 工作階段 ARN 註冊現場部署執行個體，您必須擁有一個定期重新整理臨時登入資料的系統。如果在產生登入資料時指定的期間較短，臨時登入資料會在一小時 (或更短時間) 後過期。重新整理登入資料的方法有兩種：
+ **方法 1**：使用您公司網路中的身分和身分驗證系統以及 CRON 指令碼，該指令碼會定期輪詢該身分和身分驗證系統，並將最新的工作階段登入資料複製到該執行個體。這可讓您將身分驗證和身分結構與 整合， AWS 而無需變更 CodeDeploy 代理程式或服務，以支援您在組織中使用的身分驗證類型。
+ **方法 2**：定期在執行個體上執行 CRON 任務以呼叫 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 動作，並將工作階段登入資料寫入 CodeDeploy 代理程式可存取的檔案。此方法仍需要使用 IAM 使用者並將登入資料複製到現場部署執行個體，但您可以對各個現場部署執行個體機群重複使用相同的 IAM 使用者和登入資料。

**注意**  
無論您使用的是方法 1 還是 2，都必須設定程序，在臨時工作階段登入資料更新後重新啟動 CodeDeploy 代理程式，新的登入資料才會生效。

如需有關建立和使用 AWS STS 登入資料的資訊，請參閱 [AWS Security Token Service API 參考](https://docs.aws.amazon.com/STS/latest/APIReference/)和[使用臨時安全登入資料來請求存取 AWS 資源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)。

## 步驟 1：建立現場部署執行個體將擔任的 IAM 角色
<a name="register-on-premises-instance-iam-session-arn-1"></a>

您可以使用 AWS CLI 或 IAM 主控台來建立 IAM 角色，供現場部署執行個體用來驗證 CodeDeploy 並與之互動。

您只需建立一個 IAM 角色。您的每個現場部署執行個體都可以擔任此角色，以擷取為此角色提供許可的臨時安全登入資料。

您建立的角色需要下列許可，才能存取安裝 CodeDeploy 代理程式所需的檔案：

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

****  

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

------

我們建議您將此政策限制為只有現場部署執行個體需要存取的 Amazon S3 儲存貯體。如果您限制此政策，請務必將存取權授予包含 CodeDeploy 代理程式的 Amazon S3 儲存貯體。否則，每當在內部部署執行個體上安裝或更新 CodeDeploy 代理程式時，就可能會發生錯誤。如需控制 Amazon S3 儲存貯體存取的資訊，請參閱[管理 Amazon S3 資源的存取許可](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html)。

**建立 IAM 角色**

1. 使用 `--role-name`選項來呼叫 [create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html) 命令，以指定 IAM 角色的名稱 （例如 `CodeDeployInstanceRole`)，以及提供許可`--assume-role-policy-document`的選項。

   當您為此執行個體建立 IAM 角色時，您可以將其命名為 `CodeDeployInstanceRole`，並在名為 `CodeDeployRolePolicy.json` 的檔案中提供所需許可：

   ```
   aws iam create-role --role-name CodeDeployInstanceRole --assume-role-policy-document file://CodeDeployRolePolicy.json
   ```

1. 在呼叫 **create-role** 命令的輸出中，記錄 ARN 欄位的值。例如：

   ```
   arn:aws:iam::123456789012:role/CodeDeployInstanceRole
   ```

   當您使用 AWS STS [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API 為每個執行個體產生短期登入資料時，將需要角色 ARN。

   如需建立 IAM 角色的詳細資訊，請參閱《*IAM 使用者指南*》中的[建立角色以委派許可給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)。

   如需將許可指派給現有角色的資訊，請參閱《 [AWS CLI 命令參考](https://docs.aws.amazon.com/cli/latest/reference/)》中的 [put-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-role-policy.html)。

## 步驟 2：使用 產生個別執行個體的臨時登入資料 AWS STS
<a name="register-on-premises-instance-iam-session-arn-2"></a>

在您產生將用於註冊現場部署執行個體的臨時登入資料之前，必須先建立或選擇您將為其產生臨時登入資料的 IAM 身分 (使用者或角色)。在此 IAM 身分的政策設定中，必須包含 `sts:AssumeRole` 許可。

如需授予 IAM 身分`sts:AssumeRole`許可的資訊，請參閱[建立角色以將許可委派給 AWS 服務和](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)。

有兩種方式可產生臨時登入資料：
+ 搭配 使用 [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html) 命令 AWS CLI。例如：

  ```
  aws sts assume-role --role-arn arn:aws:iam::12345ACCOUNT:role/role-arn --role-session-name session-name
  ```

  其中：
  + *12345ACCOUNT* 是您組織的 12 位數號碼。
  + *role-arn* 是要擔任的角色 ARN (在[步驟 1：建立現場部署執行個體將擔任的 IAM 角色](#register-on-premises-instance-iam-session-arn-1)中產生)。
  + *session-name* 是您為正在建立之角色工作階段提供的名稱。
**注意**  
如果您使用定期輪詢身分和身分驗證系統的 CRON 指令碼，並將最新的工作階段登入資料複製到執行個體 （方法 1 用於重新整理 中所述的暫時登入資料[IAM 工作階段 ARN 註冊先決條件](#register-on-premises-instance-iam-session-arn-prerequisites))，您可以改為使用任何支援的 AWS SDK 來呼叫 [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)。
+ 使用 提供的工具 AWS。

  aws-codedeploy-session-helper 工具會產生 AWS STS 登入資料，並將其寫入您放在執行個體上的檔案。此工具最適用於 [IAM 工作階段 ARN 註冊先決條件](#register-on-premises-instance-iam-session-arn-prerequisites)中所述用於重新整理臨時登入資料的方法 2。在此方法中，aws-codedeploy-session-helper 工具會放置在每個執行個體上，並使用 IAM 使用者的許可執行命令。每個執行個體都使用與此工具相同的 IAM 使用者登入資料。

  如需詳細資訊，請參閱 [aws-codedeploy-session-helper](https://github.com/awslabs/aws-codedeploy-samples/tree/master/utilities/aws-codedeploy-session-helper) GitHub 儲存庫。
**注意**  
在您建立 IAM 工作階段登入資料後，將其放置在現場部署執行個體上的任何位置。在下一個步驟中，您將設定 CodeDeploy 代理程式來存取此位置的登入資料。

在繼續之前，請確保您將用於定期重新整理臨時登入資料的系統已準備好。如果臨時登入資料未重新整理，對現場部署執行個體的部署將會失敗。如需詳細資訊，請參閱 [IAM 工作階段 ARN 註冊先決條件](#register-on-premises-instance-iam-session-arn-prerequisites)中「用於重新整理臨時登入資料的系統」。

## 步驟 3：將組態檔案新增至現場部署執行個體
<a name="register-on-premises-instance-iam-session-arn-3"></a>

使用 root 或管理員許可，將組態檔案新增至現場部署執行個體。此組態檔案用於宣告要用於 CodeDeploy 的 IAM 登入資料和目標 AWS 區域。該檔案必須新增至現場部署執行個體上的特定位置。檔案必須包含 IAM 暫時工作階段 ARN、其私密金鑰 ID 和私密存取金鑰，以及目標 AWS 區域。

**新增組態檔案**

1. 在內部部署執行個體的下列位置建立名為 `codedeploy.onpremises.yml`（適用於 Ubuntu Server 或 RHEL 內部部署執行個體） 或 `conf.onpremises.yml`（適用於 Windows Server 內部部署執行個體） 的檔案：
   + 對於 Ubuntu 伺服器： `/etc/codedeploy-agent/conf`
   + 對於 Windows Server： `C:\ProgramData\Amazon\CodeDeploy`

1. 使用文字編輯器將下列資訊新增至新建立`codedeploy.onpremises.yml`的檔案 (Linux) 或`conf.onpremises.yml`檔案 (Windows)：

   ```
   ---
   iam_session_arn: iam-session-arn
   aws_credentials_file: credentials-file
   region: supported-region
   ```

   其中：
   + *iam-session-arn* 是您在[步驟 2：使用 產生個別執行個體的臨時登入資料 AWS STS](#register-on-premises-instance-iam-session-arn-2)中記錄的 IAM 工作階段 ARN。
   + *credentials-file* 是在[步驟 2：使用 產生個別執行個體的臨時登入資料 AWS STS](#register-on-premises-instance-iam-session-arn-2)中記錄的臨時工作階段 ARN 登入資料檔案所在位置。
   + *supported-region* 是 CodeDeploy 支援的其中一個區域，如 中的[區域和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)所列*AWS 一般參考*。

## 步驟 4：為 CodeDeploy 部署準備內部部署執行個體
<a name="register-on-premises-instance-iam-session-arn-4"></a>

**安裝和設定 AWS CLI **

在現場部署執行個體 AWS CLI 上安裝和設定 。( AWS CLI 將用於下載並在現場部署執行個體上安裝 CodeDeploy 代理程式。) 

1. 若要在現場部署執行個體 AWS CLI 上安裝 ，請遵循*AWS Command Line Interface 《 使用者指南*》中的[使用 進行設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)中的指示。
**注意**  
用於使用現場部署執行個體的 CodeDeploy 命令已在 1.7.19 版中提供 AWS CLI。如果您 AWS CLI 已安裝 的版本，您可以呼叫 來檢查其版本**aws --version**。

1. 若要在現場部署執行個體 AWS CLI 上設定 ，請遵循*AWS Command Line Interface 《 使用者指南*》中[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) 中的指示。
**重要**  
當您設定 AWS CLI （例如，透過呼叫 **aws configure**命令） 時，請務必指定至少具有 中所述許可之 IAM 使用者的私密金鑰 ID 和私密存取金鑰[IAM 工作階段 ARN 註冊先決條件](#register-on-premises-instance-iam-session-arn-prerequisites)。

**設定 AWS\$1REGION 環境變數 (僅適用於 Ubuntu Server 和 RHEL)**

如果您未在現場部署執行個體上執行 Ubuntu Server 或 RHEL，請略過此步驟並直接前往「安裝 CodeDeploy 代理程式」。

在 Ubuntu Server 或 RHEL 內部部署執行個體上安裝 CodeDeploy 代理程式，並在有新版本可用時讓執行個體更新 CodeDeploy 代理程式。您可以透過將執行個體上的`AWS_REGION`環境變數設定為 CodeDeploy 支援的其中一個區域的識別符來執行此操作。我們建議您將 值設定為 CodeDeploy 應用程式、部署群組和應用程式修訂所在的區域 （例如 `us-west-2`)。如需區域清單，請參閱《》中的[區域和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)*AWS 一般參考*。

若要設定環境變數，請從終端機呼叫下列項目：

```
export AWS_REGION=supported-region
```

其中 *supported-region* 為區域識別符 (例如 `us-west-2`)。

**安裝 CodeDeploy 代理程式**
+ 對於 Ubuntu Server 內部部署執行個體，請遵循 中的指示[安裝適用於 Ubuntu Server 的 CodeDeploy 代理程式](codedeploy-agent-operations-install-ubuntu.md)，然後返回此頁面。
+ 對於 RHEL 內部部署執行個體，請遵循 中的指示[安裝適用於 Amazon Linux 或 RHEL 的 CodeDeploy 代理程式](codedeploy-agent-operations-install-linux.md)，然後返回此頁面。
+ 對於 Windows Server 內部部署執行個體，請遵循 中的指示[安裝適用於 Windows Server 的 CodeDeploy 代理程式](codedeploy-agent-operations-install-windows.md)，然後返回此頁面。

## 步驟 5：向 CodeDeploy 註冊現場部署執行個體
<a name="register-on-premises-instance-iam-session-arn-5"></a>

此步驟中的指示，假設您正在從現場部署執行個體本身註冊現場部署執行個體。您可以從 AWS CLI 已安裝並設定 的個別裝置或執行個體註冊現場部署執行個體。

使用 AWS CLI 向 CodeDeploy 註冊現場部署執行個體，以便在部署中使用。

在使用 之前 AWS CLI，您將需要在 中建立的臨時工作階段登入資料的 ARN[步驟 3：將組態檔案新增至現場部署執行個體](#register-on-premises-instance-iam-session-arn-3)。例如，對於您指定為 `AssetTag12010298EX` 的執行個體：

```
arn:sts:iam::123456789012:assumed-role/CodeDeployInstanceRole/AssetTag12010298EX
```

呼叫 [register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 命令，指定：
+  唯一識別現場部署執行個體的名稱 (使用 `--instance-name` 選項)。
**重要**  
為了協助識別現場部署執行個體，特別是用於偵錯用途，我們強烈建議您指定現場部署執行個體的某些獨特特性名稱 (例如，STS 登入資料的 session-name 和序號，或內部資產識別符，如果適用)。如果您將 MAC 地址指定為名稱，請注意 MAC 地址包含 CodeDeploy 不允許的字元，例如冒號 (：)。針對允許使用的字元清單，請參閱 [CodeDeploy 配額](limits.md)
+ 您在[步驟 1：建立現場部署執行個體將擔任的 IAM 角色](#register-on-premises-instance-iam-session-arn-1)中設定以對多個現場部署執行個體進行身分驗證的 IAM 工作階段 ARN。

例如：

```
aws deploy register-on-premises-instance --instance-name name-of-instance --iam-session-arn arn:aws:sts::account-id:assumed-role/role-to-assume/session-name
```

其中：
+ *name-of-instance* 是您用來識別現場部署執行個體的名稱，例如 `AssetTag12010298EX`。
+ *account-id* 為您機構組織的 12 位數帳戶 ID，例如 `111222333444`。
+ *role-to-assume* 是您為執行個體建立的 IAM 角色名稱，例如`CodeDeployInstanceRole`。
+ *session-name* 是您在 [步驟 2：使用 產生個別執行個體的臨時登入資料 AWS STS](#register-on-premises-instance-iam-session-arn-2) 指定的工作階段角色名稱。

## 步驟 6：標記內部部署執行個體
<a name="register-on-premises-instance-iam-session-arn-6"></a>

您可以使用 AWS CLI 或 CodeDeploy 主控台來標記現場部署執行個體。(CodeDeploy 會在部署期間使用內部部署執行個體標籤來識別部署目標。)

**若要標記現場部署執行個體 (CLI)**
+ 呼叫 [add-tags-to-on-premises-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/add-tags-to-on-premises-instances.html) 命令，指定：
  + 唯一識別現場部署執行個體的名稱 (使用 `--instance-names` 選項)。
  + 現場部署執行個體標籤金鑰的名稱，以及您想使用的標籤值 (使用`--tags`選項)。您必須同時指定名稱和值。CodeDeploy 不允許只有值的現場部署執行個體標籤。

    例如：

    ```
    aws deploy add-tags-to-on-premises-instances --instance-names AssetTag12010298EX --tags Key=Name,Value=CodeDeployDemo-OnPrem
    ```

**若要標記現場部署執行個體 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) 開啟 CodeDeploy 主控台。
**注意**  
使用您在 中設定的相同使用者登入[CodeDeploy 入門](getting-started-codedeploy.md)。

1. 在導覽窗格中，展開**部署**，然後選擇**內部部署執行個體**。

1. 請從現場部署執行個體的清單中，選擇您想要標記的現場部署執行個體名稱。

1. 在標籤清單中，選擇或輸入的標籤金鑰或標籤值。在您輸入標籤金鑰及標籤值後，將顯示另一個資料列。您最多可重複此標籤 10 次。若要移除標籤，請選擇 **Remove** (移除)。

1. 新增標籤後，選擇 **Update Tags (更新標籤)**。

## 步驟 7：將應用程式修訂部署至內部部署執行個體
<a name="register-on-premises-instance-iam-session-arn-7"></a>

您現在已準備好將應用程式修訂部署至已註冊和加上標籤的現場部署執行個體。

您部署應用程式修訂到現場部署執行個體的方式類似於將應用程式修訂部署到 Amazon EC2 執行個體。如需說明，請參閱[使用 CodeDeploy 建立部署](deployments-create.md)。這些指示含有一個連接到先決條件的連結，包含建立應用程式、建立部署群組以及準備應用程式修改版。如果您需要簡單的範例應用程式修訂來部署，您可以建立一個，如[教學課程：使用 CodeDeploy 將應用程式部署至內部部署執行個體 (Windows Server、Ubuntu Server 或 Red Hat Enterprise Linux)](tutorials-on-premises-instance.md) 中的[步驟 2：建立範例應用程式修訂](tutorials-on-premises-instance-2-create-sample-revision.md)所述。

**重要**  
如果您在建立以內部部署執行個體為目標的部署群組時重複使用 CodeDeploy 服務角色，則必須`Tag:get*`將 包含在服務角色政策陳述式的 `Action`部分。如需詳細資訊，請參閱[步驟 2：建立 CodeDeploy 的服務角色](getting-started-create-service-role.md)。

## 步驟 8：追蹤現場部署執行個體的部署
<a name="register-on-premises-instance-iam-session-arn-8"></a>

在您將應用程式修訂部署至已註冊和加入標籤的現場部署執行個體後，您可以追蹤部署的進度。

您可以透過類似追蹤 Amazon EC2 執行個體部署的方式，來追蹤現場部署執行個體的部署。如需說明，請參閱[檢視 CodeDeploy 部署詳細資訊](deployments-view-details.md)。

# 使用 register 命令 (IAM 使用者 ARN) 註冊現場部署執行個體
<a name="instances-on-premises-register-instance"></a>

**重要**  
不建議使用 IAM 使用者註冊執行個體，因為它使用靜態 （永久） 登入資料進行身分驗證。為了提高安全性，我們建議您使用臨時憑證註冊執行個體以進行身分驗證。如需詳細資訊，請參閱[使用 register-on-premises-instance 命令 (IAM 工作階段 ARN) 註冊現場部署執行個體](register-on-premises-instance-iam-session-arn.md)。

**重要**  
請確定您已制定輪換 IAM 使用者的存取金鑰 （永久憑證） 的計劃。如需詳細資訊，請參閱[輪換存取金鑰](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey)。

本節說明如何設定現場部署執行個體，並盡可能使用 CodeDeploy 註冊和標記執行個體。當您使用單一或小型現場部署執行個體機群時，**register** 命令最有用。只有在使用 IAM 使用者 ARN 來驗證執行個體時，才能使用 **register**命令。您無法使用 **register**命令搭配 IAM 工作階段 ARN 進行身分驗證。

使用 **register**命令時，您可以讓 CodeDeploy 執行下列動作：
+ 如果您未使用 命令指定 IAM 使用者，請在現場部署執行個體 AWS Identity and Access Management 的 中建立 IAM 使用者。
+ 將 IAM 使用者的登入資料儲存至現場部署執行個體組態檔案。
+ 向 CodeDeploy 註冊現場部署執行個體。
+ 如果您將標籤指定為命令的一部分，請將標籤新增至現場部署執行個體。

**注意**  
[register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 命令是 [register](https://docs.aws.amazon.com/cli/latest/reference/deploy/register.html) 命令的替代方案。如果您想要設定現場部署執行個體，並使用 CodeDeploy 註冊和標記它，則使用 **register-on-premises-instance**命令。**register-on-premises-instance** 命令也可讓您選擇使用 IAM 工作階段 ARN 註冊執行個體，而非 IAM 使用者 ARN。如果您擁有大量現場部署執行個體機群，此方法可提供很大優勢。具體而言，您可以使用單一 IAM 工作階段 ARN 來驗證多個執行個體，而不必逐一為每個現場部署執行個體建立 IAM 使用者。如需詳細資訊，請參閱[使用 register-on-premises-instance 命令 (IAM 使用者 ARN) 註冊現場部署執行個體](register-on-premises-instance-iam-user-arn.md)及[使用 register-on-premises-instance 命令 (IAM 工作階段 ARN) 註冊現場部署執行個體](register-on-premises-instance-iam-session-arn.md)。

**Topics**
+ [步驟 1：在現場部署執行個體 AWS CLI 上安裝和設定](#instances-on-premises-register-instance-1-install-cli)
+ [步驟 2：呼叫 register 命令](#instances-on-premises-register-instance-2-register-command)
+ [步驟 3：呼叫 安裝命令](#instances-on-premises-register-instance-3-install-command)
+ [步驟 4：將應用程式修訂部署至內部部署執行個體](#instances-on-premises-register-instance-4-deploy-revision)
+ [步驟 5：追蹤現場部署執行個體的部署](#instances-on-premises-register-instance-5-track-deployment)

## 步驟 1：在現場部署執行個體 AWS CLI 上安裝和設定
<a name="instances-on-premises-register-instance-1-install-cli"></a>

1. 在現場部署執行個體 AWS CLI 上安裝 。請遵循*AWS Command Line Interface 《 使用者指南*》中的[使用 進行設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)中的指示。
**注意**  
CodeDeploy 命令可用於 1.7.19 版和更新 AWS CLI 版本中的現場部署執行個體。如果您 AWS CLI 已安裝 ，請呼叫 **aws --version** 來檢查其版本。

1. 在現場部署執行個體 AWS CLI 上設定 。請遵循 *AWS Command Line Interface 使用者指南*中的[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) 中的指示。
**重要**  
當您設定 AWS CLI （例如，透過呼叫 **aws configure**命令） 時，請務必指定 IAM 使用者的私密金鑰 ID 和私密存取金鑰，這些使用者至少具有下列 AWS 存取許可，以及 中指定的許可[設定現場部署執行個體的先決條件](instances-on-premises-prerequisites.md)。這可讓您在現場部署執行個體上下載並安裝 CodeDeploy 代理程式。存取許可看起來類似下述：  

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement" : [
       {
         "Effect" : "Allow",
         "Action" : [
           "codedeploy:*",
           "iam:CreateAccessKey",
           "iam:CreateUser",
           "iam:DeleteAccessKey",
           "iam:DeleteUser",
           "iam:DeleteUserPolicy",
           "iam:ListAccessKeys",
           "iam:ListUserPolicies",
           "iam:PutUserPolicy",
           "iam:GetUser",
           "tag:getTagKeys",
           "tag:getTagValues",
           "tag:GetResources"
         ],
         "Resource" : "*"
       },
       {
         "Effect" : "Allow",
         "Action" : [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource" : [
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-bucket1/*"
         ]
       }     
     ]
   }
   ```
如果您在嘗試存取先前顯示的其中一個 Amazon S3 儲存貯體時看到存取遭拒錯誤，請嘗試省略儲存貯體的資源 ARN `/*`部分，例如 `arn:aws:s3:::aws-codedeploy-sa-east-1`。

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement" : [
       {
         "Effect" : "Allow",
         "Action" : [
           "codedeploy:*",
           "iam:CreateAccessKey",
           "iam:CreateUser",
           "iam:DeleteAccessKey",
           "iam:DeleteUser",
           "iam:DeleteUserPolicy",
           "iam:ListAccessKeys",
           "iam:ListUserPolicies",
           "iam:PutUserPolicy",
           "iam:GetUser",
           "tag:GetResources"
         ],
         "Resource" : "*"
       },
       {
         "Effect" : "Allow",
         "Action" : [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource" : [
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-bucket2/*"
         ]
       }     
     ]
   }
   ```

## 步驟 2：呼叫 register 命令
<a name="instances-on-premises-register-instance-2-register-command"></a>

針對此步驟，我們假設您正在從現場部署執行個體本身註冊現場部署執行個體。您也可以從 AWS CLI 安裝並設定 的個別裝置或執行個體註冊現場部署執行個體，如上述步驟所述。

使用 AWS CLI 呼叫[註冊](https://docs.aws.amazon.com/cli/latest/reference/deploy/register.html)命令，指定：
+ 可唯一識別 CodeDeploy 內部部署執行個體的名稱 （使用 `--instance-name`選項）。
**重要**  
為了協助在稍後識別現場部署執行個體，特別是用於偵錯用途，我們強烈建議您使用映射至現場部署執行個體的某些獨特特性名稱 (例如序號或某些唯一的內部資產識別符，如果適用)。如果您為名稱指定 MAC 地址，請注意 MAC 地址包含 CodeDeploy 不允許的字元，例如冒號 (`:`)。針對允許使用的字元清單，請參閱 [CodeDeploy 配額](limits.md)
+ 或者，您想要與此內部部署執行個體建立關聯的現有 IAM 使用者的 ARN （使用 `--iam-user-arn`選項）。若要取得 IAM 使用者的 ARN，請呼叫 [get-user](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user.html) 命令，或在 IAM 主控台**的使用者**區段中選擇 IAM 使用者名稱，然後在**摘要**區段中尋找**使用者 ARN** 值。如果未指定此選項，CodeDeploy 會在您的帳戶中代表您建立 IAM 使用者， AWS 並將其與現場部署執行個體建立關聯。
**重要**  
如果您指定 `--iam-user-arn` 選項，則也必須手動建立現場部署執行個體組態檔案，如[步驟 4：將組態檔案新增至現場部署執行個體](register-on-premises-instance-iam-user-arn.md#register-on-premises-instance-iam-user-arn-4)中所述。  
 您只能將一個 IAM 使用者與一個現場部署執行個體建立關聯。嘗試將單一 IAM 使用者與多個內部部署執行個體建立關聯，可能會導致錯誤、這些內部部署執行個體的部署失敗，或這些內部部署執行個體的部署停滯在永久擱置狀態。
+ 或者，CodeDeploy 將用來識別要部署之 Amazon EC2 執行個體集的一組內部部署執行個體標籤 （使用 `--tags`選項）。使用 `Key=tag-key,Value=tag-value` 來指定每個標籤 (例如 `Key=Name,Value=Beta Key=Name,Value=WestRegion`)。如果未指定此選項，則不會註冊任何標籤。若要稍後註冊標籤，請呼叫 [add-tags-to-on-premises-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/add-tags-to-on-premises-instances.html) 命令。
+ 或者，現場部署執行個體將向 CodeDeploy （使用 `--region`選項） 註冊 AWS 的區域。這必須是 中[區域和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中列出的其中一個支援區域 *AWS 一般參考*（例如，`us-west-2`)。如果未指定此選項，則會使用與呼叫 IAM 使用者相關聯的預設 AWS 區域。

例如：

```
aws deploy register --instance-name AssetTag12010298EX --iam-user-arn arn:aws:iam::444455556666:user/CodeDeployUser-OnPrem --tags Key=Name,Value=CodeDeployDemo-OnPrem --region us-west-2
```

**register** 命令會執行以下動作：

1. 如果未指定現有的 IAM 使用者， 會建立 IAM 使用者、連接所需的許可，並產生對應的私密金鑰和私密存取金鑰。內部部署執行個體將使用此 IAM 使用者及其許可和登入資料來驗證 CodeDeploy 並與之互動。

1. 向 CodeDeploy 註冊現場部署執行個體。

1. 如果指定，CodeDeploy 中指定的標籤會與已註冊現場部署執行個體名稱的 `--tags`選項建立關聯。

1. 如果已建立 IAM 使用者， 也會在呼叫**register**命令的相同目錄中建立所需的組態檔案。

如果此命令發生錯誤，會出現錯誤訊息，說明如何手動完成剩下的步驟。否則即會出現成功訊息，說明如何呼叫在下一個步驟中列出的 **install** 命令。

## 步驟 3：呼叫 安裝命令
<a name="instances-on-premises-register-instance-3-install-command"></a>

從現場部署執行個體，使用 AWS CLI 呼叫 [安裝](https://docs.aws.amazon.com/cli/latest/reference/deploy/install.html)命令，指定：
+ 組態檔案的路徑 (使用 `--config-file` 選項)。
+ (選用) 是否取代現場部署執行個體上已存在的組態檔案 (使用 `--override-config` 選項)。如果未指定，將不會取代現有的組態檔案。
+ 或者，現場部署執行個體將向 CodeDeploy （使用 `--region`選項） 註冊 AWS 的區域。這必須是 中[區域和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中列出的其中一個支援區域 *AWS 一般參考*（例如，`us-west-2`)。如果未指定此選項，則會使用與呼叫 IAM 使用者相關聯的預設 AWS 區域。
+ 或者，從中安裝 CodeDeploy 代理程式的自訂位置 （使用 `--agent-installer`選項）。此選項適用於安裝 CodeDeploy 未正式支援的 CodeDeploy 代理程式自訂版本 （例如以 GitHub 中的 [CodeDeploy 代理程式](https://github.com/aws/aws-codedeploy-agent)儲存庫為基礎的自訂版本）。此值必須是 Amazon S3 儲存貯體的路徑，其中包含：
  + CodeDeploy 代理程式安裝指令碼 （適用於 Linux 或 Unix 作業系統，類似於 GitHub 中 [CodeDeploy 代理程式](https://github.com/aws/aws-codedeploy-agent/blob/master/bin/install)儲存庫中的安裝檔案）。
  + CodeDeploy 代理程式安裝程式套件 (.msi) 檔案 （適用於 Windows 作業系統）。

   如果未指定此選項，CodeDeploy 將盡力從自己的位置安裝官方支援的 CodeDeploy 代理程式版本，該版本與現場部署執行個體上的作業系統相容。

例如：

```
aws deploy install --override-config --config-file /tmp/codedeploy.onpremises.yml --region us-west-2 --agent-installer s3://aws-codedeploy-us-west-2/latest/codedeploy-agent.msi
```

**install** 命令會執行以下動作：

1. 檢查現場部署執行個體是否為 Amazon EC2 執行個體。如果是，則會顯示錯誤訊息。

1. 將現場部署執行個體組態檔案從執行個體上的指定位置複製到 CodeDeploy 代理程式預期找到該檔案的位置，前提是該檔案尚未在該位置。

   對於 Ubuntu Server 和 Red Hat Enterprise Linux (RHEL))，這是 `/etc/codedeploy-agent/conf`/`codedeploy.onpremises.yml`。

   對於 Windows Server，這是 `C:\ProgramData\Amazon\CodeDeploy`\$1`conf.onpremises.yml`。

   如果 `--override-config` 選項已指定，則會建立或覆寫該檔案。

1. 在現場部署執行個體上安裝 CodeDeploy 代理程式，然後啟動它。

## 步驟 4：將應用程式修訂部署至內部部署執行個體
<a name="instances-on-premises-register-instance-4-deploy-revision"></a>

您現在已準備好將應用程式修訂部署至已註冊和加上標籤的現場部署執行個體。

您部署應用程式修訂到現場部署執行個體的方式類似於將應用程式修訂部署到 Amazon EC2 執行個體。如需說明，請參閱[使用 CodeDeploy 建立部署](deployments-create.md)。這些指示會連結至必要條件，包括建立應用程式、建立部署群組和準備應用程式修訂。如果您需要簡單的範例應用程式修訂來部署，您可以建立一個，如[教學課程：使用 CodeDeploy 將應用程式部署至內部部署執行個體 (Windows Server、Ubuntu Server 或 Red Hat Enterprise Linux)](tutorials-on-premises-instance.md) 中的[步驟 2：建立範例應用程式修訂](tutorials-on-premises-instance-2-create-sample-revision.md)所述。

**重要**  
如果您在建立以內部部署執行個體為目標的部署群組時重複使用現有的 CodeDeploy 服務角色，則必須將 包含在服務角色政策陳述式的 `Tag:get*` `Action`部分。如需詳細資訊，請參閱[步驟 2：建立 CodeDeploy 的服務角色](getting-started-create-service-role.md)。

## 步驟 5：追蹤現場部署執行個體的部署
<a name="instances-on-premises-register-instance-5-track-deployment"></a>

在您將應用程式修訂部署至已註冊和加入標籤的現場部署執行個體後，您可以追蹤部署的進度。

您可以透過類似追蹤 Amazon EC2 執行個體部署的方式，來追蹤現場部署執行個體的部署。如需說明，請參閱[檢視 CodeDeploy 部署詳細資訊](deployments-view-details.md)。

如需更多選項，請參閱 [在 CodeDeploy 中管理內部部署執行個體操作](on-premises-instances-operations.md)。

# 使用 register-on-premises-instance 命令 (IAM 使用者 ARN) 註冊現場部署執行個體
<a name="register-on-premises-instance-iam-user-arn"></a>

**重要**  
不建議使用 IAM 使用者註冊執行個體，因為它使用靜態 （永久） 登入資料進行身分驗證。為了提高安全性，我們建議您使用臨時憑證註冊執行個體以進行身分驗證。如需詳細資訊，請參閱[使用 register-on-premises-instance 命令 (IAM 工作階段 ARN) 註冊現場部署執行個體](register-on-premises-instance-iam-session-arn.md)。

**重要**  
請確定您已制定輪換 IAM 使用者的存取金鑰 （永久憑證） 的計劃。如需詳細資訊，請參閱[輪換存取金鑰](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey)。

遵循這些指示來設定現場部署執行個體，並使用靜態 IAM 使用者登入資料進行身分驗證，並使用 CodeDeploy 進行註冊和標記。

**Topics**
+ [步驟 1：為內部部署執行個體建立 IAM 使用者](#register-on-premises-instance-iam-user-arn-1)
+ [步驟 2：將許可指派給 IAM 使用者](#register-on-premises-instance-iam-user-arn-2)
+ [步驟 3：取得 IAM 使用者登入資料](#register-on-premises-instance-iam-user-arn-3)
+ [步驟 4：將組態檔案新增至現場部署執行個體](#register-on-premises-instance-iam-user-arn-4)
+ [步驟 5：安裝和設定 AWS CLI](#register-on-premises-instance-iam-user-arn-5)
+ [步驟 6：設定 AWS\$1REGION 環境變數 （僅限 Ubuntu Server 和 RHEL)](#register-on-premises-instance-iam-user-arn-6)
+ [步驟 7：安裝 CodeDeploy 代理程式](#register-on-premises-instance-iam-user-arn-7)
+ [步驟 8：向 CodeDeploy 註冊現場部署執行個體](#register-on-premises-instance-iam-user-arn-8)
+ [步驟 9：標記內部部署執行個體](#register-on-premises-instance-iam-user-arn-9)
+ [步驟 10：將應用程式修訂部署至內部部署執行個體](#register-on-premises-instance-iam-user-arn-10)
+ [步驟 11：追蹤現場部署執行個體的部署](#register-on-premises-instance-iam-user-arn-11)

## 步驟 1：為內部部署執行個體建立 IAM 使用者
<a name="register-on-premises-instance-iam-user-arn-1"></a>

建立現場部署執行個體用來驗證 CodeDeploy 並與之互動的 IAM 使用者。

**重要**  
您必須為每個參與的內部部署執行個體建立個別的 IAM 使用者。如果您嘗試為多個現場部署執行個體重複使用個別 IAM 使用者，則可能無法成功向 CodeDeploy 註冊或標記這些現場部署執行個體。部署現場部署執行個體也許可能會卡在永久擱置狀態或一起失敗。

建議您為 IAM 使用者指派可識別其用途的名稱，例如 CodeDeployUser-OnPrem。

您可以使用 AWS CLI 或 IAM 主控台來建立 IAM 使用者。如需詳細資訊，請參閱[在 AWS 帳戶中建立 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)。

**重要**  
無論您是使用 AWS CLI 或 IAM 主控台來建立新的 IAM 使用者，請記下提供給使用者的使用者 ARN。您之後將需要用到這個資訊 [步驟 4：將組態檔案新增至現場部署執行個體](#register-on-premises-instance-iam-user-arn-4) 和 [步驟 8：向 CodeDeploy 註冊現場部署執行個體](#register-on-premises-instance-iam-user-arn-8)。

## 步驟 2：將許可指派給 IAM 使用者
<a name="register-on-premises-instance-iam-user-arn-2"></a>

如果您的現場部署執行個體將從 Amazon S3 儲存貯體部署應用程式修訂版，您必須將與這些儲存貯體互動的許可指派給 IAM 使用者。您可以使用 AWS CLI 或 IAM 主控台來指派許可。

**注意**  
如果您僅從 GitHub 儲存貯體部署應用程式修訂版，則請跳過此步驟，並直接前往 [步驟 3：取得 IAM 使用者登入資料](#register-on-premises-instance-iam-user-arn-3)。（您仍然需要您在 中建立之 IAM 使用者的相關資訊[步驟 1：為內部部署執行個體建立 IAM 使用者](#register-on-premises-instance-iam-user-arn-1)。 它將用於後續步驟。)

**指派許可權限 (CLI)。**

1. 在您用來呼叫 的 Amazon EC2 執行個體或裝置上建立具有下列政策內容的檔案 AWS CLI。為檔案命名如 **CodeDeploy-OnPrem-Permissions.json**，然後儲存檔案。

   ```
   {
       "Version": "2012-10-17",		 	 	 
       "Statement": [
           {
               "Action": [
                   "s3:Get*",
                   "s3:List*"
               ],
               "Effect": "Allow",
               "Resource": "*"
           }
       ]
   }
   ```
**注意**  
我們建議您將此政策限制為只有現場部署執行個體需要存取的 Amazon S3 儲存貯體。如果您限制此政策，也請務必授予包含 AWS CodeDeploy 代理程式的 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/*"
         ]
       }
     ]
   }
   ```

1. 呼叫 [put-user-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/put-user-policy.html) 命令，指定 IAM 使用者名稱 （使用 `--user-name`選項）、政策名稱 （使用 `--policy-name`選項），以及新建立的政策文件路徑 （使用 `--policy-document`選項）。例如，假設 **CodeDeploy-OnPrem-Permissions.json** 檔案與您正呼叫的命令位於相同的目錄 (資料夾)：
**重要**  
請確認在檔案名稱之前包含 `file://`。這是此命令必要項目。

   ```
   aws iam put-user-policy --user-name CodeDeployUser-OnPrem --policy-name CodeDeploy-OnPrem-Permissions --policy-document file://CodeDeploy-OnPrem-Permissions.json
   ```

**指派許可權限 (主控台)**

1. 在 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 中開啟 IAM 主控台。

1. 在導覽窗格中，選擇 **Policies (政策)**，然後選擇 **Create Policy (建立政策)**。(出現 **Get Started (開始使用)** 按鈕時先選擇它，然後選擇 **Create Policy (建立政策)**。)

1. 在**建立您自己的政策**旁邊，選擇**選取**。

1. 在 **政策名稱** 方塊中，輸入此政策的名稱。(例如，**CodeDeploy-OnPrem-Permissions**)。

1. 在**政策文件**方塊中，輸入或貼上下列許可表達式，允許 代表 AWS CodeDeploy IAM 使用者，將政策中指定之任何 Amazon S3 儲存貯體的應用程式修訂部署至內部部署執行個體：

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

1. 選擇**建立政策**。

1. 在導覽窗格中，選擇**使用者** 。

1. 在使用者清單中，瀏覽至 並選擇您在 中建立的 IAM 使用者名稱[步驟 1：為內部部署執行個體建立 IAM 使用者](#register-on-premises-instance-iam-user-arn-1)。

1. 在 **Permissions (許可)** 標籤上，**Managed Policies (受管政策)** 中，選擇 **Attach Policy (連接政策)**。

1. 選擇政策的名稱 **CodeDeploy-OnPrem-Permissions**，然後選擇 **Attach Policy (附加政策)**。

## 步驟 3：取得 IAM 使用者登入資料
<a name="register-on-premises-instance-iam-user-arn-3"></a>

取得 IAM 使用者的私密金鑰 ID 和私密存取金鑰。您將需要使用他們於 [步驟 4：將組態檔案新增至現場部署執行個體](#register-on-premises-instance-iam-user-arn-4)。您可以使用 AWS CLI 或 IAM 主控台來取得私密金鑰 ID 和私密存取金鑰。

**注意**  
如果您已經有私密金鑰 ID 和私密存取金鑰，請略過此步驟並直接前往 [步驟 4：將組態檔案新增至現場部署執行個體](#register-on-premises-instance-iam-user-arn-4)。  
如果使用者想要與 AWS 外部互動，則需要程式設計存取權 AWS 管理主控台。授予程式設計存取權的方式取決於正在存取的使用者類型 AWS。  
若要授予使用者程式設計存取權，請選擇下列其中一個選項。  


****  

| 哪個使用者需要程式設計存取權？ | 到 | 根據 | 
| --- | --- | --- | 
| IAM | （建議） 使用主控台登入資料做為臨時登入資料，以簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/register-on-premises-instance-iam-user-arn.html)  | 
|  人力資源身分 (IAM Identity Center 中管理的使用者)  | 使用暫時登入資料簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/register-on-premises-instance-iam-user-arn.html)  | 
| IAM | 使用暫時登入資料簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs | 遵循《IAM 使用者指南》中[將臨時登入資料與 AWS 資源](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)搭配使用的指示。 | 
| IAM | (不建議使用)使用長期憑證簽署對 AWS CLI、 AWS SDKs程式設計請求。 AWS APIs |  請依照您要使用的介面所提供的指示操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/register-on-premises-instance-iam-user-arn.html)  | 

**取得登入資料 (CLI)**

1. 呼叫 [list-access-keys](https://docs.aws.amazon.com/cli/latest/reference/iam/list-access-keys.html) 命令，指定 IAM 使用者名稱 （使用 `--user-name`選項），並僅查詢存取金鑰 IDs（使用 `--query`和 `--output`選項）。例如：

   ```
   aws iam list-access-keys --user-name CodeDeployUser-OnPrem --query "AccessKeyMetadata[*].AccessKeyId" --output text
   ```

1. 如果輸出中未顯示任何金鑰，或輸出中僅顯示一個金鑰的相關資訊，請呼叫 [create-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html) 命令，指定 IAM 使用者的名稱 （使用 `--user-name`選項）：

   ```
   aws iam create-access-key --user-name CodeDeployUser-OnPrem
   ```

   在呼叫輸出的 **create-access-key** 命令中，備註 `AccessKeyId` 的值與 `SecretAccessKey` 欄位。您將需要這個資訊[步驟 4：將組態檔案新增至現場部署執行個體](#register-on-premises-instance-iam-user-arn-4)。
**重要**  
這是唯一您可以存取此私密存取金鑰的時間。如果您忘記或遺失存取此私密存取金鑰，則您需要產生新的私密存取金鑰，請遵循 [步驟 3：取得 IAM 使用者登入資料](#register-on-premises-instance-iam-user-arn-3) 中的步驟執行。

1. 如果已列出兩個存取金鑰，您必須呼叫 [delete-access-key](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html) 命令、指定 IAM 使用者名稱 （使用 `--user-name`選項），以及要刪除的存取金鑰 ID （使用 `--access-key-id`選項），來刪除其中一個存取金鑰。接著呼叫 **create-access-key** 命令，如此步驟中先前所述。以下範例呼叫 **delete-access-key** 命令：

   ```
   aws iam delete-access-key --user-name CodeDeployUser-OnPrem --access-key-id access-key-ID
   ```
**重要**  
如果您呼叫 **delete-access-key**命令來刪除其中一個存取金鑰，且現場部署執行個體已如中所述使用此存取金鑰[步驟 4：將組態檔案新增至現場部署執行個體](#register-on-premises-instance-iam-user-arn-4)，您將需要[步驟 4：將組態檔案新增至現場部署執行個體](#register-on-premises-instance-iam-user-arn-4)再次遵循 中的指示，以指定與此 IAM 使用者相關聯的不同存取金鑰 ID 和私密存取金鑰。其他，任何部署到現場部署執行個體可能卡在永久擱置狀態或一起失敗。

**如何取得登入資料 (主控台)**

1. 

   1. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台。

   1. 如果未顯示於使用者清單，於導覽窗格請選擇 **Users (使用者)**。

   1. 在使用者清單中，瀏覽至 並選擇您在 中建立的 IAM 使用者名稱[步驟 1：為內部部署執行個體建立 IAM 使用者](#register-on-premises-instance-iam-user-arn-1)。

1. 在 **Security credentials (安全登入資料)** 標籤，如果沒有金鑰或只有列出一個金鑰，請選擇 **Create access key (建立存取金鑰)**。

   如果列出兩個存取金鑰，則您必須刪除其中一個。選擇其中一個存取金鑰旁的 **Delete (刪除)**，然後選擇 **Create access key (建立存取金鑰)**。
**重要**  
如果您選擇其中一個存取金鑰旁的**刪除**，且現場部署執行個體已如中所述使用此存取金鑰[步驟 4：將組態檔案新增至現場部署執行個體](#register-on-premises-instance-iam-user-arn-4)，則需要[步驟 4：將組態檔案新增至現場部署執行個體](#register-on-premises-instance-iam-user-arn-4)再次遵循 中的指示，以指定與此 IAM 使用者相關聯的不同存取金鑰 ID 和私密存取金鑰。否則，部署到現場部署執行個體可能卡在永久擱置狀態或一起失敗。

1. 選擇 **顯示** 和備註的存取金鑰 ID 和私密存取金鑰。下一個步驟您將需要這個資訊。或者，您可以選擇 **下載 .csv 檔案**，儲存存取金鑰ID以及秘密存取金鑰的副本。
**重要**  
除非您註記或下載登入資料，否則這將是唯一一次您可以存取到此祕密存取金鑰的機會。如果您忘記或遺失存取此私密存取金鑰，則您需要產生新的私密存取金鑰，請遵循 [步驟 3：取得 IAM 使用者登入資料](#register-on-premises-instance-iam-user-arn-3) 中的步驟執行。

1. 選擇 **Close (關閉)** 傳回給 **使用者 > *IAM 使用者名稱*** 頁面。

## 步驟 4：將組態檔案新增至現場部署執行個體
<a name="register-on-premises-instance-iam-user-arn-4"></a>

使用 root 或管理員許可，將組態檔案新增至現場部署執行個體。此組態檔案將用於宣告要用於 CodeDeploy 的 IAM 使用者登入資料和目標 AWS 區域。該檔案必須新增至現場部署執行個體上的特定位置。檔案必須包含 IAM 使用者的 ARN、私密金鑰 ID、私密存取金鑰和目標 AWS 區域。這個檔案必須遵循特定的格式。

1. 在內部部署執行個體的下列位置建立名為 `codedeploy.onpremises.yml`（適用於 Ubuntu Server 或 RHEL 內部部署執行個體） 或 `conf.onpremises.yml`（適用於 Windows Server 內部部署執行個體） 的檔案：
   + 對於 Ubuntu 伺服器： `/etc/codedeploy-agent/conf`
   + 對於 Windows Server： `C:\ProgramData\Amazon\CodeDeploy`

1. 使用文字編輯器，將下列資訊新增至新建立的 `codedeploy.onpremises.yml` 或 `conf.onpremises.yml` 檔案：

   ```
   ---
   aws_access_key_id: secret-key-id
   aws_secret_access_key: secret-access-key
   iam_user_arn: iam-user-arn
   region: supported-region
   ```

   其中：
   + *secret-key-id* 是您在 [步驟 1：為內部部署執行個體建立 IAM 使用者](#register-on-premises-instance-iam-user-arn-1)或 中記下的對應 IAM 使用者的私密金鑰 ID[步驟 3：取得 IAM 使用者登入資料](#register-on-premises-instance-iam-user-arn-3)。
   + *secret-access-key* 是您在 [步驟 1：為內部部署執行個體建立 IAM 使用者](#register-on-premises-instance-iam-user-arn-1)或 中記下的對應 IAM 使用者的私密存取金鑰[步驟 3：取得 IAM 使用者登入資料](#register-on-premises-instance-iam-user-arn-3)。
   + *iam-user-arn* 是您之前備註在 [步驟 1：為內部部署執行個體建立 IAM 使用者](#register-on-premises-instance-iam-user-arn-1) IAM 使用者的 ARN。
   + *supported-region* 是 CodeDeploy 支援的區域的識別符，CodeDeploy 應用程式、部署群組和應用程式修訂版所在的區域 （例如 `us-west-2`)。如需區域清單，請參閱《》中的[區域和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)*AWS 一般參考*。

    
**重要**  
如果您在 的其中一個存取金鑰旁選擇**刪除**[步驟 3：取得 IAM 使用者登入資料](#register-on-premises-instance-iam-user-arn-3)，且您的現場部署執行個體已使用相關聯的存取金鑰 ID 和私密存取金鑰，則需要遵循 中的指示[步驟 4：將組態檔案新增至現場部署執行個體](#register-on-premises-instance-iam-user-arn-4)，指定與此 IAM 使用者相關聯的不同存取金鑰 ID 和私密存取金鑰。其他，任何部署到您的現場部署執行個體可能卡在永久擱置狀態或一起失敗。

## 步驟 5：安裝和設定 AWS CLI
<a name="register-on-premises-instance-iam-user-arn-5"></a>

在現場部署執行個體 AWS CLI 上安裝和設定 。( AWS CLI 將用於[步驟 7：安裝 CodeDeploy 代理程式](#register-on-premises-instance-iam-user-arn-7)在內部部署執行個體下載並安裝 CodeDeploy 代理程式。)

1. 若要在現場部署執行個體 AWS CLI 上安裝 ，請遵循*AWS Command Line Interface 《 使用者指南*》中的[使用 進行設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-set-up.html)中的指示。
**注意**  
用於使用現場部署執行個體的 CodeDeploy 命令已在 1.7.19 版中提供 AWS CLI。如果您 AWS CLI 已安裝 的版本，您可以呼叫 來檢查其版本**aws --version**。

1. 若要在現場部署執行個體 AWS CLI 上設定 ，請遵循*AWS Command Line Interface 《 使用者指南*》中[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) 中的指示。
**重要**  
當您設定 AWS CLI （例如，透過呼叫 **aws configure**命令） 時，請務必指定 IAM 使用者的私密金鑰 ID 和私密存取金鑰，這些使用者至少具有下列 AWS 存取許可，以及 中指定的存取許可[設定現場部署執行個體的先決條件](instances-on-premises-prerequisites.md)。這可讓您在現場部署執行個體上下載並安裝 CodeDeploy 代理程式：  
   

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement" : [
       {
         "Effect" : "Allow",
         "Action" : [
           "codedeploy:*"
         ],
         "Resource" : "*"
       },
       {
         "Effect" : "Allow",
         "Action" : [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource" : [
           "arn:aws:s3:::amzn-s3-demo-bucket/*",
           "arn:aws:s3:::amzn-s3-demo-bucket1/*"
         ]
       }     
     ]
   }
   ```

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement" : [
       {
         "Effect" : "Allow",
         "Action" : [
           "codedeploy:*"
         ],
         "Resource" : "*"
       },
       {
         "Effect" : "Allow",
         "Action" : [
           "s3:Get*",
           "s3:List*"
         ],
         "Resource" : [
           "*"
         ]
       }     
     ]
   }
   ```
這些存取許可可以指派給您在 中建立的 IAM 使用者，[步驟 1：為內部部署執行個體建立 IAM 使用者](#register-on-premises-instance-iam-user-arn-1)或指派給不同的 IAM 使用者。若要將這些許可指派給 IAM 使用者，請遵循 中的指示[步驟 1：為內部部署執行個體建立 IAM 使用者](#register-on-premises-instance-iam-user-arn-1)，使用這些存取許可，而不是該步驟中的存取許可。

## 步驟 6：設定 AWS\$1REGION 環境變數 （僅限 Ubuntu Server 和 RHEL)
<a name="register-on-premises-instance-iam-user-arn-6"></a>

如果您未在現場部署執行個體上執行 Ubuntu Server 或 RHEL，請略過此步驟並直接前往 [步驟 7：安裝 CodeDeploy 代理程式](#register-on-premises-instance-iam-user-arn-7)。

在 Ubuntu Server 或 RHEL 內部部署執行個體上安裝 CodeDeploy 代理程式，並在有新版本可用時讓執行個體更新 CodeDeploy 代理程式。您可以透過將執行個體上的`AWS_REGION`環境變數設定為 CodeDeploy 支援的其中一個區域的識別符來執行此操作。我們建議您將 值設定為 CodeDeploy 應用程式、部署群組和應用程式修訂所在的區域 （例如 `us-west-2`)。如需區域清單，請參閱《》中的[區域和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)*AWS 一般參考*。

若要設定環境變數，請從終端機呼叫下列項目：

```
export AWS_REGION=supported-region
```

其中 *supported-region* 為區域識別符 (例如 `us-west-2`)。

## 步驟 7：安裝 CodeDeploy 代理程式
<a name="register-on-premises-instance-iam-user-arn-7"></a>

在現場部署執行個體上安裝 CodeDeploy 代理程式：
+ 對於 Ubuntu Server 內部部署執行個體，請遵循 中的指示[安裝適用於 Ubuntu Server 的 CodeDeploy 代理程式](codedeploy-agent-operations-install-ubuntu.md)，然後返回此頁面。
+ 對於 RHEL 內部部署執行個體，請遵循 中的指示[安裝適用於 Amazon Linux 或 RHEL 的 CodeDeploy 代理程式](codedeploy-agent-operations-install-linux.md)，然後返回此頁面。
+ 對於 Windows Server 內部部署執行個體，請遵循 中的指示[安裝適用於 Windows Server 的 CodeDeploy 代理程式](codedeploy-agent-operations-install-windows.md)，然後返回此頁面。

## 步驟 8：向 CodeDeploy 註冊現場部署執行個體
<a name="register-on-premises-instance-iam-user-arn-8"></a>

此步驟中的指示，假設您正在從現場部署執行個體本身註冊現場部署執行個體。您可以從 AWS CLI 已安裝和設定的個別裝置或執行個體註冊現場部署執行個體，如中所述[步驟 5：安裝和設定 AWS CLI](#register-on-premises-instance-iam-user-arn-5)。

使用 AWS CLI 向 CodeDeploy 註冊現場部署執行個體，以便在部署中使用。

1. 在使用 之前 AWS CLI，您將需要在 中建立之 IAM 使用者的使用者 ARN[步驟 1：為內部部署執行個體建立 IAM 使用者](#register-on-premises-instance-iam-user-arn-1)。如果您還沒有使用者 ARN，請呼叫 [get-user](https://docs.aws.amazon.com/cli/latest/reference/iam/get-user.html) 命令，指定 IAM 使用者的名稱 （使用 `--user-name`選項），並僅查詢使用者 ARN （使用 `--query`和 `--output`選項）：

   ```
   aws iam get-user --user-name CodeDeployUser-OnPrem --query "User.Arn" --output text
   ```

1. 呼叫 [register-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/register-on-premises-instance.html) 命令，指定：
   + 唯一識別現場部署執行個體的名稱 (使用 `--instance-name` 選項)。
**重要**  
為了幫助鑑別現場部署執行個體，特別是偵錯程序，我們強烈建議您指定一個名稱，其對應到一些現場部署執行個體的獨特字元 (例如，序列數字或一個內部資產鑑別者，若適用的話)。如果您將 MAC 地址指定為名稱，請注意 MAC 地址包含 CodeDeploy 不允許的字元，例如冒號 (`:`)。針對允許使用的字元清單，請參閱 [CodeDeploy 配額](limits.md)
   + 您在 中建立的 IAM 使用者的使用者 ARN [步驟 1：為內部部署執行個體建立 IAM 使用者](#register-on-premises-instance-iam-user-arn-1)（使用 `--iam-user-arn`選項）。

     例如：

     ```
     aws deploy register-on-premises-instance --instance-name AssetTag12010298EX --iam-user-arn arn:aws:iam::444455556666:user/CodeDeployUser-OnPrem
     ```

## 步驟 9：標記內部部署執行個體
<a name="register-on-premises-instance-iam-user-arn-9"></a>

您可以使用 AWS CLI 或 CodeDeploy 主控台來標記現場部署執行個體。(CodeDeploy 會在部署期間使用內部部署執行個體標籤來識別部署目標。)

**若要標記現場部署執行個體 (CLI)**
+ 呼叫 [add-tags-to-on-premises-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/add-tags-to-on-premises-instances.html) 命令，指定：

   
  + 唯一識別現場部署執行個體的名稱 (使用 `--instance-names` 選項)。
  + 現場部署執行個體標籤金鑰的名稱，以及您想使用的標籤值 (使用`--tags`選項)。您必須同時指定名稱和值。CodeDeploy 不允許只有值的現場部署執行個體標籤。

    例如：

    ```
    aws deploy add-tags-to-on-premises-instances --instance-names AssetTag12010298EX --tags Key=Name,Value=CodeDeployDemo-OnPrem
    ```

**若要標記現場部署執行個體 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) 開啟 CodeDeploy 主控台。
**注意**  
使用您在 中設定的相同使用者登入[CodeDeploy 入門](getting-started-codedeploy.md)。

1. 從 CodeDeploy 功能表中，選擇**內部部署執行個體**。

1. 在現場部署執行個體的清單中，選擇箭號到下一個您想標籤的內部部署執行個體。

1. 在標籤清單中，選擇或輸入的標籤金鑰或標籤值。在您輸入標籤金鑰及標籤值後，將顯示另一個資料列。您最多可重複此標籤 10 次。若要移動標籤，請選擇刪除圖示 (![\[The delete icon.\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/images/delete-triggers-x.png))。

1. 新增標籤後，選擇 **Update Tags (更新標籤)**。

## 步驟 10：將應用程式修訂部署至內部部署執行個體
<a name="register-on-premises-instance-iam-user-arn-10"></a>

您現在已準備好將應用程式修訂部署至已註冊和加上標籤的現場部署執行個體。

您部署應用程式修訂到現場部署執行個體的方式類似於將應用程式修訂部署到 Amazon EC2 執行個體。如需說明，請參閱[使用 CodeDeploy 建立部署](deployments-create.md)。這些指示含有一個連接到先決條件的連結，包含建立應用程式、建立部署群組以及準備應用程式修改版。如果您需要簡單的範例應用程式修訂來部署，您可以建立一個，如[教學課程：使用 CodeDeploy 將應用程式部署至內部部署執行個體 (Windows Server、Ubuntu Server 或 Red Hat Enterprise Linux)](tutorials-on-premises-instance.md) 中的[步驟 2：建立範例應用程式修訂](tutorials-on-premises-instance-2-create-sample-revision.md)所述。

**重要**  
如果您在建立以內部部署執行個體為目標的部署群組時重複使用 CodeDeploy 服務角色，則必須`Tag:get*`將 包含在服務角色政策陳述式的 `Action`部分。如需詳細資訊，請參閱[步驟 2：建立 CodeDeploy 的服務角色](getting-started-create-service-role.md)。

## 步驟 11：追蹤現場部署執行個體的部署
<a name="register-on-premises-instance-iam-user-arn-11"></a>

在您將應用程式修訂部署至已註冊和加入標籤的現場部署執行個體後，您可以追蹤部署的進度。

您可以透過類似追蹤 Amazon EC2 執行個體部署的方式，來追蹤現場部署執行個體的部署。如需說明，請參閱[檢視 CodeDeploy 部署詳細資訊](deployments-view-details.md)。

# 在 CodeDeploy 中管理內部部署執行個體操作
<a name="on-premises-instances-operations"></a>

在您向 CodeDeploy 註冊現場部署執行個體之後，請遵循本節中的指示來管理這些執行個體的操作，例如取得有關、移除標籤，以及解除安裝和取消註冊現場部署執行個體的詳細資訊。

**Topics**
+ [取得單一現場部署執行個體的相關資訊](on-premises-instances-operations-view-details-single.md)
+ [取得多個內部部署執行個體的相關資訊](on-premises-instances-operations-view-details-multiple.md)
+ [從內部部署執行個體手動移除內部部署執行個體標籤](on-premises-instances-operations-remove-tags.md)
+ [自動解除安裝 CodeDeploy 代理程式，並從內部部署執行個體移除組態檔案](on-premises-instances-operations-uninstall-agent.md)
+ [自動取消註冊現場部署執行個體](on-premises-instances-operations-deregister-automatically.md)
+ [手動取消註冊現場部署執行個體](on-premises-instances-operations-deregister-manually.md)

# 取得單一現場部署執行個體的相關資訊
<a name="on-premises-instances-operations-view-details-single"></a>

您可以在遵照 [檢視 CodeDeploy 部署詳細資訊](deployments-view-details.md) 的指示取得單一現場部署執行個體的資訊。您可以使用 AWS CLI 或 CodeDeploy 主控台，以取得單一現場部署執行個體的詳細資訊。

**取得有關單一現場部署執行個體 (CLI) 的資訊**
+ 呼叫 [get-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-on-premises-instance.html) 命令，指定唯一識別現場部署執行個體的名稱 （使用 `--instance-name`選項）：

  ```
  aws deploy get-on-premises-instance --instance-name AssetTag12010298EX
  ```

**取得單一現場部署執行個體的相關資訊 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) 開啟 CodeDeploy 主控台。
**注意**  
使用您在 中設定的相同使用者登入[CodeDeploy 入門](getting-started-codedeploy.md)。

1. 在導覽窗格中，展開**部署**，然後選擇**內部部署執行個體**。

1. 在現場部署執行個體清單中，請選擇現場部署執行個體的名稱，以查看其詳細資訊。

# 取得多個內部部署執行個體的相關資訊
<a name="on-premises-instances-operations-view-details-multiple"></a>

您可以在遵照 [檢視 CodeDeploy 部署詳細資訊](deployments-view-details.md) 的指示取得有關現場部署執行個體的資訊。您可以使用 AWS CLI 或 CodeDeploy 主控台來取得現場部署執行個體的詳細資訊。

**為取得有關多個現場部署執行個體 (CLI) 的資訊**

1. 如需現場部署執行個體名稱的清單，請呼叫 [list-on-premises-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-on-premises-instances.html) 命令，指定：
   + 取得所有註冊或撤銷註冊的現場部署執行個體的資訊 (分別依序使用 `--registration-status` 選項和 `Registered` 或 `Deregistered`)。如果您省略此步驟，則將傳回註冊和撤銷註冊現場部署執行個體的名稱。
   + 取得僅有特定現場部署執行個體標籤的現場部署執行個體 (加上 `--tag-filters` 選項)。對於每個現場部署執行個體標籤，請指定 `Key`​、`Value`以及 `Type` (請務必為此 `KEY_AND_VALUE`)。在每一個 `Key`、​`Value` 以及 `Type` 三者之間，使用空格分隔多個現場部署執行個體標籤。

   例如：

   ```
   aws deploy list-on-premises-instances --registration-status Registered --tag-filters Key=Name,Value=CodeDeployDemo-OnPrem,Type=KEY_AND_VALUE Key=Name,Value=CodeDeployDemo-OnPrem-Beta,Type=KEY_AND_VALUE
   ```

1. 如需更多詳細資訊，請呼叫 [batch-get-on-premises-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/batch-get-on-premises-instances.html) 命令，其中包含現場部署執行個體的名稱 （使用 `--instance-names`選項）：

   ```
   aws deploy batch-get-on-premises-instances --instance-names AssetTag12010298EX AssetTag09920444EX
   ```

**取得多個現場部署執行個體的相關資訊 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) 開啟 CodeDeploy 主控台。
**注意**  
使用您在 中設定的相同使用者登入[CodeDeploy 入門](getting-started-codedeploy.md)。

1. 在導覽窗格中，展開**部署**，然後選擇**內部部署執行個體**。

   系統會隨即顯示該現場部署執行個體的相關資訊。

# 從內部部署執行個體手動移除內部部署執行個體標籤
<a name="on-premises-instances-operations-remove-tags"></a>

一般而言，從現場部署執行個體移除您不再使用的現場部署執行個體標籤，或從部署群組移除依賴該標籤的現場部署執行個體。您可以使用 AWS CLI 或 AWS CodeDeploy 主控台，從內部部署執行個體中移除內部部署執行個體標籤。

在您撤銷註冊前，不需要從現場部署執行個體移除現場部署執行個體標籤。

從現場部署執行個體手動移除現場部署執行個體標籤並不會撤銷註冊該執行個體。它不會從執行個體解除安裝 CodeDeploy 代理程式。它不會從執行個體移除組態檔案。它不會刪除與執行個體相關聯的 IAM 使用者。

若要自動撤銷註冊現場部署執行個體，請參閱 [自動取消註冊現場部署執行個體](on-premises-instances-operations-deregister-automatically.md)。

若要手動撤銷註冊現場部署執行個體，請參閱 [手動取消註冊現場部署執行個體](on-premises-instances-operations-deregister-manually.md)。

若要自動解除安裝 CodeDeploy 代理程式並從現場部署執行個體中移除組態檔案，請參閱 [自動解除安裝 CodeDeploy 代理程式，並從內部部署執行個體移除組態檔案](on-premises-instances-operations-uninstall-agent.md)。

若要僅從現場部署執行個體手動解除安裝 CodeDeploy 代理程式，請參閱 [管理 CodeDeploy 代理程式操作](codedeploy-agent-operations.md)。

若要手動刪除相關聯的 IAM 使用者，請參閱[從 AWS 您的帳戶刪除 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_DeletingUserFromAccount.html)。

**若要從現場部署執行個體 (CLI) 移除現場部署執行個體標籤**
+ 呼叫 [remove-tags-from-on-premises-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/remove-tags-from-on-premises-instances.html)，指定：

   
  + 唯一識別現場部署執行個體的名稱 (使用 `--instance-names` 選項)。
  + 您要移除的標籤名稱與標籤數值 (使用 `--tags` 選項)。

    例如：

    ```
    aws deploy remove-tags-from-on-premises-instances --instance-names AssetTag12010298EX --tags Key=Name,Value=CodeDeployDemo-OnPrem
    ```

**從現場部署執行個體移除現場部署執行個體標籤 (主控台)**

1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) 開啟 CodeDeploy 主控台。
**注意**  
使用您在 中設定的相同使用者登入[CodeDeploy 入門](getting-started-codedeploy.md)。

1. 在導覽窗格中，展開**部署**，然後選擇**內部部署執行個體**。

1. 在現場部署執行個體清單，請選擇要移除標籤的現場部署執行個體名稱。

1. 在 **Tags (標籤)** 區段，在每一個您想要移除的標籤旁選擇 **Remove (移除)**。

1. 刪除這些標籤後，請選擇 **Update tags (更新標籤)**。

# 自動解除安裝 CodeDeploy 代理程式，並從內部部署執行個體移除組態檔案
<a name="on-premises-instances-operations-uninstall-agent"></a>

一般而言，您解除安裝 CodeDeploy 代理程式，並在不再計劃部署到現場部署執行個體之後，從現場部署執行個體移除組態檔案。

**注意**  
自動解除安裝 CodeDeploy 代理程式並從現場部署執行個體移除組態檔案並不會取消註冊現場部署執行個體。它不會取消任何與現場部署執行個體關聯的現場部署執行個體標籤。它不會刪除與現場部署執行個體相關聯的 IAM 使用者。  
若要自動撤銷註冊現場部署執行個體，請參閱 [自動取消註冊現場部署執行個體](on-premises-instances-operations-deregister-automatically.md)。  
若要手動撤銷註冊現場部署執行個體，請參閱 [手動取消註冊現場部署執行個體](on-premises-instances-operations-deregister-manually.md)。  
若要手動取消任何關聯現場部署執行個體標籤，請參閱 [從內部部署執行個體手動移除內部部署執行個體標籤](on-premises-instances-operations-remove-tags.md)。  
若要從現場部署執行個體手動解除安裝 CodeDeploy 代理程式，請參閱 [管理 CodeDeploy 代理程式操作](codedeploy-agent-operations.md)。  
若要手動刪除相關聯的 IAM 使用者，請參閱[從 AWS 您的帳戶刪除 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_DeletingUserFromAccount.html)。

從現場部署執行個體，使用 AWS CLI 呼叫[解除安裝](https://docs.aws.amazon.com/cli/latest/reference/deploy/uninstall.html)命令。

例如：

```
aws deploy uninstall
```

**uninstall** 命令會執行以下動作：

1. 在現場部署執行個體上停止執行中的 CodeDeploy 代理程式。

1. 從現場部署執行個體解除安裝 CodeDeploy 代理程式。

1. 從現場部署執行個體移除組態檔案。（對於 Ubuntu Server 和 RHEL，這是 `/etc/codedeploy-agent/conf`/`codedeploy.onpremises.yml`。 對於 Windows Server，這是 `C:\ProgramData\Amazon\CodeDeploy`\$1`conf.onpremises.yml`。)

# 自動取消註冊現場部署執行個體
<a name="on-premises-instances-operations-deregister-automatically"></a>

一般而言，不再規劃用於部署的現場部署執行個體，您會撤銷其註冊。當您註銷現場部署執行個體的註冊，即使現場部署執行個體可能為部署群組的現場部署執行個體標籤的一部分，該現場部署執行個體還是不會包含於任何部署裡。您可以使用 AWS CLI 取消註冊現場部署執行個體。

**注意**  
您無法使用 CodeDeploy 主控台取消註冊現場部署執行個體。此外，將內部部署執行個體撤銷註冊，會移除與內部部署執行個體相關聯的內部部署執行個體標籤。它不會從內部部署執行個體解除安裝 CodeDeploy 代理程式。它不會從現場部署執行個體移除現場部署執行個體的組態檔案。  
若要使用 CodeDeploy 主控台執行本節中的部分 （但不是全部） 活動，請參閱 的 CodeDeploy 主控台一節[手動取消註冊現場部署執行個體](on-premises-instances-operations-deregister-manually.md)。  
若要手動取消任何關聯現場部署執行個體標籤，請參閱 [從內部部署執行個體手動移除內部部署執行個體標籤](on-premises-instances-operations-remove-tags.md)。  
若要自動解除安裝 CodeDeploy 代理程式並從現場部署執行個體中移除組態檔案，請參閱 [自動解除安裝 CodeDeploy 代理程式，並從內部部署執行個體移除組態檔案](on-premises-instances-operations-uninstall-agent.md)。  
若要僅從現場部署執行個體手動解除安裝 CodeDeploy 代理程式，請參閱 [管理 CodeDeploy 代理程式操作](codedeploy-agent-operations.md)。

使用 AWS CLI 呼叫[取消註冊](https://docs.aws.amazon.com/cli/latest/reference/deploy/deregister.html)命令，指定：
+ 唯一識別 CodeDeploy 內部部署執行個體的名稱 （使用 `--instance-name`選項）。
+  或者，是否刪除與現場部署執行個體相關聯的 IAM 使用者。預設行為是刪除 IAM 使用者。如果您不想刪除內部部署執行個體關聯的 IAM 使用者，請在命令中指定 `--no-delete-iam-user` 選項。
+ 或者，向 CodeDeploy （使用 `--region`選項） 註冊現場部署執行個體 AWS 的區域。這必須是 [區域和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中列出的其中一個支援區域 *AWS 一般參考*（例如 `us-west-2`)。如果未指定此選項，則會使用與呼叫 IAM 使用者相關聯的預設 AWS 區域。

將執行個體撤銷註冊並刪除使用者的範例：

```
aws deploy deregister --instance-name AssetTag12010298EX --region us-west-2
```

將執行個體撤銷註冊並且不會刪除使用者的範例：

```
aws deploy deregister --instance-name AssetTag12010298EX --no-delete-iam-user --region us-west-2
```

**deregister** 命令會執行以下動作：

1. 使用 CodeDeploy 取消註冊現場部署執行個體。

1. 如果指定， 會刪除與現場部署執行個體相關聯的 IAM 使用者。

一旦取消註冊現場部署執行個體，將導致以下情況：
+  主控台不會再顯示該執行個體。
+  您能立即建立具有相同名稱的其他執行個體。

如果此命令發生錯誤，會出現錯誤訊息，說明如何手動完成剩下的步驟。不然的話，則會出現成功訊息，說明如何呼叫 **uninstall** 命令。

# 手動取消註冊現場部署執行個體
<a name="on-premises-instances-operations-deregister-manually"></a>

一般而言，不再規劃用於部署的現場部署執行個體，您會撤銷其註冊。您可以使用 AWS CLI 手動取消註冊現場部署執行個體。

手動取消註冊現場部署執行個體並不會解除安裝 CodeDeploy 代理程式。它不會從執行個體移除組態檔案。它不會刪除與執行個體相關聯的 IAM 使用者。它不會移除與執行個體相關的任何標籤。

若要自動解除安裝 CodeDeploy 代理程式並從現場部署執行個體中移除組態檔案，請參閱 [自動解除安裝 CodeDeploy 代理程式，並從內部部署執行個體移除組態檔案](on-premises-instances-operations-uninstall-agent.md)。

若要僅手動解除安裝 CodeDeploy 代理程式，請參閱 [管理 CodeDeploy 代理程式操作](codedeploy-agent-operations.md)。

若要手動刪除相關聯的 IAM 使用者，請參閱[從 AWS 您的帳戶刪除 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_DeletingUserFromAccount.html)。

若僅要手動移除任何相關的現場部署執行個體標籤，請參閱 [從內部部署執行個體手動移除內部部署執行個體標籤](on-premises-instances-operations-remove-tags.md)。
+ 呼叫 [deregister-on-premises-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/deregister-on-premises-instance.html) 命令，指定唯一識別現場部署執行個體的名稱 （使用 `--instance-name`選項）：

  ```
  aws deploy deregister-on-premises-instance --instance-name AssetTag12010298EX
  ```

  一旦取消註冊現場部署執行個體，將導致以下情況：
  +  主控台不會再顯示該執行個體。
  +  您能立即建立具有相同名稱的其他執行個體。

# 使用 CodeDeploy 檢視執行個體詳細資訊
<a name="instances-view-details"></a>

您可以使用 CodeDeploy 主控台 AWS CLI、 或 CodeDeploy APIs 來檢視部署中使用的執行個體詳細資訊。

如需有關使用 CodeDeploy API 動作來檢視執行個體的資訊，請參閱 [GetDeploymentInstance](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GetDeploymentInstance.html)、[ListDeploymentInstances](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListDeploymentInstances.html) 和 [ListOnPremisesInstances](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_ListOnPremisesInstances.html)。

**Topics**
+ [檢視執行個體詳細資訊 （主控台）](#instances-view-details-console)
+ [檢視執行個體詳細資訊 (CLI)](#instances-view-details-cli)

## 檢視執行個體詳細資訊 （主控台）
<a name="instances-view-details-console"></a>

若要檢視執行個體的詳細資訊，請執行以下步驟：

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/codedeploy](https://console.aws.amazon.com/codedeploy) 開啟 CodeDeploy 主控台。
**注意**  
使用您在 中設定的相同使用者登入[CodeDeploy 入門](getting-started-codedeploy.md)。

1. 在導覽窗格中，展開**部署**，然後選擇**部署**。
**注意**  
如果未顯示任何項目，請確定已選取正確的區域。在導覽列的區域選擇器中，選擇 中[區域和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中列出的其中一個區域*AWS 一般參考*。僅這些區域支援 CodeDeploy。

1. 若要顯示部署詳細資訊，請選擇執行個體的部署 ID。

1. 您可以在部署頁面的 **Instance activity (執行個體活動)** 區段檢視所有執行個體。

1. 若要查看執行個體個別部署生命週期事件的相關資訊，請移至部署詳細資訊頁面上的 **Events (事件)** 欄位，然後選擇 **View events (檢視事件)**。
**注意**  
如果 **失敗** 顯示在任何生命週期事件中，在執行個體詳細資訊頁面上，選擇 **檢視記錄檔**，**在 EC2 裡檢視**，或在兩者上檢視。如需疑難排解的秘訣，請參閱[對執行個體問題進行故障診斷](troubleshooting-ec2-instances.md)。

1. 如果您想要查看 Amazon EC2 執行個體的詳細資訊，請在執行個體 ID 欄中選擇**執行個體的 ID**。

## 檢視執行個體詳細資訊 (CLI)
<a name="instances-view-details-cli"></a>

若要使用 AWS CLI 來檢視執行個體詳細資訊，請呼叫 `get-deployment-instance`命令或 `list-deployment-instances`命令。

若要檢視單一執行個體的詳細資訊，請呼叫 [get-deployment-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-instance.html) 命令，指定：
+ 唯一部署 ID。若要取得部署 ID，請呼叫 [list-deployments](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployments.html) 命令。
+ 唯一執行個體 ID。若要取得執行個體 ID，請呼叫 [list-deployment-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-instances.html) 命令。

若要檢視部署中使用的執行個體 IDs 清單，請呼叫 [list-deployment-instances](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-instances.html) 命令，指定：
+ 唯一部署 ID。若要取得部署 ID，請呼叫 [list-deployments](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployments.html) 命令。
+ 或者，是否僅由他們的部署狀態包含的特定執行個體 ID。(如果未指定，不論他們的部屬狀態如何，所有符合的執行個體都將列出)。

# CodeDeploy 執行個體運作狀態
<a name="instances-health"></a>

CodeDeploy 會監控部署群組中執行個體的運作狀態。如果正常運作的執行個體數目低於在部署期間針對部署群組所指定的最低正常運作執行個體數目，則它會讓部署失敗。例如，如果 85% 的執行個體在部署期間必須維持正常運作，而且部署群組包含 10 個執行個體，則部署至單一執行個體失敗時，整體部署就會失敗。原因是執行個體離線以安裝最新的應用程式修訂時，可用的正常運作執行個體計數已經降到 90%。失敗的執行個體加上另一個離線執行個體，表示只有 80% 的執行個體運作狀態良好且可用。CodeDeploy 將使整體部署失敗。

請務必記住，若要讓整體部署成功，必須符合下列條件：
+ CodeDeploy 能夠部署到部署中的每個執行個體。
+ 部署到至少一個執行個體必須成功。這表示即使最低正常運作主機值為 0，部署到至少一個執行個體還是必須成功 (也就是，至少有一個執行個體必須正常運作)，整體部署才會成功。

**Topics**
+ [運作狀態](#instances-health-status)
+ [關於運作狀態良好的執行個體數量下限](#minimum-healthy-hosts)
+ [每個可用區域的運作狀態良好執行個體數量下限](#minimum-healthy-hosts-az)

## 運作狀態
<a name="instances-health-status"></a>

CodeDeploy 為每個執行個體指派兩個運作狀態值：*修訂運作*狀態和*執行個體運作*狀態。

修訂版運作狀態  
修訂版運作狀況是根據目前在執行個體上安裝的應用程式修訂而定。它有下列的狀態數值：  
+ 目前：安裝在執行個體上的修訂版符合適用上一次成功部署中部署群組的修訂。
+ 舊版：安裝在執行個體上的修訂版符合較舊版本的應用程式。
+ 不明：應用程式修訂版尚未成功安裝在執行個體上。

執行個體運作狀態  
執行個體運作狀態是根據成功部署至執行個體的而定。其具有下列數值：  
+ 正常運作：上一次部署到執行個體成功。
+ 問題：嘗試部署修訂版到執行個體但失敗，或修訂版尚未部署到執行個體上。

CodeDeploy 使用修訂運作狀態和執行個體運作狀態，依下列順序排程部署至部署群組的執行個體：

1. 有問題的執行個體運作狀態。

1. 不明修訂版的運作狀態。

1. 舊修訂版的運作狀態。

1. 目前修訂版的運作狀態。

如果整體部署成功，會更新修訂版和部署群組的運作狀態數值，以反映最新的部署狀況。
+ 目前所有成功部署過的執行個體須保持為目前的狀態。否則，則會變成不名的狀態。
+ 所有成功部署過的舊執行個體與不明的執行個體，須變為目前的狀態。否則，則會繼續維持舊版或不明的狀態。
+ 目前所有成功部署過的正常運作執行個體，須保持正常運作狀態。否則，則會變成有問題狀態。
+ 所有成功部署過的有問題之執行個體都會變為正常運作。否則，則會繼續保持為有問題狀態。

如果整體部署失敗或停止：
+ CodeDeploy 嘗試部署應用程式修訂版的每個執行個體都會將其執行個體運作狀態設定為正常運作或運作狀態不佳，取決於該執行個體的部署嘗試是否成功。
+ CodeDeploy 未嘗試部署應用程式修訂版的每個執行個體都會保留其目前的執行個體運作狀態值。
+ 部署群組的修訂版保持不變。

## 關於運作狀態良好的執行個體數量下限
<a name="minimum-healthy-hosts"></a>

所需的最低正常運作執行個體數目定義為部署組態的一部分。

**重要**  
在藍/綠部署期間，部署組態和最低正常運作主機值會套用至替換環境中的執行個體，而不是原始環境中的執行個體。不過，從負載平衡器取消註冊原始環境中的執行個體時，如果無法成功取消註冊單一原始執行個體，則會將整體部署標示為 Failed (失敗)。

CodeDeploy 提供三種預設部署組態，這些組態具有常用的最低運作狀態良好主機值：


| 預設部署組態名稱 | 預先定義的最低正常運作主機值 | 
| --- | --- | 
| CodeDeployDefault.OneAtATime | 1 | 
| CodeDeployDefault.HalfAtATime | 50% | 
| CodeDeployDefault.AllAtOnce | 0 | 

如需預設部署組態的詳細資訊，請參閱[在 CodeDeploy 中使用部署組態](deployment-configurations.md)。

您可以在 CodeDeploy 中建立自訂部署組態，以定義您自己的運作狀態最低主機值。在使用以下操作時，您可以自行定義數值 (整數或百分比皆可)：
+ 當您在 中使用 [create-deployment-config](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment-config.html) 命令`minimum-healthy-hosts`時 AWS CLI。
+ 如同 CodeDeploy API 中的 `Value` [MinimumHealthyHosts](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_MinimumHealthyHosts.html) 資料類型。
+ 當您在 CloudFormation 範本中使用 [AWS::CodeDeploy::DeploymentConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentconfig.html) `MinimumHealthyHosts`時。

CodeDeploy 可讓您為部署指定運作狀態良好的執行個體數目下限，以達成兩個主要目的：
+ 為判斷整體部署成功或失敗。如果應用程式修訂版成功部署最低數量的正常運作執行個體，則部署成功。
+ 為判斷部署階段中，正常運作執行個體的數量，以允許部署繼續作業。

您可以為您的部署群組指定最低數量的正常運作執行個體，做為執行個體總數量的一部分或的百分比。如果您指定百分比，則在部署開始時，CodeDeploy 會將百分比轉換為同等數量的執行個體，將任何小數執行個體四捨五入。

CodeDeploy 會在部署程序期間追蹤部署群組執行個體的運作狀態，並使用部署指定的運作狀態最低數量執行個體來決定是否繼續部署。基本原則是部署必須永遠不會使正常運作執行個體數量於您所指定的最小值。唯一例外是部署群組在起始時就擁有少於指定最低數量的執行個體。這種情況下，部署程序不會進一步減少任何正常運作執行個體。

**注意**  
CodeDeploy 會嘗試部署到部署群組中的所有執行個體，即使是目前處於已停止狀態的執行個體。在最低運作狀態良好的主機計算中，已停止的執行個體做為失敗的執行個體有相同的影響。若要解決因太多停止的執行個體導致部署失敗，請重新啟動執行個體，或變更其標籤，使其從部署群組中排除。

CodeDeploy 會嘗試將應用程式修訂版部署至部署群組運作狀態不佳的執行個體，以啟動部署程序。對於每個成功的部署，CodeDeploy 會將執行個體的運作狀態變更為正常運作，並將其新增至部署群組的運作狀態執行個體。CodeDeploy 接著會將目前運作狀態良好的執行個體數目與指定的運作狀態良好執行個體數目下限進行比較。
+ 如果運作狀態良好的執行個體數目小於或等於指定的運作狀態良好執行個體數目下限，CodeDeploy 會取消部署，以確保運作狀態良好的執行個體數目不會隨著更多部署而減少。
+ 如果運作狀態良好的執行個體數目至少大於指定的運作狀態良好執行個體數目下限，CodeDeploy 會將應用程式修訂版部署到原始運作狀態良好的執行個體集。

如果部署至運作狀態良好的執行個體失敗，CodeDeploy 會將該執行個體的運作狀態變更為運作狀態不佳。隨著部署進行，CodeDeploy 會更新目前運作狀態良好的執行個體數目，並將其與指定的運作狀態良好執行個體數目下限進行比較。如果運作狀態良好的執行個體數量在部署程序的任何時間點降至指定的最小數量，CodeDeploy 會停止部署。此舉可防止接下來可能會失敗的部署，以及防止數量低於指定最小值的正常運作執行個體發生。

**注意**  
請確定您指定的正常運作執行個體最小值低於部署群組中執行個體的總數。若您指定的是百分比，請記住系統就自動將數值進位。否則，當部署開始時，運作狀態良好的執行個體數目將已經小於或等於指定的運作狀態良好執行個體數目下限，而 CodeDeploy 將立即使整體部署失敗。

CodeDeploy 也會使用指定的運作狀態良好執行個體數目下限和運作狀態良好執行個體的實際數目，來判斷是否及如何將應用程式修訂版部署至多個執行個體。根據預設，CodeDeploy 會將應用程式修訂版部署到盡可能多的執行個體，而不會有任何讓運作狀態良好的執行個體數目低於指定運作狀態良好執行個體數目下限的風險。

為了判斷應該一次部署到 的執行個體數量，CodeDeploy 會使用下列計算：

```
[total-hosts] - [minimum-healthy-hosts] =
        [number-of-hosts-to-deploy-to-at-once]
```

例如：
+ 如果您的部署群組有 10 個執行個體，且您將運作狀態良好的執行個體數量下限設定為 9，則 CodeDeploy 會一次部署至 1 個執行個體。
+ 如果您的部署群組有 10 個執行個體，且您將運作狀態良好的執行個體數量下限設定為 3，則 CodeDeploy 會在第一個批次中同時部署到 7 個執行個體，然後在第二個批次中部署到剩餘的 3 個執行個體。
+ 如果您的部署群組有 10 個執行個體，且您將運作狀態良好的執行個體數量下限設定為 0，則 CodeDeploy 會同時部署到 10 個執行個體。

**範例**

以下範例假設部署群組有 10 個執行個體。

正常運作執行個體的最小值：95%  
CodeDeploy 會將運作狀態良好的執行個體數量下限四捨五入至 10 個執行個體，等於運作狀態良好的執行個體數量。在尚未部署修訂版至任何執行個體上，整體部署已立刻失敗。

正常運作執行個體的最小值：9  
CodeDeploy 一次將修訂部署至一個執行個體。如果部署到任何執行個體失敗，CodeDeploy 會立即失敗整體部署，因為運作狀態良好的執行個體數目等於運作狀態良好的執行個體數目下限。此規則的例外是若最後一個執行個體發生失敗，仍然可以成功部署。  
CodeDeploy 會繼續部署，一次一個執行個體，直到任何部署失敗或整體部署完成為止。如果所有 10 個部署皆成功，部署群組則會有 10 個正常運作執行個體。

正常運作執行個體的最小值：8  
CodeDeploy 一次將修訂部署到兩個執行個體。如果其中兩個部署失敗，CodeDeploy 會立即使整體部署失敗。此規則的例外是若最後一個執行個體是第二個發生失敗的，則仍然可以成功部署。

正常運作執行個體的最小值：0  
CodeDeploy 會一次將修訂版部署到整個部署群組。至少必須有一個部署到執行個體成功，則整體部署才會成功。如果 0 個執行個體正常運作，則部署會失敗。這是因為為了將整體部署標記為成功，即使運作狀態最低的執行個體值為 0，當整體部署完成時，至少有一個執行個體必須運作狀態良好。

## 每個可用區域的運作狀態良好執行個體數量下限
<a name="minimum-healthy-hosts-az"></a>

**注意**  
本節會交替使用*執行個體*和*主機*一詞來參考 Amazon EC2 執行個體。

如果您要部署到多個[可用區域中的](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-availability-zones)執行個體，您可以選擇啟用 [zonal configuration](deployment-configurations-create.md#zonal-config)功能，以允許 CodeDeploy 一次部署到一個可用區域。

啟用此功能時，CodeDeploy 會確保運作狀態良好的主機數量保持在「每個區域運作狀態良好的主機數量下限」*和*「運作狀態良好的主機數量下限」值以上。如果運作狀態良好的主機數量低於任一值，CodeDeploy 會失敗所有可用區域的部署。

為了計算要一次部署到 的主機數量，CodeDeploy 同時使用「每個區域運作狀態良好的主機下限」和「運作狀態良好的主機下限」值。CodeDeploy 將使用*較少*的計算`[A]`和 `[B]`，其中 `[A]`和 `[B]`為：

```
[A] = [total-hosts] - [min-healthy-hosts] =
        [number-of-hosts-to-deploy-to-at-once]
```

```
[B] = [total-hosts-per-AZ] - [min-healthy-hosts-per-AZ] =
        [number-of-hosts-to-deploy-to-at-once-per-AZ]
```

在決定要一次部署到 的主機數量之後，CodeDeploy 會以該數量的批次部署到主機，一次一個可用區域，並在區域之間選擇性暫停 （或「製作時間」)。

**範例**

如果您的部署設定如下：
+ `[total-hosts]` 是 `200`
+ `[minimum-healthy-hosts]` 是 `160`
+ `[total-hosts-per-AZ]` 是 `100` 
+ `[minimum-healthy-hosts-per-AZ]` 是 `50`

Then...
+ `[A]` = `200 - 160 = 40`
+ `[B]` = `100 - 50 = 50`
+ `40` 小於 `50`

因此，CodeDeploy 會一次部署到`40`主機。

在此案例中，部署展開方式如下：

1. CodeDeploy 部署到第一個可用區域：

   1. CodeDeploy 部署到第一個`40`主機。

   1. CodeDeploy 部署到下一個`40`主機。

   1. CodeDeploy 會部署到剩餘的`20`主機。

      第一個可用區域的部署現在已完成。

1. （選用） CodeDeploy 會在部署到第一個區域 'bakes' 時等待，如**監控持續時間**或**為第一個區域設定新增監控持續時間**所定義。如果沒有問題，CodeDeploy 會繼續。

1. CodeDeploy 部署到第二個可用區域：

   1. CodeDeploy 部署到第一個`40`主機。

   1. CodeDeploy 部署到下一個`40`主機。

   1. CodeDeploy 會部署到剩餘的`20`主機。

      第二個和最終可用區域的部署現在已完成。

若要了解區域組態功能，以及如何指定每個可用區域運作狀態良好的執行個體數目下限，請參閱 [zonal configuration](deployment-configurations-create.md#zonal-config)。