

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

# CodeDeploy 主要元件
<a name="primary-components"></a>

開始使用服務之前，您應該先熟悉 CodeDeploy 部署程序的主要元件。

**Topics**
+ [應用程式](#primary-components-application)
+ [運算平台](#primary-components-compute-platform)
+ [Deployment configuration (部署組態)](#primary-components-deployment-configuration)
+ [部署群組](#primary-components-deployment-group)
+ [部署類型](#primary-components-deployment-type)
+ [IAM 執行個體描述檔](#primary-components-iam-instance-profile)
+ [修訂](#primary-components-revision)
+ [服務 角色](#primary-components-service-role)
+ [目標修訂版](#primary-components-target-revision)
+ [其他元件](#primary-components-other-components)

## 應用程式
<a name="primary-components-application"></a>

*應用程式*是可唯一識別您要部署之應用程式的名稱。CodeDeploy 使用此名稱做為容器，以確保在部署期間參考正確的修訂、部署組態和部署群組組合。

## 運算平台
<a name="primary-components-compute-platform"></a>

*運算平台*是 CodeDeploy 部署應用程式的平台。有三種運算平台：
+ **EC2/內部部署**：描述實體伺服器的執行個體，可以是 Amazon EC2 雲端執行個體、內部部署伺服器或兩者。使用 EC2/現場部署運算平台建立的應用程式可以由可執行檔、組態檔、映像等組成。

  使用 EC2/現場部署運算平台的部署會使用就地部署或藍/綠部署類型，管理流量導向執行個體的方式。如需詳細資訊，請參閱[CodeDeploy 部署類型的概觀](welcome.md#welcome-deployment-overview)。
+ **AWS Lambda**：用於部署由更新版本的 Lambda 函數組成的應用程式。 會在由高可用性運算結構組成的無伺服器運算環境中 AWS Lambda 管理 Lambda 函數。運算資源的所有管理都會由 執行 AWS Lambda。如需詳細資訊，請參閱[無伺服器運算和應用程式](https://aws.amazon.com/serverless/)。如需 AWS Lambda 和 Lambda 函數的詳細資訊，請參閱 [AWS Lambda](https://aws.amazon.com/lambda/)。

  您可以透過選擇 Canary、線性或all-at-once組態，管理在部署期間將流量轉移到更新 Lambda 函數版本的方式。
+ **Amazon ECS**：用來將 Amazon ECS 容器化應用程式部署為任務集。CodeDeploy 透過安裝更新版本的應用程式作為新的替換任務集來執行藍/綠部署。CodeDeploy 會將生產流量從原始應用程式任務集重新路由至替代任務集。原始任務集會在成功部署後終止。如需 Amazon ECS 的詳細資訊，請參閱 [Amazon Elastic Container Service](https://aws.amazon.com/ecs/)。

  您可以透過選擇 Canary、線性或一次全部組態，管理部署期間將哪些流量轉移到已更新任務集的方式。

**注意**  
透過 CodeDeploy 和 支援 Amazon ECS 藍/綠部署 CloudFormation。後續各節將說明這些部署的詳細資訊。

## Deployment configuration (部署組態)
<a name="primary-components-deployment-configuration"></a>

*部署組態*是一組部署規則，以及 CodeDeploy 在部署期間使用的部署成功和失敗條件。如果您的部署使用 EC2/現場部署運算平台，您可以為部署指定運作狀態良好的執行個體數目下限。如果您的部署使用 AWS Lambda 或 Amazon ECS 運算平台，您可以指定流量如何路由到更新的 Lambda 函數或 ECS 任務集。

如需為使用 EC2/現場部署運算平台的部署指定運作狀態良好主機數目下限的詳細資訊，請參閱 [關於運作狀態良好的執行個體數量下限](instances-health.md#minimum-healthy-hosts)。

下列部署組態指定如何在使用 Lambda 或 ECS 運算平台的部署期間路由流量：
+ **Canary**：流量以兩個增量轉移。您可以從預先定義的 Canary 選項中進行選擇，這些選項會指定在第一個增量中轉移到更新的 Lambda 函數或 ECS 任務集的流量百分比，以及以分鐘為單位的間隔，之後剩餘的流量會以第二個增量轉移。
+ **Linear (線性)**：流量以每個增量之間的相等分鐘數以同等增量轉移。您可從預先指定的線性選項中指定每次增量的流量轉移百分比例，以及在每個增量之間的分鐘數。
+ **All-at-once**：所有流量都會一次從原始 Lambda 函數或 ECS 任務集轉移到更新的函數或任務集。

## 部署群組
<a name="primary-components-deployment-group"></a>

*部署群組*是一組個別執行個體。部署群組包含個別標記的執行個體、Amazon EC2 Auto Scaling 群組中的 Amazon EC2 執行個體，或兩者。如需 Amazon EC2 執行個體標籤的相關資訊，請參閱[使用主控台處理標籤](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#Using_Tags_Console)。如需內部部署執行個體的資訊，請參閱「[使用 CodeDeploy 的內部部署執行個體](instances-on-premises.md)」。如需 Amazon EC2 Auto Scaling 的詳細資訊，請參閱 [將 CodeDeploy 與 Amazon EC2 Auto Scaling 整合](integrations-aws-auto-scaling.md)。

## 部署類型
<a name="primary-components-deployment-type"></a>

*部署類型*是一種方法，用於在部署群組中的執行個體上提供最新的應用程式修訂版。有兩個部署類型：
+ **就地部署**：部署群組中每個執行個體上的應用程式會停止、安裝最新的應用程式修訂版，並啟動和驗證應用程式的新版本。您可以使用負載平衡器，讓每個執行個體在其部署期間取消註冊，然後在部署完成後還原至 服務。只有使用 EC2/現場部署運算平台的部署才能使用就地部署。如需就地部署的詳細資訊，請參閱 [就地部署概觀](welcome.md#welcome-deployment-overview-in-place)。
+ **藍/綠部署**：部署的行為取決於您使用的運算平台：
  + **EC2/現場部署運算平台上的藍/綠**：部署群組 （原始環境） 中的執行個體會使用下列步驟，以不同的一組執行個體 （取代環境） 取代：
    + 為取代環境佈建執行個體。
    + 最新的應用程式修訂版會安裝在取代執行個體上。
    + 對於應用程式測試和系統驗證等活動，會發生選用的等待時間。
    + 替換環境中的執行個體會向一或多個 Elastic Load Balancing 負載平衡器註冊，導致流量重新路由至它們。原始環境中的執行個體會取消註冊，並可終止或繼續執行以供其他使用。
**注意**  
如果您使用 EC2/現場部署運算平台，請注意，藍/綠部署僅適用於 Amazon EC2 執行個體。
  + ** AWS Lambda 或 Amazon ECS 運算平台上的藍/綠**：流量會根據 **Canary**、**線性**或**all-at-once**組態遞增轉移。
  + **透過 進行藍/綠部署 CloudFormation**：流量會在 CloudFormation 堆疊更新過程中，從您目前的資源轉移到已更新的資源。目前僅支援 ECS 藍/綠部署。

  如需藍/綠部署的詳細資訊，請參閱 [藍/綠部署概觀](welcome.md#welcome-deployment-overview-blue-green)。

**注意**  
使用 CodeDeploy 和 支援 Amazon ECS 藍/綠部署 CloudFormation。後續各節將說明這些部署的詳細資訊。

## IAM 執行個體描述檔
<a name="primary-components-iam-instance-profile"></a>

*IAM 執行個體描述*檔是您連接到 Amazon EC2 執行個體的 IAM 角色。此設定檔包含存取存放應用程式之 Amazon S3 儲存貯體或 GitHub 儲存庫所需的許可。如需詳細資訊，請參閱[步驟 4：為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔](getting-started-create-iam-instance-profile.md)。

## 修訂
<a name="primary-components-revision"></a>

*修訂*是您應用程式的版本。 AWS Lambda 部署修訂是 YAML 或 JSON 格式的檔案，可指定要部署之 Lambda 函數的相關資訊。EC2/現場部署修訂是封存檔案，其中包含來源內容 （原始程式碼、網頁、可執行檔和部署指令碼） 和應用程式規格檔案 (AppSpec 檔案）。 AWS Lambda 修訂可以存放在 Amazon S3 儲存貯體中。EC2/現場部署修訂版存放在 Amazon S3 儲存貯體或 GitHub 儲存庫中。對於 Amazon S3，修訂由其 Amazon S3 物件金鑰及其 ETag、版本或兩者唯一識別。對於 GitHub，修訂版的唯一識別則是依照其遞交 ID。

## 服務 角色
<a name="primary-components-service-role"></a>

*服務角色*是一種 IAM 角色，可授予 AWS 服務的許可，使其可以存取 AWS 資源。您連接到服務角色的政策會決定服務可存取哪些 AWS 資源，以及該服務可以對這些資源執行的動作。對於 CodeDeploy，服務角色用於下列項目：
+ 讀取套用至執行個體的標籤或與執行個體相關聯的 Amazon EC2 Auto Scaling 群組名稱。這可讓 CodeDeploy 識別可部署應用程式的執行個體。
+ 在執行個體、Amazon EC2 Auto Scaling 群組和 Elastic Load Balancing 負載平衡器上執行操作。
+ 將資訊發佈至 Amazon SNS 主題，以便在指定的部署或執行個體事件發生時傳送通知。
+ 擷取 CloudWatch 警示的相關資訊，以設定部署的警示監控。

如需詳細資訊，請參閱[步驟 2：建立 CodeDeploy 的服務角色](getting-started-create-service-role.md)。

## 目標修訂版
<a name="primary-components-target-revision"></a>

*目標修訂*是您上傳至儲存庫且想要部署至部署群組中執行個體的最新版本應用程式修訂。換言之，就是目前鎖定為部署目標的應用程式修訂版。這也是會拿來自動部署的修訂版。

## 其他元件
<a name="primary-components-other-components"></a>

如需 CodeDeploy 工作流程中其他元件的資訊，請參閱下列主題：
+ [選擇 CodeDeploy 儲存庫類型](application-revisions-repository-type.md)
+  [CodeDeploy 部署](deployment-steps.md)
+  [CodeDeploy 應用程式規格 (AppSpec) 檔案](application-specification-files.md)
+  [CodeDeploy 執行個體運作狀態](instances-health.md)
+  [使用 CodeDeploy 代理程式](codedeploy-agent.md)
+  [使用 CodeDeploy 的內部部署執行個體](instances-on-premises.md)