

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

# 與 CodeDeploy 的產品和服務整合
<a name="integrations"></a>

根據預設，CodeDeploy 會與許多 AWS 服務和合作夥伴產品和服務整合。以下資訊可協助您設定 CodeDeploy 以與您所使用的產品和服務整合。
+ [與其他 AWS 服務的整合](integrations-aws.md)
+  [與合作夥伴產品和服務整合](integrations-partners.md)
+ [來自社群的整合範例](integrations-community.md)

# 與其他 AWS 服務的整合
<a name="integrations-aws"></a>

CodeDeploy 已與下列 AWS 服務整合：


|  |  | 
| --- |--- |
| Amazon CloudWatch |  [Amazon CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/) 是一種監控服務，適用於 AWS 雲端資源和您執行的應用程式 AWS。您可以使用 Amazon CloudWatch 收集和追蹤指標、收集和監控日誌檔案，以及設定警示。CodeDeploy 支援下列 CloudWatch 工具： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-aws.html)  | 
| Amazon EC2 Auto Scaling |  CodeDeploy 支援 [Amazon EC2 Auto Scaling](https://aws.amazon.com/autoscaling)。 AWS 此服務可以根據您指定的條件自動啟動 Amazon EC2 執行個體，例如：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-aws.html) 您可以視需要向外擴展一組 Amazon EC2 執行個體，然後使用 CodeDeploy 自動部署應用程式修訂版。Amazon EC2 Auto Scaling 會在不再需要這些Amazon EC2執行個體時將其終止。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-aws.html)  | 
| Amazon Elastic Container Service |   您可以使用 CodeDeploy 將 Amazon ECS 容器化應用程式部署為任務集。CodeDeploy 透過安裝更新版本的應用程式作為新的替換任務集來執行藍/綠部署。CodeDeploy 會將生產流量從原始應用程式任務集重新路由至替代任務集。原始任務集會在成功部署後終止。如需 Amazon ECS 的詳細資訊，請參閱 [Amazon Elastic Container Service](https://aws.amazon.com/ecs/)。  您可以透過選擇 Canary、線性或一次全部組態，管理部署期間將哪些流量轉移到已更新任務集的方式。如需 Amazon ECS 部署的詳細資訊，請參閱 [Amazon ECS 運算平台上的部署](https://docs.aws.amazon.com/en_us/codedeploy/latest/userguide/deployment-steps-ecs.html)。  | 
| AWS CloudTrail |  CodeDeploy 已與 整合[AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。此服務會擷取您 AWS 帳戶中 CodeDeploy 或代表 CodeDeploy 發出的 API 呼叫，並將日誌檔案交付至您指定的 Amazon S3 儲存貯體。CloudTrail 會從 CodeDeploy 主控台、透過 CodeDeploy 命令 AWS CLI，或直接從 CodeDeploy APIs 擷取 API 呼叫。使用 CloudTrail 收集的資訊，您可以判斷： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-aws.html) 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-aws.html)  | 
| AWS Cloud9 |  [AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/) 是以雲端為基礎的線上整合開發環境 (IDE)，您只需要從網際網路連線的機器使用瀏覽器來撰寫、執行、偵錯和部署程式碼。 AWS Cloud9 包含程式碼編輯器、偵錯工具、終端機和基本工具，例如 AWS CLI 和 Git。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-aws.html) 如需 的詳細資訊 AWS Cloud9，請參閱[什麼是 AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/welcom.html) [和 入門 AWS Cloud9](https://docs.aws.amazon.com/cloud9/latest/user-guide/get-started.html)。  | 
| AWS CodePipeline |  [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/) 是一種持續交付的服務，讓您能夠將發行軟體所需的步驟，依持續交付程序進行模型化、視覺化和自動化。您可以使用 AWS CodePipeline 定義您自己的發佈程序，讓服務能夠在每次程式碼變更時，建置、測試與部署您的代碼。例如，您可能有三個應用程式適用的部署群組：Beta、Gamma 和 Prod。您可以設定管道，讓每次原始碼發生變更時，一個一個地將更新部署到每個部署群組。 您可以設定 AWS CodePipeline 使用 CodeDeploy 部署： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-aws.html)  您可以在建立管道之前或在**建立管道**精靈中，建立要在階段中部署動作中使用的 CodeDeploy 應用程式、部署和部署群組。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-aws.html)  | 
| AWS 無伺服器應用程式模型 |  AWS 無伺服器應用程式模型 (AWS SAM) 是一種定義無伺服器應用程式的模型。它擴展 CloudFormation 到提供定義 AWS Lambda 無伺服器應用程式所需的函數、Amazon API Gateway APIs 和 Amazon DynamoDB 資料表的簡化方式。如果您已使用 AWS SAM，您可以新增部署偏好設定，以開始使用 CodeDeploy 來管理流量在 AWS Lambda 應用程式部署期間轉移的方式。 如需詳細資訊，請參閱[AWS 無伺服器應用程式模型](https://github.com/awslabs/serverless-application-model)。  | 
| Elastic Load Balancing |  CodeDeploy 支援 [Elastic Load Balancing](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elastic-load-balancing.html)，這是一種將傳入應用程式流量分散到多個 Amazon EC2 執行個體的服務。 對於 CodeDeploy 部署，負載平衡器也會防止流量在尚未就緒、目前正在部署或不再需要作為環境的一部分路由至執行個體。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-aws.html)  | 

**Topics**
+ [Amazon EC2 Auto Scaling](integrations-aws-auto-scaling.md)
+ [Integrating CodeDeploy with Elastic Load Balancing](integrations-aws-elastic-load-balancing.md)

# 將 CodeDeploy 與 Amazon EC2 Auto Scaling 整合
<a name="integrations-aws-auto-scaling"></a>

CodeDeploy 支援 Amazon EC2 Auto Scaling，這項 AWS 服務會根據您定義的條件自動啟動 Amazon EC2 執行個體。這些條件可能包括 CPU 使用率、磁碟讀取或寫入，或傳入或傳出網路流量的指定時間間隔內超過的限制。Amazon EC2 Auto Scaling 會在不再需要執行個體時終止執行個體。如需詳細資訊，請參閱「Amazon EC2 Auto Scaling 使用者指南」**中的[什麼是 Amazon EC2 自動擴展？](https://docs.aws.amazon.com/autoscaling/latest/userguide/WhatIsAutoScaling.html)。

當新的 Amazon EC2 執行個體作為 Amazon EC2 Auto Scaling 群組的一部分啟動時，CodeDeploy 可以自動將您的修訂部署到新的執行個體。您也可以使用向 Elastic Load Balancing 負載平衡器註冊的 Amazon EC2 Auto Scaling 執行個體來協調 CodeDeploy 中的部署。如需詳細資訊，請參閱[將 CodeDeploy 與 Elastic Load Balancing 整合](integrations-aws-elastic-load-balancing.md)及[在 Elastic Load Balancing 中為 CodeDeploy Amazon EC2 部署設定負載平衡器](deployment-groups-create-load-balancer.md)。

**注意**  
如果您將多個部署群組與單一 Amazon EC2 Auto Scaling 群組建立關聯，則可能會遇到問題。如果部署失敗，例如，執行個體會開始關閉，但其他執行中的部署需要一個小時才會逾時。如需詳細資訊，請參閱 [避免將多個部署群組與單一 Amazon EC2 Auto Scaling 群組建立關聯](troubleshooting-auto-scaling.md#troubleshooting-multiple-depgroups)和 [幕後：CodeDeploy 和 Amazon EC2 Auto Scaling 整合](https://aws.amazon.com/blogs/devops/under-the-hood-aws-codedeploy-and-auto-scaling-integration/)。

**Topics**
+ [將 CodeDeploy 應用程式部署至 Amazon EC2 Auto Scaling 群組](#integrations-aws-auto-scaling-deploy)
+ [在 Auto Scaling 縮減事件期間啟用終止部署](#integrations-aws-auto-scaling-behaviors-hook-enable)
+ [Amazon EC2 Auto Scaling 如何與 CodeDeploy 搭配使用](#integrations-aws-auto-scaling-behaviors)
+ [搭配 CodeDeploy 和 Amazon EC2 Auto Scaling 使用自訂 AMI](#integrations-aws-auto-scaling-custom-ami)

## 將 CodeDeploy 應用程式部署至 Amazon EC2 Auto Scaling 群組
<a name="integrations-aws-auto-scaling-deploy"></a>

若要將 CodeDeploy 應用程式修訂版部署至 Amazon EC2 Auto Scaling 群組：

1. 建立或尋找允許 Amazon EC2 Auto Scaling 群組使用 Amazon S3 的 IAM 執行個體描述檔。如需詳細資訊，請參閱[步驟 4：為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔](getting-started-create-iam-instance-profile.md)。
**注意**  
您也可以使用 CodeDeploy 將修訂從 GitHub 儲存庫部署到 Amazon EC2 Auto Scaling 群組。雖然 Amazon EC2 執行個體仍需要 IAM 執行個體設定檔，但設定檔不需要任何其他許可，即可從 GitHub 儲存庫進行部署。

1. 建立或使用 Amazon EC2 Auto Scaling 群組，在啟動組態或範本中指定 IAM 執行個體描述檔。如需詳細資訊，請參閱[在 Amazon EC2 執行個體上執行之應用程式的 IAM 角色](https://docs.aws.amazon.com/autoscaling/ec2/userguide/us-iam-role.html)。

1. 建立或尋找允許 CodeDeploy 建立包含 Amazon EC2 Auto Scaling 群組的部署群組的服務角色。

1. 使用 CodeDeploy 建立部署群組，指定 Amazon EC2 Auto Scaling 群組名稱、服務角色和其他幾個選項。如需詳細資訊，請參閱 [建立就地部署的部署群組 （主控台）](deployment-groups-create-in-place.md) 或 [建立就地部署的部署群組 （主控台）](deployment-groups-create-in-place.md) 。

1. 使用 CodeDeploy 將您的修訂部署到包含 Amazon EC2 Auto Scaling 群組的部署群組。

如需詳細資訊，請參閱[教學課程：使用 CodeDeploy 將應用程式部署至 Auto Scaling 群組](tutorials-auto-scaling-group.md)。

## 在 Auto Scaling 縮減事件期間啟用終止部署
<a name="integrations-aws-auto-scaling-behaviors-hook-enable"></a>

*終止部署*是一種 CodeDeploy 部署，會在 Auto Scaling [縮減事件發生](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-in)時自動啟動。CodeDeploy 會在 Auto Scaling 服務終止執行個體之前執行終止部署。在終止部署期間，CodeDeploy 不會部署任何項目。相反地，它會產生生命週期事件，您可以連接到自己的指令碼來啟用自訂關閉功能。例如，您可以將`ApplicationStop`生命週期事件連接到指令碼，在執行個體終止之前正常關閉應用程式。

如需 CodeDeploy 在終止部署期間產生的生命週期事件清單，請參閱 [生命週期事件掛鉤可用性](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-hooks-availability)。

如果終止部署因任何原因失敗，CodeDeploy 將允許執行個體終止繼續。這表示即使 CodeDeploy 未執行生命週期事件的完整集合 （或任何） 以完成，執行個體也會關閉。

如果您未啟用終止部署，Auto Scaling 服務仍會在縮減事件發生時終止 Amazon EC2 執行個體，但 CodeDeploy 不會產生生命週期事件。

**注意**  
無論您是否啟用終止部署，如果 Auto Scaling 服務在 CodeDeploy 部署進行期間終止 Amazon EC2 執行個體，則 Auto Scaling 和 CodeDeploy 服務所產生的生命週期事件之間可能會發生競爭條件。例如，`Terminating`生命週期事件 （由 Auto Scaling 服務產生） 可能會覆寫`ApplicationStart`事件 （由 CodeDeploy 部署產生）。在此案例中，您可能會遇到 Amazon EC2 執行個體終止或 CodeDeploy 部署失敗。

**啟用 CodeDeploy 以執行終止部署**
+ 在建立或更新部署**群組時，選取將終止關聯新增至 Auto Scaling ** 群組核取方塊。如需說明，請參閱 [建立就地部署的部署群組 （主控台）](deployment-groups-create-in-place.md)或 [建立 EC2/現場部署藍/綠部署的部署群組 （主控台）](deployment-groups-create-blue-green.md)。

  啟用此核取方塊會導致 CodeDeploy 將 [Auto Scaling 生命週期掛](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html)鉤安裝到您在建立或更新 CodeDeploy 部署群組時指定的 Auto Scaling 群組。此掛鉤稱為*終止掛*鉤，並啟用終止部署。

**安裝終止掛鉤後，向內擴展 （終止） 事件會展開，如下所示：**

1. Auto Scaling 服務 （或只是 Auto Scaling) 判斷需要發生縮減事件，並聯絡 EC2 服務以終止 EC2 執行個體。

1. EC2 服務會開始終止 EC2 執行個體。執行個體會移至 `Terminating` 狀態，然後進入 `Terminating:Wait` 狀態。

1. 在 期間`Terminating:Wait`，Auto Scaling 會執行連接到 Auto Scaling 群組的所有生命週期掛鉤，包括 CodeDeploy 安裝的終止掛鉤。

1. 終止關聯會將通知傳送至 CodeDeploy 輪詢的 [Amazon SQS 佇列](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)。

1. 收到通知時，CodeDeploy 會剖析訊息、執行一些驗證，以及執行[終止部署](#integrations-aws-auto-scaling-behaviors-hook-enable)。

1. 當終止部署執行時，CodeDeploy 會每五分鐘將活動訊號傳送至 Auto Scaling，讓它知道執行個體仍在運作中。

1. 到目前為止，EC2 執行個體仍然處於 `Terminating:Wait` 狀態 （或可能是 `Warmed:Pending:Wait` 狀態，如果您已啟用 [Auto Scaling 群組暖集區](https://docs.aws.amazon.com/autoscaling/ec2/userguide/warm-pool-instance-lifecycle.html))。

1. 部署完成時，CodeDeploy `CONTINUE`會向 EC2 終止程序指示 Auto Scaling，無論終止部署是否成功。

## Amazon EC2 Auto Scaling 如何與 CodeDeploy 搭配使用
<a name="integrations-aws-auto-scaling-behaviors"></a>

當您建立或更新 CodeDeploy 部署群組以包含 Auto Scaling 群組時，CodeDeploy 會使用 CodeDeploy 服務角色存取 Auto Scaling 群組，然後將 [Auto Scaling 生命週期掛鉤](https://docs.aws.amazon.com/autoscaling/ec2/userguide/lifecycle-hooks.html)安裝到您的 Auto Scaling 群組。

**注意**  
*Auto Scaling 生命週期關聯*與 CodeDeploy 產生的*生命週期事件* （也稱為*生命週期事件關聯*) 不同，如本指南[AppSpec 'hooks' 區段](reference-appspec-file-structure-hooks.md)的 所述。

CodeDeploy 安裝的 Auto Scaling 生命週期關聯如下：
+ **啟動勾點** — 此勾點會通知 CodeDeploy 正在進行 Auto Scaling [向外擴展事件](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-out)，且 CodeDeploy 需要啟動啟動部署。

  在*啟動部署*期間，CodeDeploy：
  + 將應用程式的修訂部署到向外擴展的執行個體。
  + 產生生命週期事件以指出部署的進度。您可以將這些生命週期事件連接到您自己的指令碼，以啟用自訂啟動功能。如需詳細資訊，請參閱 中的 資料表[生命週期事件掛鉤可用性](reference-appspec-file-structure-hooks.md#reference-appspec-file-structure-hooks-availability)。

  啟動關聯和相關聯的啟動部署一律會啟用，且無法關閉。
+ **終止關聯** — 此選用關聯會通知 CodeDeploy Auto Scaling [縮減事件](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html#as-lifecycle-scale-in)正在進行中，且 CodeDeploy 需要啟動終止部署。

  在*終止部署*期間，CodeDeploy 會產生生命週期事件，以指出執行個體關閉的進度。如需詳細資訊，請參閱[在 Auto Scaling 縮減事件期間啟用終止部署](#integrations-aws-auto-scaling-behaviors-hook-enable)。

**Topics**
+ [CodeDeploy 安裝生命週期掛鉤後，如何使用它們？](#integrations-aws-auto-scaling-behaviors-hook-usage)
+ [CodeDeploy 如何命名 Amazon EC2 Auto Scaling 群組](#integrations-aws-auto-scaling-behaviors-naming)
+ [自訂生命週期關聯事件的執行順序](#integrations-aws-auto-scaling-behaviors-hook-order)
+ [部署期間的橫向擴展事件](#integrations-aws-auto-scaling-behaviors-mixed-environment)
+ [部署期間的縮減事件](#integrations-aws-auto-scaling-behaviors-scale-in)
+ [AWS CloudFormation cfn-init 指令碼中的事件順序](#integrations-aws-auto-scaling-behaviors-event-order)

### CodeDeploy 安裝生命週期掛鉤後，如何使用它們？
<a name="integrations-aws-auto-scaling-behaviors-hook-usage"></a>

安裝啟動和終止生命週期掛鉤後，CodeDeploy 會在 Auto Scaling 群組向外擴展和向內擴展事件期間分別使用這些掛鉤。

**向外擴展 （啟動） 事件展開方式如下：**

1. Auto Scaling 服務 （或只是 Auto Scaling) 判斷需要發生橫向擴展事件，並聯絡 EC2 服務以啟動新的 EC2 執行個體。

1. EC2 服務會啟動新的 EC2 執行個體。執行個體會移至 `Pending` 狀態，然後進入 `Pending:Wait` 狀態。

1. 在 期間`Pending:Wait`，Auto Scaling 會執行連接到 Auto Scaling 群組的所有生命週期掛鉤，包括 CodeDeploy 安裝的啟動掛鉤。

1. 啟動勾點會將通知傳送至 CodeDeploy 輪詢的 [Amazon SQS 佇列](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)。

1. 收到通知時，CodeDeploy 會剖析訊息、執行一些驗證，並啟動[啟動部署](#launch-deployment)。

1. 當啟動部署執行時，CodeDeploy 每五分鐘會將活動訊號傳送至 Auto Scaling，讓它知道執行個體仍在運作中。

1. 到目前為止，EC2 執行個體仍然處於 `Pending:Wait` 狀態。

1. 部署完成時，CodeDeploy 會指示 Auto Scaling 為 `CONTINUE`或 `ABANDON` EC2 啟動程序，取決於部署是否成功。
   + 如果 CodeDeploy 指出 `CONTINUE`，Auto Scaling 會繼續啟動程序，等待其他勾點完成，或將執行個體放入 `Pending:Proceed`，然後進入 `InService` 狀態。
   + 如果 CodeDeploy 指出 `ABANDON`，Auto Scaling 會終止 EC2 執行個體，並視需要重新啟動啟動程序，以符合 Auto Scaling **所需容量**設定中定義的所需執行個體數量。

**向內擴展 （終止） 事件展開方式如下：**

請參閱 [在 Auto Scaling 縮減事件期間啟用終止部署](#integrations-aws-auto-scaling-behaviors-hook-enable)。

### CodeDeploy 如何命名 Amazon EC2 Auto Scaling 群組
<a name="integrations-aws-auto-scaling-behaviors-naming"></a>

 

在 EC2/現場部署運算平台上的藍/綠部署期間，您有兩個選項可將執行個體新增至替代 （綠色） 環境：
+  使用您手動建立或現有的執行個體。
+  使用您指定的 Amazon EC2 Auto Scaling 群組中的設定，在新的 Amazon EC2 Auto Scaling 群組中定義和建立執行個體。

 如果您選擇第二個選項，CodeDeploy 會為您佈建新的 Amazon EC2 Auto Scaling 群組。它使用以下慣例來為群組命名：

```
CodeDeploy_deployment_group_name_deployment_id
```

例如，如果具有 ID `10` 的部署部署部署了名為 的部署群組`alpha-deployments`，則佈建的 Amazon EC2 Auto Scaling 群組會命名為 `CodeDeploy_alpha-deployments_10`。如需詳細資訊，請參閱 [建立 EC2/現場部署藍/綠部署的部署群組 （主控台）](deployment-groups-create-blue-green.md) 和 [GreenFleetProvisioningOption](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_GreenFleetProvisioningOption.html)。

### 自訂生命週期關聯事件的執行順序
<a name="integrations-aws-auto-scaling-behaviors-hook-order"></a>

您可以將自己的生命週期掛鉤新增至 CodeDeploy 部署的 Amazon EC2 Auto Scaling 群組。不過，就 CodeDeploy 預設部署生命週期事件而言，執行這些自訂生命週期關聯事件的順序無法預先決定。例如，如果您將名為 的自訂生命週期掛鉤`ReadyForSoftwareInstall`新增至 Amazon EC2 Auto Scaling 群組，則無法事先知道該掛鉤是在 CodeDeploy 預設部署生命週期事件的第一個之前或之後執行。

若要了解如何將自訂生命週期掛鉤新增至 Amazon EC2 Auto Scaling 群組，請參閱《*Amazon EC2 Auto Scaling 使用者指南*》中的[新增生命週期掛鉤](https://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html#adding-lifecycle-hooks)。

### 部署期間的橫向擴展事件
<a name="integrations-aws-auto-scaling-behaviors-mixed-environment"></a>

如果在部署進行時發生 Auto Scaling 橫向擴展事件，新的執行個體將使用先前部署的應用程式修訂版更新，而不是最新的應用程式修訂版。如果部署成功，舊執行個體和新向外擴展的執行個體將託管不同的應用程式修訂。為了讓舊版的執行個體保持最新狀態，CodeDeploy 會自動啟動後續部署 （緊接在第一個執行個體之後），以更新任何過期的執行個體。如果您想要變更此預設行為，讓過期的 EC2 執行個體保留在較舊的修訂版中，請參閱 [Automatic updates to outdated instances](deployment-groups-configure-advanced-options.md#auto-updates-outdated-instances)。

如果您想要在部署進行時暫停 Amazon EC2 Auto Scaling 向外擴展程序，您可以透過`common_functions.sh`指令碼中的設定來執行此操作，該設定用於與 CodeDeploy 進行負載平衡。如果 `HANDLE_PROCS=true`，下列 Auto Scaling 事件會在部署程序期間自動暫停：
+ AZRebalance
+ AlarmNotification
+ ScheduledActions
+ ReplaceUnhealthy

**重要**  
只有 CodeDeployDefault.OneAtATime 部署組態支援此功能。

如需使用 `HANDLE_PROCS=true`以避免使用 Amazon EC2 Auto Scaling 時發生部署問題的詳細資訊，請參閱 GitHub 上有關在 [aws-codedeploy-samples](https://github.com/awslabs/aws-codedeploy-samples) 中[處理 AutoScaling 程序的重要通知](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb#important-notice-about-handling-autoscaling-processes)。

### 部署期間的縮減事件
<a name="integrations-aws-auto-scaling-behaviors-scale-in"></a>

如果 Auto Scaling 群組在該 Auto Scaling 群組上正在進行 CodeDeploy 部署時開始擴展，則終止程序 （包括 CodeDeploy 終止部署生命週期事件） 與終止執行個體上的其他 CodeDeploy 生命週期事件之間可能會發生競爭條件。如果執行個體在所有 CodeDeploy 生命週期事件完成之前終止，則該特定執行個體上的部署可能會失敗。此外，整體 CodeDeploy 部署可能會失敗，也可能不會失敗，取決於您在部署組態中設定**最低運作狀態良好的主機**設定的方式。

### AWS CloudFormation cfn-init 指令碼中的事件順序
<a name="integrations-aws-auto-scaling-behaviors-event-order"></a>

如果您在最新佈建的 Linux-based 執行個體上使用 `cfn-init`​ (或 `cloud-init`​) 執行命令碼，您的部署可能失敗，除非您在執行個體啟動後嚴格控制事件發生順序。

這順序必須：

1. 新佈建的新執行個體啟動。

1. 所有 `cfn-init` 引導操作命令碼完成執行。

1. CodeDeploy 代理程式啟動。

1. 將最新的應用程式修訂版部署到執行個體中。

如果未仔細控制事件順序，CodeDeploy 代理程式可能會在所有指令碼完成執行之前開始部署。

若要控制事件的順序，請使用這些最佳實務：
+ 透過`cfn-init`指令碼安裝 CodeDeploy 代理程式，將其放置在所有其他指令碼之後。
+ 在自訂 AMI 中包含 CodeDeploy 代理程式，並使用`cfn-init`指令碼來啟動它，將它放在所有其他指令碼之後。

如需使用 的詳細資訊`cfn-init`，請參閱*AWS CloudFormation 《 使用者指南*》中的 [cfn-init](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html)。

## 搭配 CodeDeploy 和 Amazon EC2 Auto Scaling 使用自訂 AMI
<a name="integrations-aws-auto-scaling-custom-ami"></a>

在 Amazon EC2 Auto Scaling 群組中啟動新的 Amazon EC2 執行個體時，您有兩個選項可指定要使用的基本 AMI：
+ 您可以指定已安裝 CodeDeploy 代理程式的基本自訂 AMI。由於代理程式已安裝，此選項會比其他選項更快速地啟動新的 Amazon EC2 執行個體。不過，此選項提供更大的可能性，讓 Amazon EC2 執行個體的初始部署失敗，特別是在 CodeDeploy 代理程式過期時。如果您選擇此選項，我們建議您定期更新基本自訂 AMI 中的 CodeDeploy 代理程式。
+ 您可以指定未安裝 CodeDeploy 代理程式的基本 AMI，並在 Amazon EC2 Auto Scaling 群組中啟動每個新執行個體時安裝代理程式。雖然此選項啟動新的 Amazon EC2 執行個體的速度比其他選項慢，但執行個體初始部署成功的可能性更大。此選項使用最新版本的 CodeDeploy 代理程式。

# 將 CodeDeploy 與 Elastic Load Balancing 整合
<a name="integrations-aws-elastic-load-balancing"></a>

在 CodeDeploy 部署期間，負載平衡器可防止網際網路流量在尚未就緒、目前正在部署或不再需要作為環境的一部分路由至執行個體。負載平衡器扮演的確切角色，卻取決於它是用於藍/綠部署或就地部署。

**注意**  
在藍/綠部署中必須使用 Elastic Load Balancing 負載平衡器，在就地部署中則為選用。

## Elastic Load Balancing 類型
<a name="integrations-aws-elastic-load-balancing-types"></a>

Elastic Load Balancing 提供三種類型的負載平衡器，可用於 CodeDeploy 部署：Classic Load Balancer、Application Load Balancer 和 Network Load Balancer。

Classic Load Balancer  
在傳輸層 (TCP/SSL) 或應用程式層 (HTTP/HTTPS) 進行路由及負載平衡。它支援 VPC。  
Amazon ECS 部署不支援 Classic Load Balancer。

Application Load Balancer  
在應用程式層 (HTTP/HTTPS) 的路由及負載平衡並支援以路徑為基礎的路由。此類型的負載平衡器能夠將請求路由至虛擬私有雲端 (VPC) 中的每個 EC2 執行個體或容器執行個體。  
 Application Load Balancer 目標群組對於 EC2 執行個體上的`instance`部署，以及 `IP` Fargate 部署，必須具有 的目標類型。如需詳細資訊，請參閱[目標類型](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html#target-type)。

Network Load Balancer  
根據從 TCP 封包標頭擷取的地址資訊，而不是從封包內容，在傳輸層 (TCP/UDP Layer-4) 進行路由和負載平衡。Network Load Balancer 可以處理流量暴增、保留用戶端的來源 IP，並在負載平衡器生命週期中使用固定 IP。

若要進一步了解 Elastic Load Balancing 負載平衡器，請參閱下列主題：
+ [什麼是 Elastic Load Balancing？](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html)
+ [什麼是 Classic Load Balancer？](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/introduction.html)
+ [什麼是 Application Load Balancer？](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html)
+ [什麼是 Network Load Balancer？](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html)

## 藍/綠部署
<a name="integrations-aws-elastic-load-balancing-blue-green"></a>

在 Elastic Load Balancing 負載平衡器後方重新路由執行個體流量，是 CodeDeploy 藍/綠部署的基礎。

在藍/綠部署期間，根據您指定的規則，負載平衡器可讓流量路由到部署群組中的新執行個體，而這個群組也是部署最新應用程式修訂版 (替代環境) 的群組，然後將流量從之前的應用程式修訂版所執行的舊執行個體 (原始環境) 區隔開來。

在替換環境中的執行個體向一或多個負載平衡器註冊後，原始環境中的執行個體會取消註冊，而且如果您選擇，則會終止。

對於藍/綠部署，您可以在部署群組中指定一或多個 Classic Load Balancer、Application Load Balancer 目標群組或 Network Load Balancer 目標群組。您可以使用 CodeDeploy 主控台或 AWS CLI ，將負載平衡器新增至部署群組。

如需有關藍/綠部署中的負載平衡器詳細資訊，請參閱下列主題：
+ [在 Elastic Load Balancing 中為 CodeDeploy Amazon EC2 部署設定負載平衡器](deployment-groups-create-load-balancer.md)
+ [建立藍/綠部署的應用程式 （主控台）](applications-create-blue-green.md)
+ [建立 EC2/現場部署藍/綠部署的部署群組 （主控台）](deployment-groups-create-blue-green.md)

## 就地部署：
<a name="integrations-aws-elastic-load-balancing-in-place"></a>

在就地部署期間，負載平衡器會防止網際網路流量路由至即將部署到的目標執行個體，並會在部署到該執行個體完成後，讓執行個體再次開始接受流量。

如果在就地部署期間未使用負載平衡器，網際網路流量仍會在部署過程中導向到執行個體。因此，您的客戶可能會遇到中斷、不完整或過期的 Web 應用程式。當您搭配就地部署使用 Elastic Load Balancing 負載平衡器時，部署群組中的執行個體會從負載平衡器取消註冊，更新為最新的應用程式修訂版，然後在部署成功後，使用負載平衡器重新註冊為相同部署群組的一部分。CodeDeploy 最多會等待 1 小時，讓執行個體在負載平衡器後方正常運作。如果在等待期間負載平衡器未將執行個體標記為運作狀態良好，CodeDeploy 會根據部署組態移至下一個執行個體或使部署失敗。

對於就地部署，您可以指定一或多個 Classic Load Balancer、Application Load Balancer 目標群組或 Network Load Balancer 目標群組。您可以指定負載平衡器做為部署群組組態的一部分，也可以使用 CodeDeploy 提供的指令碼來實作負載平衡器。

### 使用部署群組指定就地部署負載平衡器
<a name="integrations-aws-elastic-load-balancing-in-place-deployment-group"></a>

若要將負載平衡器新增至部署群組，您可以使用 CodeDeploy 主控台或 AWS CLI。針對就地部署之有關在部署群組中指定負載平衡器的詳細資訊，請參閱下列主題：
+ [建立就地部署的應用程式 （主控台）](applications-create-in-place.md)
+ [建立就地部署的部署群組 （主控台）](deployment-groups-create-in-place.md)
+ [在 Elastic Load Balancing 中為 CodeDeploy Amazon EC2 部署設定負載平衡器](deployment-groups-create-load-balancer.md)

### 使用指令碼指定就地部署負載平衡器
<a name="integrations-aws-elastic-load-balancing-in-place-script"></a>

使用以下程序中的步驟來使用部署生命週期指令碼，以針對就地部署設定負載平衡。
**注意**  
當您使用指令碼來設定就地部署適用的負載平衡器時，應當只使用 CodeDeployDefault.OneAtATime 部署組態。不支援並行執行，而 CodeDeployDefault.OneAtATime 設定可確保連續執行指令碼。如需部署組態的詳細資訊，請參閱[在 CodeDeploy 中使用部署組態](deployment-configurations.md)。

在 GitHub 上的 CodeDeploy 範例儲存庫中，我們提供您可以調整以使用 CodeDeploy Elastic Load Balancing 負載平衡器的指示和範例。這些儲存庫包含三個範例指令碼 -`register_with_elb.sh`、 `deregister_from_elb.sh`和 `common_functions.sh`- 提供您需要的所有程式碼。只需在這三個指令碼中編輯預留位置，然後從您的 `appspec.yml` 檔案參考這些指令碼。

若要使用向 Elastic Load Balancing 負載平衡器註冊的 Amazon EC2 執行個體在 CodeDeploy 中設定就地部署，請執行下列動作：

1. 下載您要用於就地部署之負載平衡器類型的範例：
   + [Classic Load Balancer](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb)
   + [Application Load Balancer [或 Network Load Balancer](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2) （任一類型都可以使用相同的指令碼）](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2)

1. 請確定每個目標 Amazon EC2 執行個體都 AWS CLI 已安裝 。

1. 請確定每個目標 Amazon EC2 執行個體都有至少附加彈性負載平衡：\$1 和自動調整規模：\$1 許可的 IAM 執行個體描述檔。

1. 在您的應用程式原始碼目錄中包含了部署生命週期事件指令碼 (`register_with_elb.sh`、`deregister_from_elb.sh` 和 `common_functions.sh`)。

1. 在應用程式修訂版`appspec.yml`的 中，提供指示，讓 CodeDeploy 在 **ApplicationStart** 事件期間執行`register_with_elb.sh`指令碼，以及在 **ApplicationStop** 事件期間執行`deregister_from_elb.sh`指令碼。

1. 如果執行個體是 Amazon EC2 Auto Scaling 群組的一部分，您可以略過此步驟。

   在 `common_functions.sh` 指令碼中：
   + 如果您使用的是 [Classic Load Balancer](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb)，請在 中指定 Elastic Load Balancing 負載平衡器的名稱`ELB_LIST=""`，並對 檔案中的其他部署設定進行任何您需要的變更。
   + 如果您使用的是 [Application Load Balancer [或 Network Load Balancer](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2)](https://github.com/awslabs/aws-codedeploy-samples/tree/master/load-balancing/elb-v2)，請在 中指定 Elastic Load Balancing 目標群組名稱的名稱`TARGET_GROUP_LIST=""`，並對檔案中的其他部署設定進行任何您需要的變更。

1. 將應用程式的原始碼、`appspec.yml` 以及部署生命週期事件指令碼配套成一個應用程式修訂版，然後上傳修訂版。將修訂版部署至 Amazon EC2 執行個體。在部署期間，部署生命週期事件指令碼將使用負載平衡器取消註冊 Amazon EC2 執行個體，等待連線耗盡，然後在部署完成後向負載平衡器重新註冊 Amazon EC2 執行個體。

# 與合作夥伴產品和服務整合
<a name="integrations-partners"></a>

CodeDeploy 具有下列合作夥伴產品和服務的內建整合：


|  |  | 
| --- |--- |
| Ansible |  如果您已經有一組 [Ansible](http://www.ansible.com) 手冊，但只需要在某個位置執行，Ansible 和 CodeDeploy 的 範本會示範幾個簡單的部署掛鉤如何確保 Ansible 可在本機部署執行個體上使用，並執行手冊。如果您已有建置和維護庫存的程序，也有 Ansible 模組可用來安裝和執行 CodeDeploy 代理程式。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-partners.html)  | 
| Atlassian – Bamboo 和 Bitbucket |  [Bamboo](https://www.atlassian.com/software/bamboo/) 的 CodeDeploy 任務會將包含 AppSpec 檔案的目錄壓縮為 .zip 檔案、將檔案上傳至 Amazon S3，然後根據 CodeDeploy 應用程式中提供的組態啟動部署。 對 CodeDeploy 的 Atlassian Bitbucket 支援可讓您隨需直接從 Bitbucket UI 將程式碼推送至 Amazon EC2 執行個體。這表示更新 Bitbucket 儲存庫中的程式碼之後，您不需要登入您的持續整合 (CI) 平台或 Amazon EC2 執行個體，即可執行手動部署程序。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-partners.html)  | 
| Chef |  AWS 提供兩個範本範例，用於整合 [Chef](https://www.chef.io/) 和 CodeDeploy。第一個是安裝和啟動 CodeDeploy 代理程式的 Chef 技術指南。這可讓您在使用 CodeDeploy 時繼續使用 Chef 管理主機基礎設施。第二個範例範本示範如何使用 CodeDeploy，在每個節點上使用 chef-solo 協調技術指南和配方的執行。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-partners.html)  | 
| CircleCI |  [CircleCI](https://circleci.com/) 提供自動化測試和持續整合及部署工具集。在 中建立 IAM 角色 AWS 以搭配 CircleCI 使用，並在 circle.yml 檔案中設定部署參數後，您可以使用 CircleCI 搭配 CodeDeploy 來建立應用程式修訂、將其上傳至 Amazon S3 儲存貯體，然後啟動和監控您的部署。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-partners.html)  | 
| CloudBees |  您可以使用 [CloudBees](https://www.cloudbees.com/) DEV@cloud 上提供的 CodeDeploy Jenkins 外掛程式做為建置後動作。例如，在持續交付管道結尾，您可以使用它來部署應用程式修訂版到您的伺服器機群。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-partners.html)  | 
| Codeship |  您可以使用 [Codeship](https://codeship.com/) 透過 CodeDeploy 部署應用程式修訂版。您可以使用 Codeship UI 將 CodeDeploy 新增至分支的部署管道。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-partners.html)  | 
| GitHub |  您可以使用 CodeDeploy 從 [GitHub](http://www.github.com) 儲存庫部署應用程式修訂版。您也可以在該儲存庫中的原始碼變更時，從 GitHub 儲存庫觸發部署。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-partners.html)  | 
|  **HashiCorp Consul**  |  您可以使用開放原始碼 HashiCorp Consul 工具，協助確保您在 CodeDeploy 中部署應用程式時應用程式環境的運作狀態和穩定性。您可以使用 Consul 註冊應用程式，以便在部署時被發現，將應用程式和節點置於維護模式，將它們從部署解除，如果目標執行個體運作狀態不佳時，即可停止部署。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-partners.html)  | 
| Jenkins |  CodeDeploy [Jenkins](http://jenkins-ci.org/) 外掛程式為您的 Jenkins 專案提供建置後步驟。成功建置後，它會壓縮工作區、上傳至 Amazon S3，並啟動新的部署。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-partners.html)  | 
| Puppet Labs |  AWS 提供 [Puppet](https://puppetlabs.com/) 和 CodeDeploy 的範例範本。第一個是安裝和啟動 CodeDeploy 代理程式的 Puppet 模組。這可讓您在使用 CodeDeploy 時繼續使用 Puppet 來管理主機基礎設施。第二個範例範本示範如何使用 CodeDeploy 協調模組和資訊清單的執行，以及每個節點上的無主控程式。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-partners.html)  | 
| SaltStack |  您可以將 [SaltStack](https://saltproject.io/index.html) 基礎設施與 CodeDeploy 整合。您可以使用 CodeDeploy 模組在小兵上安裝和執行 CodeDeploy 代理程式，或使用幾個簡單的部署勾點，使用 CodeDeploy 協調 Salt 狀態的執行。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-partners.html)  | 
|  **TeamCity**  |  您可以使用 CodeDeploy Runner 外掛程式直接從 TeamCity 部署應用程式。外掛程式會新增 TeamCity 建置步驟，以準備和上傳應用程式修訂版至 Amazon S3 儲存貯體、在 CodeDeploy 應用程式中註冊修訂版、建立 CodeDeploy 部署，以及等待部署完成。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-partners.html)  | 
| Travis CI |  您可以設定 [Travis CI](https://travis-ci.com/)，在成功建置後觸發 CodeDeploy 中的部署。 進一步了解： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/integrations-partners.html)  | 

**Topics**
+ [GitHub](integrations-partners-github.md)

# 將 CodeDeploy 與 GitHub 整合
<a name="integrations-partners-github"></a>

CodeDeploy 支援 [GitHub](https://github.com/about)，這是一種以 Web 為基礎的程式碼託管和共用服務。CodeDeploy 可以將存放在 GitHub 儲存庫或 Amazon S3 儲存貯體中的應用程式修訂版部署到執行個體。CodeDeploy 僅支援 GitHub for EC2/內部部署部署。

**Topics**
+ [從 GitHub 部署 CodeDeploy 修訂版](#github-deployment-steps)
+ [使用 CodeDeploy 的 GitHub 行為](#github-behaviors)

## 從 GitHub 部署 CodeDeploy 修訂版
<a name="github-deployment-steps"></a>

從 GitHub 儲存庫部署應用程式修訂版到執行個體：

1. 建立與 CodeDeploy 和您要部署的 Amazon EC2 執行個體類型相容的修訂版。

   若要建立相容的修訂版，請遵循 [規劃 CodeDeploy 的修訂](application-revisions-plan.md) 和 [將應用程式規格檔案新增至 CodeDeploy 的修訂版](application-revisions-appspec-file.md) 之中的說明。

1. 使用 GitHub 帳戶新增您的修訂版到 GitHub 儲存庫。

   若要建立 GitHub 帳戶，請參閱[​加入GitHub](https://github.com/join)。若要建立 GitHub 儲存庫，請參閱[建立儲存庫](https://help.github.com/articles/create-a-repo/)。

1. 使用 CodeDeploy 主控台中的**建立部署**頁面或 AWS CLI **create-deployment** 命令，將您的修訂從 GitHub 儲存庫部署到設定用於 CodeDeploy 部署的目標執行個體。

   如果您想要呼叫 **create-deployment**命令，您必須先使用主控台的**建立部署**頁面，授予 CodeDeploy 許可，以代表您偏好的 GitHub 帳戶與指定應用程式與 GitHub 互動。每個應用程式都只需要執行此步驟一次。

   若需了解如何使用**建立部署**頁面以從 GitHub 儲存庫進行部署，請參閱[使用 CodeDeploy 建立部署](deployments-create.md)：

   如需了解如何呼叫 **create-deployment** 命令從 GitHub 儲存庫進行部署，請參閱 [建立 EC2/現場部署運算平台部署 (CLI)](deployments-create-cli.md)。

   若要了解如何準備執行個體以用於 CodeDeploy 部署，請參閱 [使用 CodeDeploy 的執行個體](instances.md)。

如需詳細資訊，請參閱[教學課程：使用 CodeDeploy 從 GitHub 部署應用程式](tutorials-github.md)。

## 使用 CodeDeploy 的 GitHub 行為
<a name="github-behaviors"></a>

**Topics**
+ [在 CodeDeploy 中使用應用程式進行 GitHub 身分驗證](#behaviors-authentication)
+ [CodeDeploy 與私有和公有 GitHub 儲存庫的互動](#behaviors-interactions-private-and-public)
+ [CodeDeploy 與組織受管 GitHub 儲存庫的互動](#behaviors-interactions-organization-managed)
+ [使用 CodeDeploy 從 CodePipeline 自動部署 CodeDeploy](#behaviors-deploy-automatically)

### 在 CodeDeploy 中使用應用程式進行 GitHub 身分驗證
<a name="behaviors-authentication"></a>

在您授予 CodeDeploy 與 GitHub 互動的許可後，該 GitHub 帳戶和應用程式之間的關聯會儲存在 CodeDeploy 中。您可以將應用程式和不一樣的 GitHub 帳戶連結。您也可以撤銷 CodeDeploy 與 GitHub 互動的許可。

**將 GitHub 帳戶連結至 CodeDeploy 中的應用程式**

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

1. 在導覽窗格中，展開**部署**，然後選擇**應用程式**。

1. 選擇要連結到不同 GitHub 帳戶的應用程式。

1. 如果您的應用程式沒有部署群組，請選擇**建立部署群組**來建立一個。如需詳細資訊，請參閱[使用 CodeDeploy 建立部署群組](deployment-groups-create.md)。部署群組需在後續步驟選擇 **Create deployment (建立部署)**。

1.  從 **Deployments (部署)** 選擇 **Create deployment (建立部署)**。
**注意**  
您不必建立新的部署。目前，這是將不同 GitHub 帳戶連結至應用程式的唯一方法。

1.  在 **Deployment settings (部署設定)**，對 **Revision type (修訂版類型)**，選擇 **My application is stored in GitHub (我的應用程式存放在 GitHub)**。

1. 執行以下任意一項：
   + 若要為 AWS CodeDeploy 應用程式建立 GitHub 帳戶的連線，請在單獨的 Web 瀏覽器索引標籤中登出 GitHub。在 **GitHub token name (GitHub 符記名稱)** 中，輸入名稱來識別此連線，然後選擇 **Connect to GitHub (連線至 GitHub)**。網頁會提示您授權 CodeDeploy 為您的應用程式與 GitHub 互動。繼續步驟 10。
   + 若要使用您已建立的連線，請在 **GitHub token name (GitHub 符記名稱)** 中選取其名稱，然後選擇 **Connect to GitHub (連線至 GitHub)**。繼續步驟 8。
   + 若要建立連結到一個不一樣的 GitHub 帳戶，請在網路瀏覽器分頁中登出 GitHub。在 **GitHub token name (GitHub 符記名稱)** 中，輸入名稱來識別連線，然後選擇 **Connect to GitHub (連線至 GitHub)**。網頁會提示您授權 CodeDeploy 為您的應用程式與 GitHub 互動。繼續步驟 10。

1. 如果您尚未登入 GitHub，請依照 **Sign in (登入)** 頁面指示使用 GitHub 帳戶登入到您想連結的應用程式中。

1. 選擇 **Authorize application (授權應用程式)**。GitHub 授予 CodeDeploy 許可，以代表所選應用程式的登入 GitHub 帳戶與 GitHub 互動。

1. 如果您不想要建立部署，請選擇 **Cancel (取消)**。

**撤銷 CodeDeploy 與 GitHub 互動的許可**

1. 使用您要撤銷 AWS CodeDeploy 許可之 [GitHub ](https://github.com/dashboard) 帳戶的登入資料登入 GitHub。

1. 開啟 GitHub [應用程式](https://github.com/settings/applications)頁面，在授權應用程式清單中尋找 **CodeDeploy**，然後遵循 GitHub 程序撤銷應用程式的授權。

### CodeDeploy 與私有和公有 GitHub 儲存庫的互動
<a name="behaviors-interactions-private-and-public"></a>

CodeDeploy 支援從私有和公有 GitHub 儲存庫部署應用程式。當您授予 CodeDeploy 代表您存取 GitHub 的許可時，CodeDeploy 將具有 GitHub 帳戶可存取的所有私有 GitHub 儲存庫的讀寫存取權。不過，CodeDeploy 只會從 GitHub 儲存庫讀取。並不會寫入您的任何私人 GitHub 儲存庫。

### CodeDeploy 與組織受管 GitHub 儲存庫的互動
<a name="behaviors-interactions-organization-managed"></a>

根據預設，由組織管理的 GitHub 儲存庫 （而不是您帳戶的私有或公有儲存庫） 不會授予第三方應用程式的存取權，包括 CodeDeploy。如果機構組織的第三方應用程式限制在 GitHub 中啟用，且您嘗試從它的 GitHub 儲存庫部署代碼，則您的部署將失敗。您有兩個方式可以解決這個問題：
+ 身為組織成員，您可以要求組織擁有者核准 CodeDeploy 的存取權。請求此存取權的步驟取決於您是否已為個別帳戶授權 CodeDeploy：
  + 如果您有權存取帳戶中的 CodeDeploy，請參閱[為您的授權應用程式請求組織核准](https://help.github.com/articles/requesting-organization-approval-for-your-authorized-applications/)。
  + 如果您尚未授權存取您帳戶中的 CodeDeploy，請參閱[請求第三方應用程式的組織核准](https://help.github.com/articles/requesting-organization-approval-for-third-party-applications/)。
+ 機構組織擁有者可以停用所有第三方應用程式的限制。如需詳細資訊，請參閱[為您的組織停用第三方應用程式限制](https://help.github.com/articles/disabling-third-party-application-restrictions-for-your-organization/)。

如需詳細資訊，請參閱[關於第三方應用程式限制](https://help.github.com/articles/about-third-party-application-restrictions/)。

### 使用 CodeDeploy 從 CodePipeline 自動部署 CodeDeploy
<a name="behaviors-deploy-automatically"></a>

您可以在原始程式碼變更時，從 CodePipeline 觸發部署。如需詳細資訊，請參閱 [CodePipeline](https://aws.amazon.com/codepipeline/)。

# 來自社群的整合範例
<a name="integrations-community"></a>

下列各節提供部落格文章、文章和社群所提供範例的連結。

**注意**  
這些連結僅供參考，不應視為範例內容的完整清單或背書。 AWS 不負責內容或是外部內容的準確性。

## 部落格文章
<a name="integrations-community-blogposts"></a>
+ [自動化 中的 CodeDeploy 佈建 CloudFormation](http://www.stelligent.com/cloud/automating-aws-codedeploy-provisioning-in-cloudformation/)

  了解如何使用 在 CodeDeploy 中佈建應用程式部署 CloudFormation。

  *發佈日期：2016 年 1 月*
+ [AWS Toolkit for Eclipse 與 CodeDeploy 整合 （第 1 部分）](https://aws.amazon.com/blogs/developer/aws-toolkit-for-eclipse-integration-with-aws-codedeploy-part-1/)

  [AWS Toolkit for Eclipse 與 CodeDeploy 整合 （第 2 部分）](https://aws.amazon.com/blogs/developer/aws-toolkit-for-eclipse-integration-with-aws-codedeploy-part-2/)

  [AWS Toolkit for Eclipse 與 CodeDeploy 整合 （第 3 部分）](https://aws.amazon.com/blogs/developer/aws-toolkit-for-eclipse-integration-with-aws-codedeploy-part-3/)

  了解 Java 開發人員如何使用適用於 Eclipse 的 CodeDeploy 外掛程式， AWS 直接從 Eclipse 開發環境將 Web 應用程式部署到 。

  *發布日期：2015 年 2 月*
+ [使用 CodeDeploy 從 GitHub 自動部署](https://aws.amazon.com/blogs/devops/automatically-deploy-from-github-using-aws-codedeploy/)

  了解如何使用從 GitHub 到 CodeDeploy 的自動部署來建立end-to-end管道。

  *發佈日期：2014 年 12 月*