

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

# 在 CodeDeploy 中使用部署
<a name="deployments"></a>

在 CodeDeploy 中，部署是在一或多個執行個體上安裝內容的程序，以及程序中涉及的元件。此內容可以包含程式碼、Web 和組態檔案、可執行檔、套件、指令碼等。CodeDeploy 會根據您指定的組態規則，部署存放在來源儲存庫中的內容。

 如果您使用 EC2/現場部署運算平台，則同一組執行個體的兩個部署可以同時執行。

CodeDeploy 提供兩種部署類型選項，即就地部署和藍/綠部署。
+ **就地部署**：部署群組中每個執行個體上的應用程式會停止、安裝最新的應用程式修訂版，並啟動和驗證應用程式的新版本。您可以使用負載平衡器，讓每個執行個體在其部署期間取消註冊，然後在部署完成後還原至服務。只有使用 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)。

如需從 Amazon S3 自動部署的資訊，請參閱[使用 CodeDeploy 從 Amazon S3 自動部署](https://aws.amazon.com/blogs/devops/automatically-deploy-from-amazon-s3-using-aws-codedeploy/)。

**Topics**
+ [建立部署](deployments-create.md)
+ [檢視部署詳細資訊](deployments-view-details.md)
+ [檢視部署日誌資料](deployments-view-logs.md)
+ [停止部署](deployments-stop.md)
+ [重新部署和復原部署](deployments-rollback-and-redeploy.md)
+ [在不同的 AWS 帳戶中部署應用程式](deployments-cross-account.md)
+ [驗證本機電腦上的部署套件](deployments-local.md)

# 使用 CodeDeploy 建立部署
<a name="deployments-create"></a>

您可以使用 CodeDeploy 主控台、 AWS CLI或 CodeDeploy APIs 來建立部署，以安裝您已推送至 Amazon S3 的應用程式修訂版，或者，如果您的部署是至部署群組中的執行個體上的 EC2/現場部署運算平台 GitHub。

建立部署的程序取決於部署所使用的運算平台。

**Topics**
+ [部署先決條件](deployments-create-prerequisites.md)
+ [建立 Amazon ECS 運算平台部署 （主控台）](deployments-create-console-ecs.md)
+ [建立 AWS Lambda 運算平台部署 （主控台）](deployments-create-console-lambda.md)
+ [建立 EC2/現場部署運算平台部署 （主控台）](deployments-create-console.md)
+ [建立 Amazon ECS 運算平台部署 (CLI)](deployments-create-ecs-cli.md)
+ [建立 AWS Lambda 運算平台部署 (CLI)](deployments-create-lambda-cli.md)
+ [建立 EC2/現場部署運算平台部署 (CLI)](deployments-create-cli.md)
+ [透過 建立 Amazon ECS 藍/綠部署 CloudFormation](deployments-create-ecs-cfn.md)

# 部署先決條件
<a name="deployments-create-prerequisites"></a>

請先確定下列步驟完成，再開始部署。

## AWS Lambda 運算平台上的部署先決條件
<a name="deployment-prerequisites-lambda"></a>
+ 建立包含至少一個部署群組的應用程式。如需詳細資訊，請參閱 [使用 CodeDeploy 建立應用程式](applications-create.md) 及 [使用 CodeDeploy 建立部署群組](deployment-groups-create.md)。
+ 準備應用程式修訂版，也稱為 AppSpec 檔案，指定您要部署的 Lambda 函數版本。AppSpec 檔案也可以指定 Lambda 函數來驗證您的部署。如需更多資訊，請參閱[使用 CodeDeploy 的應用程式修訂](application-revisions.md)。
+ 如果您想要使用部署的自訂部署組態，請於開始部署程序之前予以建立。如需相關資訊，請參閱[使用 CodeDeploy 建立部署組態](deployment-configurations-create.md)。

## EC2/內部部署運算平台上的部署先決條件
<a name="deployment-prerequisites-server"></a>
+ 針對就地部署，建立或設定您要在其中部署的執行個體。如需相關資訊，請參閱[使用 CodeDeploy 的執行個體](instances.md)。對於藍/綠部署，您可以使用現有的 Amazon EC2 Auto Scaling 群組做為替代環境的範本，或者您指定一或多個執行個體或 Amazon EC2 Auto Scaling 群組做為原始環境。如需詳細資訊，請參閱[教學課程：使用 CodeDeploy 將應用程式部署至 Auto Scaling 群組](tutorials-auto-scaling-group.md)及[將 CodeDeploy 與 Amazon EC2 Auto Scaling 整合](integrations-aws-auto-scaling.md)。
+ 建立包含至少一個部署群組的應用程式。如需詳細資訊，請參閱 [使用 CodeDeploy 建立應用程式](applications-create.md) 及 [使用 CodeDeploy 建立部署群組](deployment-groups-create.md)。
+ 準備您要部署至部署群組中執行個體的應用程式修訂。如需相關資訊，請參閱[使用 CodeDeploy 的應用程式修訂](application-revisions.md)。
+ 如果您想要使用部署的自訂部署組態，請於開始部署程序之前予以建立。如需相關資訊，請參閱[使用 CodeDeploy 建立部署組態](deployment-configurations-create.md)。
+ 如果您要從 Amazon S3 儲存貯體部署應用程式修訂版，則儲存貯體與部署群組中的執行個體位於相同的 AWS 區域。
+ 如果您要從 Amazon S3 儲存貯體部署應用程式修訂版，Amazon S3 儲存貯體政策已套用至儲存貯體。此政策會將下載應用程式修訂所需的許可授予您的執行個體。

  例如，下列 Amazon S3 儲存貯體政策允許任何連接 IAM 執行個體描述檔的 Amazon EC2 執行個體從名為 的 Amazon S3 儲存貯體中的任何位置`arn:aws:iam::444455556666:role/CodeDeployDemo`下載`amzn-s3-demo-bucket`：

  ```
  {
      "Statement": [
          {
              "Action": [
                  "s3:Get*",
                  "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::444455556666:role/CodeDeployDemo"
                  ]
              }
          }
      ]
  }
  ```

  下列 Amazon S3 儲存貯體政策允許具有包含 ARN 之相關聯 IAM 使用者的任何現場部署執行個體從名為 的 Amazon S3 儲存貯體中的任何位置`arn:aws:iam::444455556666:user/CodeDeployUser`下載`amzn-s3-demo-bucket`：

  ```
  {
      "Statement": [
          {
              "Action": [
                  "s3:Get*",
                  "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::444455556666:user/CodeDeployUser"
                  ]
              }
          }
      ]
  }
  ```

  如需有關如何產生和連接 Amazon S3 儲存貯體政策的資訊，請參閱[儲存貯體政策範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)。
+ 如果您要建立藍/綠部署，或已在就地部署的部署群組中指定選用的 Classic Load Balancer、Application Load Balancer 或 Network Load Balancer，則您已使用至少包含兩個子網路的 Amazon VPC 建立 VPC。(CodeDeploy 使用 Elastic Load Balancing，這需要負載平衡器群組中的所有執行個體都位於單一 VPC 中。)

  如果您尚未建立 VPC，請參閱 [Amazon VPC 入門指南](https://docs.aws.amazon.com/AmazonVPC/latest/GettingStartedGuide/ExerciseOverview.html)。
+ 如果您要建立藍/綠部署，您已在 Elastic Load Balancing 中設定至少一個 Classic Load Balancer、Application Load Balancer 或 Network Load Balancer，並使用它來註冊組成原始環境的執行個體。
**注意**  
稍後會向負載平衡器註冊替換環境中的執行個體。

  如需設定負載平衡器的詳細資訊，請參閱 [在 Elastic Load Balancing 中為 CodeDeploy Amazon EC2 部署設定負載平衡器](deployment-groups-create-load-balancer.md)和 [設定 CodeDeploy Amazon ECS 部署的負載平衡器、目標群組和接聽程式](deployment-groups-create-load-balancer-for-ecs.md)。

## 透過 進行藍/綠部署的部署先決條件 CloudFormation
<a name="deployment-prerequisites-cfn-bg"></a>
+ 您的範本不需要為 CodeDeploy 應用程式或部署群組建立資源模型。
+ 您的範本必須包含使用至少包含兩個子網路之 Amazon VPC 的 VPC 資源。
+ 您的範本必須包含 Elastic Load Balancing 中一或多個 Classic Load Balancer、Application Load Balancer 或 Network Load Balancer 的資源，這些資源用於將流量導向目標群組。

# 建立 Amazon ECS 運算平台部署 （主控台）
<a name="deployments-create-console-ecs"></a>

本主題說明如何使用 主控台部署 Amazon ECS 服務。如需詳細資訊，請參閱[教學課程：將應用程式部署至 Amazon ECS](tutorial-ecs-deployment.md)及[教學課程：使用驗證測試部署 Amazon ECS 服務](tutorial-ecs-deployment-with-hooks.md)。

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

1. 執行以下任意一項：
   +  如果您要部署應用程式，請在導覽窗格中展開 **Deploy (部署)**，然後選擇 **Applications (應用程式)**。選擇您要部署的應用程式名稱。請確定應用程式的**運算平台**欄是 **Amazon ECS**。
   +  如果您要重新部署一個部署，請在導覽窗格中展開 **Deploy (部署)**，然後選擇 **Deployments (部署)**。選擇您要重新部署的部署，然後在 **Application (應用程式)** 欄中選擇其應用程式的名稱。請確定您部署的**運算平台**欄是 **Amazon ECS**。

1. 在 **Deployments (部署)** 標籤上，選擇 **Create deployment (建立部署)**。
**注意**  
您的應用程式必須具有部署群組，才能部署。如果您的應用程式沒有部署群組，請在**部署群組**索引標籤上，選擇**建立部署群組**。如需詳細資訊，請參閱[使用 CodeDeploy 建立部署群組](deployment-groups-create.md)。

1. 在 **Deployment group (部署群組)** 中，選擇要用於此部署的部署群組。

1. 在 **Revision location (修訂版本位置)** 旁，選擇修訂版本的所在位置：
   + **我的應用程式存放在 Amazon S3 中** — 如需詳細資訊，請參閱[指定存放在 Amazon S3 儲存貯體中的修訂相關資訊](deployments-create-console-s3.md)，然後返回步驟 6。
   + **使用 AppSpec 編輯器** — 選取 JSON 或 YAML，然後在編輯器中輸入 AppSpec 檔案。您可以選擇另存為文字檔案，以儲存 AppSpec 檔案。 ****當您在這些步驟結束時選擇 **Deploy (部署)** 時，如果您的 JSON 或 YAML 無效，則會收到錯誤。如需建立 AppSpec 檔案的詳細資訊，請參閱 [將應用程式規格檔案新增至 CodeDeploy 的修訂版](application-revisions-appspec-file.md)。

1. (選用) 在 **Deployment description (部署描述)** 方塊中，輸入此部署的描述。

1. (選用) 在 **Rollback configuration overrides (轉返組態覆寫)** 中，您可以指定此部署的自動轉返選項，而其與部署群組所指定的選項 (如果有的話) 不同。

   如需 CodeDeploy 中轉返的資訊，請參閱 [重新部署和部署轉返](deployment-steps-lambda.md#deployment-rollback-lambda)和 [使用 CodeDeploy 重新部署以及復原部署](deployments-rollback-and-redeploy.md)。

   請選擇下列項目：
   + **部署失敗時轉返** — CodeDeploy 會將最後一個已知的良好修訂重新部署為新的部署。
   + **達到警示閾值時轉返** - 如果警示新增至部署群組，CodeDeploy 會在一或多個指定的警示啟用時重新部署上次已知的良好修訂。
   + **停用轉返** — 請勿為此部署執行轉返。

1. 選擇 **Create deployment (建立部署)**。

   如需追蹤部署的狀態，請參閱[檢視 CodeDeploy 部署詳細資訊](deployments-view-details.md)。

# 建立 AWS Lambda 運算平台部署 （主控台）
<a name="deployments-create-console-lambda"></a>

本主題說明如何使用 主控台部署 Lambda 函數。

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

1. 執行以下任意一項：
   +  如果您要部署應用程式，請在導覽窗格中展開 **Deploy (部署)**，然後選擇 **Applications (應用程式)**。選擇您要部署的應用程式名稱。請確定應用程式的**運算平台**欄是 **AWS Lambda**。
   +  如果您要重新部署一個部署，請在導覽窗格中展開 **Deploy (部署)**，然後選擇 **Deployments (部署)**。選擇您要重新部署的部署，然後在 **Application (應用程式)** 欄中選擇其應用程式的名稱。請確定您部署的**運算平台**欄是 **AWS Lambda**。

1. 在 **Deployments (部署)** 標籤上，選擇 **Create deployment (建立部署)**。
**注意**  
您的應用程式必須具有部署群組，才能部署。如果您的應用程式沒有部署群組，請在**部署群組**索引標籤上，選擇**建立部署群組**。如需詳細資訊，請參閱[使用 CodeDeploy 建立部署群組](deployment-groups-create.md)。

1. 在 **Deployment group (部署群組)** 中，選擇要用於此部署的部署群組。

1. 在 **Revision location (修訂版本位置)** 旁，選擇修訂版本的所在位置：
   + **我的應用程式存放在 Amazon S3 中** — 如需詳細資訊，請參閱[指定存放在 Amazon S3 儲存貯體中的修訂相關資訊](deployments-create-console-s3.md)，然後返回步驟 6。
   + **使用 AppSpec 編輯器** — 選取 JSON 或 YAML，然後在編輯器中輸入 AppSpec 檔案。您可以選擇另存為文字檔案，以儲存 AppSpec 檔案。 ****當您在這些步驟結束時選擇 **Deploy (部署)** 時，如果您的 JSON 或 YAML 無效，則會收到錯誤。如需建立 AppSpec 檔案的詳細資訊，請參閱 [將應用程式規格檔案新增至 CodeDeploy 的修訂版](application-revisions-appspec-file.md)。

1. (選用) 在 **Deployment description (部署描述)** 方塊中，輸入此部署的描述。

1. （選用） 展開**部署群組覆寫**以選擇部署組態，以控制流量如何轉移到與部署群組中指定的 Lambda 函數版本不同的 Lambda 函數版本。

   如需詳細資訊，請參閱[AWS Lambda 運算平台上的部署組態](deployment-configurations.md#deployment-configuration-lambda)。

1. (選用) 在 **Rollback configuration overrides (轉返組態覆寫)** 中，您可以指定此部署的自動轉返選項，而其與部署群組所指定的選項 (如果有的話) 不同。

   如需 CodeDeploy 中轉返的資訊，請參閱 [重新部署和部署轉返](deployment-steps-lambda.md#deployment-rollback-lambda)和 [使用 CodeDeploy 重新部署以及復原部署](deployments-rollback-and-redeploy.md)。

   請選擇下列項目：
   + **部署失敗時轉返** — CodeDeploy 會將最後一個已知的良好修訂重新部署為新的部署。
   + **達到警示閾值時轉返** - 如果警示新增至部署群組，CodeDeploy 會在一或多個指定的警示啟用時重新部署上次已知的良好修訂。
   + **停用轉返** — 請勿為此部署執行轉返。

1. 選擇 **Create deployment (建立部署)**。

   如需追蹤部署的狀態，請參閱[檢視 CodeDeploy 部署詳細資訊](deployments-view-details.md)。

# 建立 EC2/現場部署運算平台部署 （主控台）
<a name="deployments-create-console"></a>

本主題說明如何使用 主控台將應用程式部署至 Amazon EC2 或內部部署伺服器。

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

1. 執行以下任意一項：
   +  如果您要部署應用程式，請在導覽窗格中展開 **Deploy (部署)**，然後選擇 **Applications (應用程式)**。選擇您要部署的應用程式名稱。請確定應用程式的**運算平台**欄是 **EC2/內部部署**。
   +  如果您要重新部署一個部署，請在導覽窗格中展開 **Deploy (部署)**，然後選擇 **Deployments (部署)**。找到您要重新部署的部署，然後在 **Application (應用程式)** 欄中選擇其應用程式的名稱。請確定您部署的**運算平台**欄是 **EC2/內部部署**。

1. 在 **Deployments (部署)** 標籤上，選擇 **Create deployment (建立部署)**。
**注意**  
您的應用程式必須具有部署群組，才能部署。如果您的應用程式沒有部署群組，請在**部署群組**索引標籤上，選擇**建立部署群組**。如需詳細資訊，請參閱[使用 CodeDeploy 建立部署群組](deployment-groups-create.md)。

1. 在 **Deployment group (部署群組)** 中，選擇要用於此部署的部署群組。

1. 在 **Repository type (儲存庫類型)** 旁，選擇存放修訂版本的儲存庫類型：
   + **我的應用程式存放在 Amazon S3 中** — 如需詳細資訊，請參閱[指定存放在 Amazon S3 儲存貯體中的修訂相關資訊](deployments-create-console-s3.md)，然後返回步驟 6。
   + **我的應用程式存放在 GitHub 中** — 如需詳細資訊，請參閱[指定 GitHub 儲存庫中所存放修訂的相關資訊](deployments-create-console-github.md)，然後返回步驟 6。

1. (選用) 在 **Deployment description (部署描述)** 方塊中，輸入此部署的描述。

1. （選用） 展開**覆寫部署組態**以選擇部署組態，以控制流量如何轉移到與部署群組中指定的 Amazon EC2 或內部部署伺服器不同的 Amazon EC2 或內部部署伺服器。

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

1. 

   1. 如果您希望執行個體**的部署在生命週期事件失敗時成功，請選取如果 ApplicationStop 生命週期事件失敗，請勿**讓部署失敗。 `ApplicationStop`

   1. 展開**其他部署行為設定**，指定 CodeDeploy 如何處理部署目標位置中不屬於先前成功部署的檔案。

      請選擇下列項目：
      + 部署**失敗** — 報告錯誤，且部署狀態變更為 `Failed`。
      + **覆寫內容** — 如果目標位置中存在同名的檔案，則應用程式修訂版中的版本會取代該檔案。
      + **保留內容** — 如果目標位置中存在同名的檔案，則會保留該檔案，且應用程式修訂版中的版本不會複製到執行個體。

      如需詳細資訊，請參閱[具有現有內容的轉返行為](deployments-rollback-and-redeploy.md#deployments-rollback-and-redeploy-content-options)。

1. (選用) 在 **Rollback configuration overrides (轉返組態覆寫)** 中，您可以指定此部署的自動轉返選項，而其與部署群組所指定的選項 (如果有的話) 不同。

   如需 CodeDeploy 中轉返的資訊，請參閱 [重新部署和部署轉返](deployment-steps-server.md#deployment-rollback)和 [使用 CodeDeploy 重新部署以及復原部署](deployments-rollback-and-redeploy.md)。

   請選擇下列項目：
   + **部署失敗時轉返** — CodeDeploy 會將最後一個已知的良好修訂重新部署為新的部署。
   + **達到警示閾值時轉返** - 如果警示新增至部署群組，CodeDeploy 會在啟用一或多個指定的警示時部署上次已知的良好修訂。
   + **停用轉返** — 請勿為此部署執行轉返。

1. 選擇 **Start deployment (啟動部署)**。

   如需追蹤部署的狀態，請參閱[檢視 CodeDeploy 部署詳細資訊](deployments-view-details.md)。

**Topics**
+ [指定存放在 Amazon S3 儲存貯體中的修訂相關資訊](deployments-create-console-s3.md)
+ [指定 GitHub 儲存庫中所存放修訂的相關資訊](deployments-create-console-github.md)

# 指定存放在 Amazon S3 儲存貯體中的修訂相關資訊
<a name="deployments-create-console-s3"></a>

如果您遵循 中的步驟[建立 EC2/現場部署運算平台部署 （主控台）](deployments-create-console.md)，請依照下列步驟新增存放在 Amazon S3 儲存貯體中的應用程式修訂版詳細資訊。

1. 將修訂的 Amazon S3 連結複製到**修訂位置**。尋找連結值：

   1. 在單獨的瀏覽器標籤中：

      登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)：// 開啟 Amazon S3 主控台。

      瀏覽並選擇修訂。

   1. 如果未顯示 **Properties (屬性)** 窗格，請選擇 **Properties (屬性)** 按鈕。

   1. 在**屬性**窗格中，將**連結**欄位的值複製到 CodeDeploy 主控台中的**修訂位置**方塊。

   將 ETag (檔案檢查總和) 指定為修訂位置的一部分：
   + 如果 **Link (連結)** 欄位值的結尾為 **?versionId=*versionId***，請將 **&etag=** 和 ETag 新增至 **Link (連結)** 欄位值的結尾。
   + 如果 **Link (連結)** 欄位值未指定版本 ID，請將 **?etag=** 和 ETag 新增至 **Link (連結)** 欄位值的結尾。
**注意**  
雖然不容易複製 **Link (連結)** 欄位的值，但是您也可以使用下列任一格式輸入修訂位置：  
**s3://*bucket-name*/*folders*/*objectName***  
**s3://*bucket-name*/*folders*/*objectName*?versionId=*versionId***  
**s3://*bucket-name*/*folders*/*objectName*?etag=*etag***  
**s3://*bucket-name*/*folders*/*objectName*?versionId=*versionId*&etag=*etag***  
***bucket-name*.s3.amazonaws.com/*folders*/*objectName***

1. 如果訊息顯示在 **File type (檔案類型)** 清單中指出偵測不到檔案類型，請選擇修訂的檔案類型。否則，請接受偵測到的檔案類型。

# 指定 GitHub 儲存庫中所存放修訂的相關資訊
<a name="deployments-create-console-github"></a>

如果您遵循[建立 EC2/現場部署運算平台部署 （主控台）](deployments-create-console.md)中的步驟，請遵循這些步驟來新增 GitHub 儲存庫中所存放應用程式修訂的詳細資訊。

1. 在 **Connect to GitHub (連線至 GitHub)** 中，執行下列其中一項：
   + 若要為 CodeDeploy 應用程式建立 GitHub 帳戶的連線，請在不同的 Web 瀏覽器索引標籤中登出 GitHub。在 **GitHub account (GitHub 帳戶)** 中，輸入名稱來識別此連線，然後選擇 **Connect to GitHub (連線至 GitHub)**。網頁會提示您授權 CodeDeploy 為您的應用程式與 GitHub 互動。繼續步驟 2。
   + 若要使用您已建立的連線，請在 **GitHub account (GitHub 帳戶)** 中選取其名稱，然後選擇 **Connect to GitHub (連線至 GitHub)**。繼續步驟 4。
   + 若要建立不同 GitHub 帳戶的連線，請在不同的 Web 瀏覽器標籤中登出 GitHub。選擇 **Connect to a different GitHub account (連接到不同的 GitHub 帳戶)**，然後選擇 **Connect to GitHub (連接到 GitHub)**。繼續步驟 2。

1. 如果提示您登入 GitHub，請按 **Sign in (登入)** 頁面​指示。使用使用者名稱或電子郵件和密碼登入您的 GitHub。

1. 如果出現 **Authorize application (授權應用程式)** 頁面，請選擇 **Authorize application (授權應用程式)**。

1. 在 **Create deployment (建立部署)** 頁面的 **Repository name (儲存庫名稱)** 方塊中，輸入 GitHub 使用者或包含修訂版的組織名稱，後方接著斜線 (`/`)，然後再接含修訂版的儲存庫名稱。如果您不確定數值的類型：

   1. 在不同的 Web 瀏覽器標籤中，前往您的 [GitHub 儀表板](https://github.com/dashboard)。

   1. 在 **Your repositories (您的儲存庫)** 中，將滑鼠指標移至目標儲存庫名稱上。出現工具提示顯示 GitHub 使用者或組織名稱之後接斜線 (`/`)，再接儲存庫名稱。將這個顯示的數值輸入到 **Repository name (儲存庫名稱)** 方塊中。
**注意**  
如果目標儲存庫名稱沒有顯示在 **Your repositories (您的存放庫)** 中，請使用 **Search GitHu (搜尋 GitHub)** 方塊以目標儲存庫名稱以及 GitHub 使用者或組織名稱尋找之。

1. 在 **Commit ID (遞交 ID)** 中，輸入遞交的 ID，其可參考儲存庫中的修訂。如果您不確定數值的類型：

   1. 在不同的 Web 瀏覽器標籤中，前往您的 [GitHub 儀表板](https://github.com/dashboard)。

   1. 在 **Your repositories (您的儲存庫)**中，請選擇包含目標遞交的儲存庫。

   1. 在遞交列表中，尋找及複製遞交 ID，其可參考儲存庫中的修訂。此 ID 通常長度為 40 個字元，並且由字母和數字所組成。(請勿使用短版的遞交 ID，其通常為長版遞交 ID 的前 10 個字元)。

   1. 將遞交 ID 貼至 **Commit ID (遞交 ID)** 方塊中。

# 建立 Amazon ECS 運算平台部署 (CLI)
<a name="deployments-create-ecs-cli"></a>

建立應用程式和修訂之後 （在 Amazon ECS 部署中，這是 AppSpec 檔案）：

呼叫 [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html) 命令，指定：
+ 應用程式名稱。若要檢視應用程式名稱清單，請呼叫 [list-applications](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-applications.html) 命令。
+ 部署群組名稱。若要檢視部署群組名稱的清單，請呼叫 [list-deployment-groups](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-groups.html) 命令。
+ 待部署的修訂版之資訊：

  對於存放在 Amazon S3 中的修訂：
  + 包含修訂的 Amazon S3 儲存貯體名稱。
  + 上傳的修改版名稱。
  + （選用） 修訂版的 Amazon S3 版本識別符。（如果未指定版本識別符，CodeDeploy 會使用最新版本。)
  + (選用) 修訂版的 ETag。（如果未指定 ETag，CodeDeploy 會略過物件驗證。)

  對於存放在不在 Amazon S3 中的檔案中的修訂，您需要檔案名稱及其路徑。因為您的修訂版檔案使用 JSON 或 YAML 寫入，所以它最可能擴展 .json 或 .yaml。
+ (選用) 部署描述。

修訂檔案可指定為上傳至 Amazon S3 儲存貯體的檔案，或指定為字串。作為 **create-deployment** 命令的一部分時的語法為：
+ Amazon S3 儲存貯體：

  `version` 和 `eTag` 是選擇性使用的。

  ```
  --s3-location bucket=string,key=string,bundleType=JSON|YAML,version=string,eTag=string
  ```
+ 字串：

  ```
  --revision '{"revisionType": "String", "string": {"content":"revision-as-string"}}'
  ```

**注意**  
**create-deployment** 命令可以從檔案載入修訂版。如需詳細資訊，請參閱[​從檔案載入參數](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-file)。

如需 AWS Lambda 部署修訂範本，請參閱 [為 AWS Lambda 部署新增 AppSpec 檔案](application-revisions-appspec-file.md#add-appspec-file-lambda)。如需範例修訂，請參閱 [AWS Lambda 部署的 AppSpec 檔案範例](reference-appspec-file-example.md#appspec-file-example-lambda)。

如需追蹤部署的狀態，請參閱[檢視 CodeDeploy 部署詳細資訊](deployments-view-details.md)。

# 建立 AWS Lambda 運算平台部署 (CLI)
<a name="deployments-create-lambda-cli"></a>



建立應用程式和修訂之後 （在 AWS Lambda 部署中，這是 AppSpec 檔案）：

呼叫 [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html) 命令，指定：
+ 應用程式名稱。若要檢視應用程式名稱清單，請呼叫 [list-applications](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-applications.html) 命令。
+ 部署群組名稱。若要檢視部署群組名稱清單，請呼叫 [list-deployment-groups](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-groups.html) 命令。
+ 待部署的修訂版之資訊：

  對於存放在 Amazon S3 中的修訂：
  + 包含修訂的 Amazon S3 儲存貯體名稱。
  + 上傳的修改版名稱。
  + （選用） 修訂版的 Amazon S3 版本識別符。（如果未指定版本識別符，CodeDeploy 會使用最新版本。)
  + (選用) 修訂版的 ETag。（如果未指定 ETag，CodeDeploy 會略過物件驗證。)

  對於存放在不在 Amazon S3 中的檔案中的修訂，您需要檔案名稱及其路徑。因為您的修訂版檔案使用 JSON 或 YAML 寫入，所以它最可能擴展 .json 或 .yaml。
+ (選用) 使用的部署組態名稱。若要檢視部署組態清單，請呼叫 [list-deployment-configs](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-configs.html) 命令。（如果未指定，CodeDeploy 會使用特定的預設部署組態。)
+ (選用) 部署描述。

修訂檔案可指定為上傳至 Amazon S3 儲存貯體的檔案，或指定為字串。作為 **create-deployment** 命令的一部分時的語法為：
+ Amazon S3 儲存貯體：

  `version` 和 `eTag` 是選擇性使用的。

  ```
  --s3-location bucket=string,key=string,bundleType=JSON|YAML,version=string,eTag=string
  ```
+ 字串：

  ```
  --revision '{"revisionType": "String", "string": {"content":"revision-as-string"}}'
  ```

**注意**  
**create-deployment** 命令可以從檔案載入修訂版。如需詳細資訊，請參閱[​從檔案載入參數](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html#cli-using-param-file)。

如需 AWS Lambda 部署修訂範本，請參閱 [為 AWS Lambda 部署新增 AppSpec 檔案](application-revisions-appspec-file.md#add-appspec-file-lambda)。如需範例修訂，請參閱 [AWS Lambda 部署的 AppSpec 檔案範例](reference-appspec-file-example.md#appspec-file-example-lambda)。

如需追蹤部署的狀態，請參閱[檢視 CodeDeploy 部署詳細資訊](deployments-view-details.md)。

# 建立 EC2/現場部署運算平台部署 (CLI)
<a name="deployments-create-cli"></a>

若要使用 AWS CLI 將修訂版部署到 EC2/現場部署運算平台：

1. 當您將執行個體準備完成以後，建立應用程式以及發布修訂版，然後請執行以下其中一項：
   + 如果您想要從 Amazon S3 儲存貯體部署修訂，請現在繼續執行步驟 2。
   + 如果您想要從 GitHub 儲存貯體部署修訂版，先完成 [將 CodeDeploy 應用程式連接至 GitHub 儲存庫](deployments-create-cli-github.md) 步驟，再繼續步驟二。

1. 呼叫 [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html) 命令，指定：
   + `--application-name`：應用程式名稱。若要檢視應用程式名稱清單，請呼叫 [list-applications](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-applications.html) 命令。
   + `--deployment-group-name`：Amazon EC2 部署群組名稱。若要檢視部署群組名稱的清單，請呼叫 [list-deployment-groups](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-groups.html) 命令。
   + `--revision`：要部署之修訂的相關資訊：

     對於存放在 Amazon S3 中的修訂：
     + `s3Location`：包含修訂的 Amazon S3 儲存貯體名稱。
     + `s3Location --> key`：上傳修訂的名稱。
     + `s3Location --> bundleType`：上傳修訂的檔案類型。
**注意**  
Windows Server 執行個體不支援 tar 和壓縮 tar 封存檔案格式 (.tar 和 .tar.gz)。
     + `s3Location --> version`：（選用） 修訂版的 Amazon S3 版本識別符。（如果未指定版本識別符，CodeDeploy 會使用最新版本。)
     + `s3Location --> eTag`：（選用） 修訂版的 ETag。（如果未指定 ETag，CodeDeploy 會略過物件驗證。)

     對於存儲在 GitHub 的修訂版：
     + `gitHubLocation --> repository`：指派給包含修訂的儲存庫的 GitHub 使用者或群組名稱，後面接著正斜線 (`/`)，後面接著儲存庫名稱。
     + `gitHubLocation --> commitId`：修訂的遞交 ID。
   + `--deployment-config-name`：（選用） 要使用的部署組態名稱。若要檢視部署組態清單，請呼叫 [list-deployment-configs](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-configs.html) 命令。（如果未指定，CodeDeploy 會使用特定的預設部署組態。)
   + `--ignore-application-stop-failures | --no-ignore-application-stop-failures`：（選用） 如果部署`BeforeInstall`生命週期事件失敗，您是否希望執行個體的`ApplicationStop`部署繼續部署生命週期事件。
   + `--description`：（選用） 部署的描述。
   + `--file-exists-behavior`：（選用） 在部署程序中，CodeDeploy 代理程式會從每個執行個體移除最新部署安裝的所有檔案。選擇當不屬於先前部署的檔案出現在目標部署位置時會發生什麼情況。
   + `--target-instances`：對於藍/綠部署，有關藍/綠部署中屬於替代環境的執行個體的資訊，包括一或多個 Amazon EC2 Auto Scaling 群組的名稱，或用於識別 Amazon EC2 執行個體的標籤篩選條件索引鍵、類型和值。

**注意**  
使用此語法作為**create-deployment**呼叫的一部分，直接在命令列上指定 Amazon S3 中修訂的相關資訊。(​`version` 和 `eTag` 是選擇性使用的)。  

```
--s3-location bucket=string,key=string,bundleType=tar|tgz|zip,version=string,eTag=string
```
使用此語法作為 **create-deployment** 呼叫的一部分，直接在命令列上指定 GitHub 中的修訂版資訊。  

```
--github-location repository=string,commitId=string
```
若要取得已推送修訂的相關資訊，請呼叫 [list-application-revisions](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-application-revisions.html) 命令。

如需追蹤部署的狀態，請參閱[檢視 CodeDeploy 部署詳細資訊](deployments-view-details.md)。

## create-deployment 命令參考
<a name="deployments-create-cli-reference"></a>

以下是命令的`create-deployment`命令結構和選項。如需詳細資訊，請參閱《 命令參考》中的 [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html) 參考。 *AWS CLI *

```
create-deployment
--application-name <value>
[--deployment-group-name <value>]
[--revision <value>]
[--deployment-config-name <value>]
[--description <value>]
[--ignore-application-stop-failures | --no-ignore-application-stop-failures]
[--target-instances <value>]
[--auto-rollback-configuration <value>]
[--update-outdated-instances-only | --no-update-outdated-instances-only]
[--file-exists-behavior <value>]
[--s3-location <value>]
[--github-location <value>]
[--cli-input-json <value>]
[--generate-cli-skeleton <value>]
```

# 將 CodeDeploy 應用程式連接至 GitHub 儲存庫
<a name="deployments-create-cli-github"></a>

首次使用 從 GitHub 儲存庫部署應用程式之前 AWS CLI，您必須先授予 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. 選擇 **Applications (應用程式)**。

1. 從 **Application (應用程式)** 中，選擇您要連結到您 GitHub 使用者帳戶的應用程式，並選擇 **Deploy application (部署應用程式)**。
**注意**  
您不是在建立部署。這是目前授予 CodeDeploy 許可來代表 GitHub 使用者帳戶與 GitHub 互動的唯一方法。

1. 接著，在 **Repository type (儲存庫類型)** 旁，選擇 **My application revision is stored in GitHub (我的應用程式修訂版存放在 GitHub)**。

1. 選擇**連線到 GitHub**。
**注意**  
如果您查看 **連接到不同的 GitHub 帳戶** 連結：  
您可能已經授權 CodeDeploy 代表應用程式的不同 GitHub 帳戶與 GitHub 互動。  
您可能已撤銷 CodeDeploy 代表登入的 GitHub 帳戶與 GitHub 互動的授權，適用於 CodeDeploy 中連結至 的所有應用程式。 GitHub   
如需詳細資訊，請參閱[在 CodeDeploy 中使用應用程式進行 GitHub 身分驗證](integrations-partners-github.md#behaviors-authentication)。

1. 如果您尚未登入GitHub，請依照 **登入** 頁面指示操作。

1. 在 **授權應用程式** 頁面上，請選擇 **授權應用程式**。

1. 現在 CodeDeploy 具有許可，請選擇**取消**，然後繼續 中的步驟[建立 EC2/現場部署運算平台部署 (CLI)](deployments-create-cli.md)。

# 透過 建立 Amazon ECS 藍/綠部署 CloudFormation
<a name="deployments-create-ecs-cfn"></a>

您可以使用 透過 CodeDeploy AWS CloudFormation 管理 Amazon ECS 藍/綠部署。您可以透過定義綠色和藍色資源，並指定要在 CloudFormation中使用的流量路由和穩定設定來產生部署。本主題涵蓋由 CodeDeploy 管理的 Amazon ECS 藍/綠部署與由 管理的部署之間的差異 CloudFormation。

如需使用 CloudFormation 管理 Amazon ECS 藍/綠部署step-by-step說明，請參閱*AWS CloudFormation 《 使用者指南*》中的[使用 CodeDeploy 自動化 ECS 藍/綠部署 AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html)。

**注意**  
在亞太區域 （大阪） 區域 CloudFormation 無法使用 管理 Amazon ECS 藍/綠部署。

## 透過 CodeDeploy 和 的 Amazon ECS 藍/綠部署之間的差異 CloudFormation
<a name="differences-ecs-bg-cfn"></a>

 CloudFormation 堆疊範本會建立 Amazon ECS 任務相關資源和基礎設施的模型，以及部署的組態選項。因此，標準 Amazon ECS 藍/綠部署與透過 建立的藍/綠部署之間存在差異 CloudFormation。

與標準 Amazon ECS 藍/綠部署不同，您不需要建立模型或手動建立下列項目：
+ 您不會透過指定可唯一代表您要部署之內容的名稱來建立 AWS CodeDeploy 應用程式。
+ 您不會建立 AWS CodeDeploy 部署群組。
+ 您未指定*應用程式規格檔案* (AppSpec 檔案）。通常使用 AppSpec 檔案管理的資訊，例如加權組態選項或生命週期事件，是由 `AWS::CodeDeploy::BlueGreen` 勾點進行管理。

 此表格摘要列出部署類型之間高階工作流程中的差異。


****  

| 函式 | 標準藍/綠部署 | 透過 的藍/綠部署 CloudFormation | 
| --- | --- | --- | 
| 指定 Amazon ECS 叢集、Amazon ECS 服務、Application Load Balancer 或 Network Load Balancer、生產接聽程式、測試接聽程式和兩個目標群組。 | 建立指定這些資源的 CodeDeploy 部署群組。 | 建立 CloudFormation 範本以建立這些資源的模型。 | 
| 指定要部署的變更。 | 建立 CodeDeploy 應用程式。 | 建立指定容器映像的 CloudFormation 範本。 | 
| 指定 Amazon ECS 任務定義、容器名稱和容器連接埠。 | 建立指定這些資源的 AppSpec 檔案。 | 建立 CloudFormation 範本以建立這些資源的模型。 | 
| 指定部署流量轉移選項和生命週期事件勾點。 | 建立指定這些選項的 AppSpec 檔案。 | 建立使用AWS::CodeDeploy::BlueGreen勾點參數來指定這些選項的 CloudFormation 範本。 | 
|  CloudWatch 警示。  |  建立觸發復原的 CloudWatch 警示。  |  在觸發回復的 CloudFormation 堆疊層級設定 CloudWatch 警示。  | 
| 轉返/重新部署。 | 指定轉返和重新部署選項。 | 取消 中的堆疊更新 CloudFormation。 | 

## 透過 監控 Amazon ECS 藍/綠部署 CloudFormation
<a name="monitoring-ecs-bg-cfn"></a>

您可以透過 CloudFormation 和 CodeDeploy 監控藍/綠部署。如需透過 監控的資訊 CloudFormation，請參閱*AWS CloudFormation 《 使用者指南*》中的[在 中監控藍/綠事件 CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green.html#blue-green-events)。

**在 CodeDeploy 中檢視藍/綠部署的部署狀態**

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

1. 在**部署**中，會顯示由 CloudFormation 堆疊更新觸發的部署。選擇部署以檢視 **Deployment history (部署歷程記錄)**。  
![\[顯示部署區段和部署歷程記錄的主控台螢幕擷取畫面。\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/images/cfn-cd-bg-deplhist.png)

1. 選擇部署以檢視流量轉移狀態。請注意，應用程式和部署群組並不會被建立。  
![\[主控台螢幕擷取畫面會顯示已完成部署狀態的部署詳細資訊。\]](http://docs.aws.amazon.com/zh_tw/codedeploy/latest/userguide/images/cfn-cd-bg-deplstatus.png)

1. 以下項目適用於復原或停用部署：
   + 成功部署會出現在 CodeDeploy 中，並顯示部署是由 啟動 CloudFormation。
   + 如果您想要停止並復原部署，則必須取消 中的堆疊更新 CloudFormation。

# 檢視 CodeDeploy 部署詳細資訊
<a name="deployments-view-details"></a>

您可以使用 CodeDeploy 主控台 AWS CLI、 或 CodeDeploy APIs 來檢視與 AWS 您的帳戶相關聯的部署詳細資訊。

**注意**  
您可以在下列位置檢視執行個體上的 EC2/現場部署日誌：  
Amazon Linux、RHEL 和 Ubuntu Server： `/opt/codedeploy-agent/deployment-root/deployment-logs/codedeploy-agent-deployments.log`
Windows Server：C：\$1ProgramData\$1Amazon\$1CodeDeploy<DEPLOYMENT-GROUP-ID><DEPLOYMENT-ID>\$1logs\$1scripts.log
如需詳細資訊，請參閱[分析日誌檔案以調查執行個體的部署失敗](troubleshooting-ec2-instances.md#troubleshooting-deploy-failures)。

**Topics**
+ [檢視部署詳細資訊 （主控台）](#deployments-view-details-console)
+ [檢視部署詳細資訊 (CLI)](#deployments-view-details-cli)

## 檢視部署詳細資訊 （主控台）
<a name="deployments-view-details-console"></a>

若要使用 CodeDeploy 主控台檢視部署詳細資訊：

1. 登入 AWS 管理主控台 ，並在 https：//[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. 若要查看單一部署的其他詳細資訊，請在 **Deployment history (部署歷程記錄)** 中選擇部署 ID，或選擇部署 ID 旁的按鈕，然後選擇 **View (檢視)**。

## 檢視部署詳細資訊 (CLI)
<a name="deployments-view-details-cli"></a>

若要使用 AWS CLI 來檢視部署詳細資訊，請呼叫 `get-deployment`命令或 `batch-get-deployments`命令。您可以呼叫 `list-deployments` 命令取得唯一部署 ID 清單，做為 `get-deployment` 命令和 `batch-get-deployments` 命令的輸入。

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

若要檢視多個部署的詳細資訊，請呼叫 [batch-get-deployments](https://docs.aws.amazon.com/cli/latest/reference/deploy/batch-get-deployments.html) 命令，指定多個唯一的部署識別符。若要取得部署 IDs，請呼叫 [list-deployments](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployments.html) 命令。

若要檢視部署 IDs 清單，請呼叫 [list-deployments](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployments.html) 命令，指定：
+ 與部署建立關聯的應用程式名稱。若要檢視應用程式名稱清單，請呼叫 [list-applications](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-applications.html) 命令。
+ 與部署建立關聯的部署群組名稱。若要檢視部署群組名稱的清單，請呼叫 [list-deployment-groups](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployment-groups.html) 命令。
+ 選擇性地，是否包含依其部署狀態的部署詳細資訊 (如果未指定，將會列出所有相符的部署，不論其部署狀態為何)。
+ 選擇性地，是否包含依其部署建立開始時間和 (或) 結束時間的部署詳細資訊 (如果未指定，將會列出所有相符的部署，不論其建立時間為何)。

# 檢視 CodeDeploy EC2/現場部署的日誌資料
<a name="deployments-view-logs"></a>

您可以透過設定 Amazon CloudWatch 代理程式在 CloudWatch 主控台中檢視彙總資料，或登入個別執行個體來檢閱日誌檔案，來檢視 CodeDeploy 部署建立的日誌資料。

**注意**  
 AWS Lambda 或 Amazon ECS 部署不支援日誌。它們只能針對 EC2/現場部署建立。

**Topics**
+ [在 Amazon CloudWatch 主控台中檢視日誌檔案資料](#deployments-view-logs-cloudwatch)
+ [檢視執行個體上的日誌檔案](#deployments-view-logs-instance)

## 在 Amazon CloudWatch 主控台中檢視日誌檔案資料
<a name="deployments-view-logs-cloudwatch"></a>

當 Amazon CloudWatch 代理程式安裝在執行個體上時，該執行個體的所有部署的部署資料都可以在 CloudWatch 主控台中檢視。為了簡化，我們建議您使用 CloudWatch 集中監控日誌檔案，而不是依執行個體檢視它們。如需詳細資訊，請參閱[將 CodeDeploy 代理程式日誌傳送至 CloudWatch](codedeploy-agent-operations-cloudwatch-agent.md)。

## 檢視執行個體上的日誌檔案
<a name="deployments-view-logs-instance"></a>

若要檢視個別執行個體的部署日誌資料，您可以登入執行個體，並瀏覽錯誤或其他部署事件的相關資訊。

**Topics**
+ [在 Amazon Linux、RHEL 和 Ubuntu Server 執行個體上檢視部署日誌檔案](#deployments-view-logs-instance-unix)
+ [在 Windows Server 執行個體上檢視部署日誌檔案](#deployments-view-logs-instance-windows)

### 在 Amazon Linux、RHEL 和 Ubuntu Server 執行個體上檢視部署日誌檔案
<a name="deployments-view-logs-instance-unix"></a>

在 Amazon Linux、RHEL 和 Ubuntu Server 執行個體上，部署日誌會存放在下列位置：

 `/opt/codedeploy-agent/deployment-root/deployment-logs/codedeploy-agent-deployments.log`

若要檢視或分析 Amazon Linux、RHEL 和 Ubuntu Server 執行個體上的部署日誌，請登入執行個體，然後輸入下列命令以開啟 CodeDeploy 代理程式日誌檔案：

```
less /var/log/aws/codedeploy-agent/codedeploy-agent.log
```

輸入下列命令，以瀏覽日誌檔案中的錯誤訊息：


| 命令 | 結果 | 
| --- | --- | 
| & ERROR  | 只在日誌檔案中顯示錯誤訊息。在 ERROR 文字前後使用單一空格。 | 
| / ERROR  | 搜尋下一個錯誤訊息。1  | 
| ? ERROR  | 搜尋先前的錯誤訊息。2 使用單字 前後的單一空格ERROR。 | 
| G | 移至日誌檔案結尾。 | 
| g | 移至日誌檔案開頭。 | 
| q | 結束日誌檔案。 | 
| h | 了解其他命令。 | 
|  1 輸入 後**/ ERROR **，輸入 **n**做為下一個錯誤訊息。輸入 **N** 表示前一個錯誤訊息。 2 輸入 後**? ERROR **，輸入 **n**表示下一個錯誤訊息，或輸入 **N**表示上一個錯誤訊息。  | 

您也可以輸入下列命令來開啟 CodeDeploy 指令碼日誌檔案：

```
less /opt/codedeploy-agent/deployment-root/deployment-group-ID/deployment-ID/logs/scripts.log
```

輸入下列命令，以瀏覽日誌檔案中的錯誤訊息：


| 命令 | 結果 | 
| --- | --- | 
| &stderr | 只在日誌檔案中顯示錯誤訊息。 | 
| /stderr | 搜尋下一個錯誤訊息。1 | 
| ?stderr | 搜尋先前的錯誤訊息。2 | 
| G | 移至日誌檔案結尾。 | 
| g | 移至日誌檔案開頭。 | 
| q | 結束日誌檔案。 | 
| h | 了解其他命令。 | 
|  1輸入 之後**/stderr**，輸入 **n**以轉寄下一個錯誤訊息。輸入 **N** 表示將前一個錯誤訊息往回。 2 輸入 後**?stderr**，**n**輸入 以向後輸入下一個錯誤訊息。輸入 **N** 表示將前一個錯誤訊息往前。  | 

### 在 Windows Server 執行個體上檢視部署日誌檔案
<a name="deployments-view-logs-instance-windows"></a>

**CodeDeploy 代理程式日誌檔案**：在 Windows Server 執行個體上，CodeDeploy 代理程式日誌檔案會存放在下列位置：

`C:\ProgramData\Amazon\CodeDeploy\log\codedeploy-agent-log.txt`

若要在 Windows Server 執行個體上檢視或分析 CodeDeploy 代理程式日誌檔案，請登入執行個體，然後輸入下列命令來開啟檔案：

```
notepad C:\ProgramData\Amazon\CodeDeploy\log\codedeploy-agent-log.txt
```

若要瀏覽日誌檔案中的錯誤訊息，請按 CTRL\$1F，並輸入 **ERROR [**，然後按 Enter 找到第一個錯誤。

**CodeDeploy 指令碼日誌檔案**：在 Windows Server 執行個體上，部署日誌會存放在下列位置：

`C:\ProgramData\Amazon\CodeDeploy\deployment-group-id\deployment-id\logs\scripts.log`

其中：
+ *deployment-group-id* 是 `examplebf3a9c7a-7c19-4657-8684-b0c68d0cd3c4` 這類字串
+ *deployment-id* 是 `d-12EXAMPLE` 這類識別符

輸入下列命令以開啟 CodeDeploy 指令碼日誌檔案：

```
notepad C:\ProgramData\Amazon\CodeDeploy\deployment-group-ID\deployment-ID\logs\scripts.log
```

若要瀏覽日誌檔案中的錯誤訊息，請按 CTRL\$1F，並輸入 **stderr**，然後按 Enter 找到第一個錯誤。

# 使用 CodeDeploy 停止部署
<a name="deployments-stop"></a>

您可以使用 CodeDeploy 主控台 AWS CLI、 或 CodeDeploy APIs 來停止與 AWS 您的帳戶相關聯的部署。

**警告**  
停止 EC2/現場部署可能會讓部署群組中的部分或全部執行個體處於不確定的部署狀態。如需詳細資訊，請參閱[已停止和失敗的部署](deployment-steps-server.md#deployment-stop-fail)。

**Topics**
+ [停止部署 (主控台)](#deployments-stop-console)
+ [停止部署 (CLI)](#deployments-stop-cli)

**注意**  
如果您的部署是透過藍/綠部署 CloudFormation，則無法在 CodeDeploy 主控台中執行此任務。前往 CloudFormation 主控台以執行此任務。

## 停止部署 (主控台)
<a name="deployments-stop-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. 選擇您想要停止的部署，執行下列其中一項：

   1. 選擇 **Stop deployment (停止部署)**，以停止部署而不轉返。

   1. 選擇 **Stop and roll back deployment (停止並轉返部署)**，以停止並轉返部署。

   如需詳細資訊，請參閱[使用 CodeDeploy 重新部署以及復原部署](deployments-rollback-and-redeploy.md)。
**注意**  
如果 **Stop deployment (停止部署)** 和 **Stop and roll back deployment (停止並轉返部署)** 無法使用，表示部署已經進行到無法停止的點。

## 停止部署 (CLI)
<a name="deployments-stop-cli"></a>

呼叫 [stop-deployment](https://docs.aws.amazon.com/cli/latest/reference/deploy/stop-deployment.html) 命令，指定部署 ID。若要檢視部署 IDs 清單，請呼叫 [list-deployments](https://docs.aws.amazon.com/cli/latest/reference/deploy/list-deployments.html) 命令。

# 使用 CodeDeploy 重新部署以及復原部署
<a name="deployments-rollback-and-redeploy"></a>

CodeDeploy 會將先前部署的應用程式修訂重新部署為新的部署，以復原部署。這些轉返的部署在技術上而言是具有新部署 ID 的新部署，而不是先前部署的還原版本。

您可以自動或手動轉返部署。

**Topics**
+ [自動轉返](#deployments-rollback-and-redeploy-automatic-rollbacks)
+ [手動轉返](#deployments-rollback-and-redeploy-manual-rollbacks)
+ [轉返和重新部署工作流程](#deployments-rollback-and-redeploy-workflow)
+ [具有現有內容的轉返行為](#deployments-rollback-and-redeploy-content-options)

## 自動轉返
<a name="deployments-rollback-and-redeploy-automatic-rollbacks"></a>

您可以設定部署群組，或設定部署在部署失敗或到達您指定的監控閾值時自動轉返。在此案例下，便會部署最後一個已知良好的應用程式修訂版本。當您建立應用程式或是建立或更新部署群組時，可以設定自動轉返。

當您建立新的部署時，您也可以選擇覆寫先前為部署群組指定的自動轉返組態。

**注意**  
您可以使用 Amazon Simple Notification Service 在部署自動復原時接收通知。如需相關資訊，請參閱[使用 Amazon SNS 事件通知監控部署](monitoring-sns-event-notifications.md)。

如需設定自動轉返的詳細資訊，請參閱[設定部署群組的進階選項](deployment-groups-configure-advanced-options.md)。

## 手動轉返
<a name="deployments-rollback-and-redeploy-manual-rollbacks"></a>

如果您尚未設定自動轉返，則可以建立使用任何先前部署應用程式修訂的新應用程式，並遵循重新部署修訂的步驟，以手動轉返部署。如果應用程式已進入不明狀態，則您可能會這麼做。您可以將應用程式重新部署已知工作中狀態，而不是花太多時間來故障診斷。如需詳細資訊，請參閱[使用 CodeDeploy 建立部署](deployments-create.md)。

**注意**  
如果您從部署群組中移除執行個體，CodeDeploy 不會解除安裝任何可能已安裝在該執行個體上的內容。

## 轉返和重新部署工作流程
<a name="deployments-rollback-and-redeploy-workflow"></a>

啟動自動轉返時，或手動啟動重新部署或手動轉返時，CodeDeploy 會先嘗試從每個參與的執行個體中移除上次成功安裝的所有檔案。CodeDeploy 透過檢查清除檔案來執行此操作：

 `/opt/codedeploy-agent/deployment-root/deployment-instructions/deployment-group-ID-cleanup` 檔案 （適用於 Amazon Linux、Ubuntu Server 和 RHEL 執行個體） 

`C:\ProgramData\Amazon\CodeDeploy\deployment-instructions\deployment-group-ID-cleanup` 檔案 （適用於 Windows Server 執行個體） 

如果存在，CodeDeploy 會使用清除檔案從執行個體中移除所有列出的檔案，然後再開始新的部署。

例如，前兩個文字檔案和兩個指令碼檔案已部署到執行 Windows Server 的 Amazon EC2 執行個體，而且指令碼在部署生命週期事件期間建立了另外兩個文字檔案：

```
c:\temp\a.txt (previously deployed by CodeDeploy)
c:\temp\b.txt (previously deployed by CodeDeploy)
c:\temp\c.bat (previously deployed by CodeDeploy)
c:\temp\d.bat (previously deployed by CodeDeploy)
c:\temp\e.txt (previously created by c.bat)
c:\temp\f.txt (previously created by d.bat)
```

清理檔案只會列出前兩個文字檔案和兩個指令碼檔案：

```
c:\temp\a.txt
c:\temp\b.txt 
c:\temp\c.bat 
c:\temp\d.bat
```

在新部署之前，CodeDeploy 只會移除前兩個文字檔案和兩個指令碼檔案，讓最後兩個文字檔案保持不變：

```
c:\temp\a.txt will be removed
c:\temp\b.txt will be removed
c:\temp\c.bat will be removed
c:\temp\d.bat will be removed
c:\temp\e.txt will remain
c:\temp\f.txt will remain
```

作為此程序的一部分，CodeDeploy 不會嘗試還原或以其他方式協調先前部署中任何指令碼所採取的任何動作，無論是手動或自動復原。例如，如果 `c.bat`和 `d.bat` 檔案包含邏輯，如果 `e.txt`和 `f.txt` 檔案已存在，則 `e.txt`和 的舊版本`f.txt`會在 CodeDeploy 執行`c.bat`時和後續部署`d.bat`中保持不變。您可以將邏輯新增至 `c.bat` 和 `d.bat` 一律檢查 `e.txt` 和 `f.txt` 的舊版本，並在建立新的版本之前予以刪除。

## 具有現有內容的轉返行為
<a name="deployments-rollback-and-redeploy-content-options"></a>

在部署程序中，CodeDeploy 代理程式會從每個執行個體移除最新部署所安裝的所有檔案。如果不屬於先前部署的檔案出現在目標部署位置，您可以選擇 CodeDeploy 在下一次部署期間如何處理它們：
+ 部署**失敗** — 報告錯誤，且部署狀態變更為失敗。
+ **覆寫內容** — 應用程式修訂版中的 檔案版本會取代執行個體上已存在的版本。
+ **保留內容** — 目標位置中的檔案會保留，而應用程式修訂版中的版本不會複製到執行個體。

您可以在建立部署時選擇此行為。如果在 主控台中建立部署，請參閱 [建立 EC2/現場部署運算平台部署 （主控台）](deployments-create-console.md)。如果使用 建立部署 AWS CLI，請參閱 [建立 EC2/現場部署運算平台部署 (CLI)](deployments-create-cli.md)。

您可以選擇保留您下一個部署想要含有的檔案，而不需要將這些檔案新增至應用程式修訂套件。例如，您將檔案直接上傳至部署所需的執行個體，但未新增至應用程式修訂套件。或者，如果您的應用程式已在生產環境中，但您想要第一次使用 CodeDeploy 來部署檔案，則可以將檔案上傳至執行個體。

如果發生因部署失敗而重新部署最新成功部署應用程式修訂的轉返，則會將該最後成功部署的內容處理選項套用至轉返部署。

不過，如果失敗的部署設定為覆寫，而不是保留檔案，則在轉返期間可能發生意外結果。具體而言，失敗的部署可能會移除您預期保留的檔案。轉返部署執行時，檔案不在執行個體上。

在下列範例中，有三種部署。在部署 3 期間再次部署應用程式修訂 1 時，任何在失敗的第二個部署期間覆寫 (刪除) 的檔案都無法再使用 (無法保留)：


****  

|  部署  |  應用程式修訂  |  內容覆寫選項  |  部署狀態  |  行為和結果  | 
| --- | --- | --- | --- | --- | 
|  部署 1  |  應用程式修訂 1  |  RETAIN (保留)  |  Succeeded  |  CodeDeploy 會偵測目標位置中先前部署未部署的檔案。這些檔案可能故意放在該處，而成為目前部署的一部分。它們會保留並記錄為目前部署套件的一部分。  | 
|  部署 2  |  應用程式修訂 2  |  OVERWRITE (覆寫)  |  失敗  |  在部署過程中，CodeDeploy 會刪除屬於先前成功部署一部分的所有檔案。這包含在部署 1 期間保留的檔案。 不過，部署因無關的原因而失敗。  | 
|  部署 3  |  應用程式修訂 1  |  RETAIN (保留)  |    | 由於已針對部署或部署群組啟用自動轉返，CodeDeploy 會部署最後一個已知良好的應用程式修訂版，即應用程式修訂版 1。不過，您想要保留在部署 1 中的檔案已在部署 2 失敗之前刪除，而且無法由 擷取 AWS CodeDeploy。您可以自行將它們新增至執行個體 (如果應用程式修訂 1 需要它們)，也可以建立新的應用程式修訂。 | 

# 在不同的 AWS 帳戶中部署應用程式
<a name="deployments-cross-account"></a>

組織通常有多個用於不同用途 AWS 的帳戶 （例如，一個用於系統管理任務，另一個用於開發、測試和生產任務，或與開發和測試環境相關聯的帳戶，以及另一個與生產環境相關聯的帳戶）。

雖然您可能會在不同帳戶中執行相關工作，但 CodeDeploy 部署群組及其部署的 Amazon EC2 執行個體會嚴格繫結至建立這些執行個體的帳戶。無法作的事如，新增在帳戶啟動的執行個體至其他帳戶的部署群組中。

假設您有兩個 AWS 帳戶：您的開發帳戶和您的生產帳戶。您主要在開發帳戶中工作，但您希望能夠在生產帳戶中啟動部署，同時不需要完整的登入資料確認，也不用登出開發帳戶和登入生產帳戶。

遵循跨帳戶組態步驟後，您可以啟動屬於您組織的另一個帳戶的部署，同時無需使用該帳戶的完整登入資料。您可以使用 AWS Security Token Service (AWS STS) 提供的功能，授予您暫時存取該帳戶。

## 步驟 1：在任一帳戶中建立 S3 儲存貯體
<a name="deployments-cross-account-1-create-s3-bucket"></a>

無論是開發帳戶或生產帳戶：
+ 如果您尚未這麼做，請建立 Amazon S3 儲存貯體，其中會存放生產帳戶的應用程式修訂。如需詳細資訊，請參閱[在 Amazon S3 中建立儲存貯](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html)體。您甚至可以讓兩個帳戶使用相同的儲存貯體以及應用程式修改版，部署相同檔案到您的生產環境，讓您測試和驗證開發帳戶。

## 步驟 2：將 Amazon S3 儲存貯體許可授予生產帳戶的 IAM 執行個體描述檔
<a name="deployments-cross-account-2-grant-bucket-permissions"></a>

如果您在步驟 1 中建立的 Amazon S3 儲存貯體位於生產帳戶中，則不需要此步驟。稍後您假設的角色可以存取此儲存貯體，因為它也在生產帳戶中了。

如果您在開發帳戶中建立 Amazon S3 儲存貯體，請執行下列動作：
+ 在生產帳戶中，建立 IAM 執行個體描述檔。如需相關資訊，請參閱[步驟 4：為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔](getting-started-create-iam-instance-profile.md)。
**注意**  
請記下此 IAM 執行個體描述檔的 ARN。您將需要新增它到您接下來建立的跨儲存貯體政策中。
+ 在開發帳戶中，將您在開發帳戶中建立的 Amazon S3 儲存貯體存取權授予您剛在生產帳戶中建立的 IAM 執行個體描述檔。如需詳細資訊，請參閱[範例 2：授予跨帳戶儲存貯體許可的儲存貯體擁有者](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)。

  在完成授予跨帳戶儲存貯體權限許可的過程中，請注意以下事項：
  + 在範例攻略中，帳戶 A 代表您的開發帳戶，帳戶 B 代表您的生產帳戶。
  + 當您 [執行帳戶 A (開發帳戶) 任務](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html#access-policies-walkthrough-cross-account-permissions-acctA-tasks)、修改以下儲存貯體政策以授與跨帳戶許可，而不使用範例政策，請參閱逐步解說。

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

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "Cross-account permissions",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::111122223333:role/role-name"
                },
                "Action": [
                    "s3:Get*",
                    "s3:List*"
                ],
                "Resource": [
                    "arn:aws:s3:::bucket-name/*"
                ]
            }
        ]
    }
    ```

------

    *account-id* 代表您剛建立 IAM 執行個體描述檔之生產帳戶的帳號。

    *role-name* 代表您剛建立的 IAM 執行個體描述檔名稱。

    *bucket-name* 表示您在步驟一中建立的儲存貯體名稱。請確認在您的儲存貯體名稱後含有的 `/*`，提供對儲存貯體內每個文件的存取權限。

## 步驟 3：在生產帳戶中建立資源和跨帳戶角色
<a name="deployments-cross-account-3-create-resources-and-role"></a>

在您的生產帳戶中：
+ 使用本指南中的指示建立 CodeDeploy 資源：應用程式、部署群組、部署組態、Amazon EC2 執行個體、Amazon EC2 執行個體描述檔、服務角色等。
+ 建立開發帳戶中的使用者可擔任的額外角色，即跨帳戶 IAM 角色，以在此生產帳戶中執行 CodeDeploy 操作。

  使用[演練：使用 IAM 角色將存取權委派給不同 AWS 帳戶](https://docs.aws.amazon.com/IAM/latest/UserGuide/walkthru_cross-account-with-roles.html)作為指南，以協助您建立跨帳戶角色。您至少應將下列兩個 AWS 提供的政策連接至角色，而不是將逐步解說中的範例許可新增至您的政策文件：
  + `AmazonS3FullAccess`：僅在 S3 儲存貯體位於開發帳戶時才需要。為擔任的生產帳戶角色提供開發帳戶中 Amazon S3 服務和資源的完整存取權，其中存放修訂。
  + `AWSCodeDeployDeployerAccess`：讓使用者能夠註冊和部署修訂。

  如果您想要建立以及管理部署群組以及不只是初始化部署，新增 `AWSCodeDeployFullAccess` 原則而不是 `AWSCodeDeployDeployerAccess` 原則。如需使用 IAM 受管政策授予 CodeDeploy 任務許可的詳細資訊，請參閱 [AWS CodeDeploy 的受管 （預先定義） 政策](managed-policies.md)。

  您可以附加原則，如果您想要在其他 AWS 服務執行工作，使用此跨帳戶角色。

**重要**  
當您建立跨帳戶 IAM 角色時，請記下取得生產帳戶存取權所需的詳細資訊。  
若要使用 AWS 管理主控台 切換角色，您需要提供下列其中一項：  
URL 用於啟動生產帳戶與假設角色認證。您將在 **檢視** 頁面上找到URL，其顯示在跨帳戶角色建立程序的末端。
跨帳戶角色的名稱及帳戶 ID 數或別名都可以。
若要使用 AWS CLI 切換角色，您需要提供下列項目：  
跨帳戶角色的 ARN，您將假設。

## 步驟 4：將應用程式修訂版上傳至 Amazon S3 儲存貯體
<a name="deployments-cross-account-4-upload-application-revision"></a>

在您建立 Amazon S3 儲存貯體的帳戶中：
+ 將您的應用程式修訂版上傳至 Amazon S3 儲存貯體。如需相關資訊，請參閱[將 CodeDeploy 的修訂推送至 Amazon S3 （僅限 EC2/內部部署部署）](application-revisions-push.md)。

## 步驟 5：擔任跨帳戶角色並部署應用程式
<a name="deployments-cross-account-5-assume-role-and-deploy"></a>

在開發帳戶中，您可以使用 AWS CLI 或 AWS 管理主控台 來擔任跨帳戶角色，並在生產帳戶中啟動部署。

如需如何使用 AWS 管理主控台 切換角色和啟動部署的指示，請參閱[切換到角色 (AWS 管理主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) 和 [建立 EC2/現場部署運算平台部署 （主控台）](deployments-create-console.md)。

如需如何使用 AWS CLI 擔任跨帳戶角色並啟動部署的指示，請參閱[切換到 IAM 角色 (AWS Command Line Interface)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-cli.html) 和 [建立 EC2/現場部署運算平台部署 (CLI)](deployments-create-cli.md)。

如需透過 擔任角色的詳細資訊 AWS STS，請參閱[AWS Security Token Service 《 使用者指南](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html)》中的 [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 和《 [AWS CLI 命令參考](https://docs.aws.amazon.com/cli/latest/reference/)》中的 [assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html)。

**相關主題：**
+ [CodeDeploy：從開發帳戶部署到生產帳戶](https://aws.amazon.com/blogs/devops/aws-codedeploy-deploying-from-a-development-account-to-a-production-account/)

# 使用 CodeDeploy 代理程式來驗證本機電腦上的部署套件
<a name="deployments-local"></a>

您可以使用 CodeDeploy 代理程式，在您登入的執行個體上部署內容。這可讓您測試您要在部署中使用的應用程式規格檔案 (AppSpec 檔案） 的完整性，以及您打算部署的內容。

您不需要建立應用程式以及部署群組。如果您想要部署儲存在本機執行個體上的內容，您甚至不需要 AWS 帳戶。對於最簡單的測試，您可以在包含 AppSpec 檔案和要部署內容的目錄中執行 **codedeploy-local**命令，而無需指定任何選項。工具中有其他測試案例的選項。

您可以在本機上驗證部屬包裹。
+ 測試應用程式修訂版的完整性。
+ 測試 AppSpec 檔案的內容。
+ 第一次使用您現有的應用程式碼試用 CodeDeploy。
+ 當您已經登入執行個體，快速部署內容。

您可以使用存放在本機執行個體或支援的遠端儲存庫類型 (Amazon S3 儲存貯體或公有 GitHub 儲存庫） 中的部署內容。

## 先決條件
<a name="deployments-local-prerequisites"></a>

您開始就地部署之前，請完成下列步驟：
+ 建立或使用 CodeDeploy 代理程式支援的執行個體類型。如需相關資訊，請參閱[CodeDeploy 代理程式支援的作業系統](codedeploy-agent.md#codedeploy-agent-supported-operating-systems)。
+ 安裝 CodeDeploy 代理程式的 1.0.1.1352 版或更新版本。如需相關資訊，請參閱[安裝 CodeDeploy 代理程式](codedeploy-agent-operations-install.md)。
+ 如果您要從 Amazon S3 儲存貯體或 GitHub 儲存庫部署內容，請佈建使用者以搭配 CodeDeploy 使用。如需相關資訊，請參閱[步驟 1：設定](getting-started-setting-up.md)。
+ 如果您要從 Amazon S3 儲存貯體部署應用程式修訂版，請在您工作所在的區域中建立 Amazon S3 儲存貯體，並將 Amazon S3 儲存貯體政策套用至儲存貯體。此政策會將下載應用程式修訂所需的許可授予您的執行個體。

  例如，下列 Amazon S3 儲存貯體政策允許任何連接 IAM 執行個體描述檔的 Amazon EC2 執行個體從名為 的 Amazon S3 儲存貯體中的任何位置`arn:aws:iam::444455556666:role/CodeDeployDemo`下載`amzn-s3-demo-bucket`：

  ```
  {
      "Statement": [
          {
              "Action": [
                  "s3:Get*",
                  "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::444455556666:role/CodeDeployDemo"
                  ]
              }
          }
      ]
  }
  ```

  下列 Amazon S3 儲存貯體政策允許具有包含 ARN 之相關聯 IAM 使用者的任何現場部署執行個體從名為 的 Amazon S3 儲存貯體中的任何位置`arn:aws:iam::444455556666:user/CodeDeployUser`下載`amzn-s3-demo-bucket`：

  ```
  {
      "Statement": [
          {
              "Action": [
                  "s3:Get*",
                  "s3:List*"
              ],
              "Effect": "Allow",
              "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
              "Principal": {
                  "AWS": [
                      "arn:aws:iam::444455556666:user/CodeDeployUser"
                  ]
              }
          }
      ]
  }
  ```

  如需有關如何產生和連接 Amazon S3 儲存貯體政策的資訊，請參閱[儲存貯體政策範例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html)。
+ 如果您要從 Amazon S3 儲存貯體或 GitHub 儲存庫部署應用程式修訂版，請設定 IAM 執行個體描述檔並將其連接至執行個體。如需詳細資訊，請參閱 [步驟 4：為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔](getting-started-create-iam-instance-profile.md)、[為 CodeDeploy (AWS CLI 或 Amazon EC2 主控台） 建立 Amazon EC2 執行個體](instances-ec2-create.md) 及 [為 CodeDeploy 建立 Amazon EC2 執行個體 (CloudFormation 範本）](instances-ec2-create-cloudformation-template.md)。
+ 如果您從 GitHub 部署您的內容，請建立一個 GitHub 帳戶以及公開的儲存庫。若要建立 GitHub 帳戶，請參閱[​加入GitHub](https://github.com/join)。若要建立 GitHub 儲存庫，請參閱[建立儲存庫](https://help.github.com/articles/create-a-repo/)。
**注意**  
 目前不支援私人儲存庫。如果您的內容儲存於私人 GitHub 儲存庫中，您可以將其下載到執行個體並使用 `--bundle-location` 選項指定路徑位置。
+ 準備您要部署到執行個體的內容 （包括 AppSpec 檔案），並將其放置在本機執行個體、Amazon S3 儲存貯體或 GitHub 儲存庫中。如需相關資訊，請參閱[使用 CodeDeploy 的應用程式修訂](application-revisions.md)。
+ 如果您想要將預設值以外的值用於其他組態選項，請建立組態檔案並將其放置在執行個體 (`/etc/codedeploy-agent/conf/codedeployagent.yml`適用於 Amazon Linux、RHEL 或 Ubuntu Server 執行個體，或`C:\ProgramData\Amazon\CodeDeploy\conf.yml`適用於 Windows Server 執行個體）。如需相關資訊，請參閱[CodeDeploy 代理程式組態參考](reference-agent-configuration.md)。
**注意**  
如果您在 Amazon Linux、RHEL 或 Ubuntu Server 執行個體上使用組態檔案，您必須：  
使用 `:root_dir:`​ 和 `:log_dir:` ​變數指定部署根以及紀錄目錄資料夾預設以外的地點。
使用 `sudo`執行 CodeDeploy 代理程式命令。

## 建立本機部署
<a name="deployments-local-deploy"></a>

在您要建立本機部署的執行個體上，開啟終端機工作階段 (Amazon Linux、RHEL 或 Ubuntu Server 執行個體） 或命令提示字元 (Windows Server) 來執行工具命令。

**注意**  
 **codedeploy-local** 命令安裝於以下位置：  
 在 Amazon Linux、RHEL 或 Ubuntu Server 上：`/opt/codedeploy-agent/bin`。
 在 Windows Server 上：`C:\ProgramData\Amazon\CodeDeploy\bin`。

**基本命令語法**

```
codedeploy-local [options]
```

**概要**

```
codedeploy-local
[--bundle-location <value>]
[--type <value>]
[--file-exists-behavior <value>]
[--deployment-group <value>]
[--events <comma-separated values>]
[--agent-configuration-file <value>]
[--appspec-filename <value>]
```

**選項**

** - l **，** - 配套位置**

應用程式修訂版配套位置。如果您不指定一個位置，則該工具以您目前作業的預設使用目錄。如果您指定一個值給 `--bundle-location`，則您必須也指定一個值給 `--type`。

配套位置格式化範例：
+ 本機 Amazon Linux、RHEL 或 Ubuntu Server 執行個體： `/path/to/local/bundle.tgz`
+ 本機 Windows Server 執行個體： `C:/path/to/local/bundle`
+ Amazon S3 儲存貯體： `s3://amzn-s3-demo-bucket/bundle.tar`
+ GitHub 儲存庫：`https://github.com/account-name/repository-name/`

** - t **、** - 類型**

應用程式修訂版配套格式。支援的類型包括 `tgz`、​`tar`、​`zip` 和​`directory`。如果您未指定一個形式，工具會使用 `directory` 作為預設。如果您指定一個值給 `--type`，則您必須也指定一個值給 `--bundle-location`。

** - b **、** - 檔案存在 - 行為**

指出檔案如何處理已經存在部署標的位置裡，但不是成功部署上一步的一部分。選項包含不允許、覆寫、保留。如需詳細資訊，請參閱 *[AWS CodeDeploy API 參考](https://docs.aws.amazon.com/codedeploy/latest/APIReference/)*中的 [fileExistsBehavior](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeployment.html#CodeDeploy-CreateDeployment-request-fileExistsBehavior)。

** -g​**、**- 部署群組​**

目標位置的資料夾路徑為待部署的內容。如果您不指定資料夾，該工具會在您的部署根目錄裡建立一個 *​default-local-deployment-group*。​ 針對每一個您建立的區域部署，該工具會在子目錄裡建立名稱如 *d-98761234-local​* 的資料夾。

**​ -e**、** - 事件​**

您想要依序執行的一組覆寫生命週期事件關聯，而不是您在 AppSpec 檔案中列出的事件。多個關聯可以被指定，以逗號分隔。您可以使用這個選項，如果：
+ 您想要執行一組不同的事件，而不必更新 AppSpec 檔案。
+ 您想要執行單一事件掛鉤，做為 AppSpec 檔案中內容的例外狀況，例如 `ApplicationStop`。

如果您不指定 **DownloadBundle​** 和覆寫清單中的**安裝** 事件，他們將在您指定所有事件關聯前執行。如果您將 **DownloadBundle** 和 **Install** 包含在`--events`選項清單中，則它們前面必須只有通常在 CodeDeploy 部署中執行的事件。如需相關資訊，請參閱[AppSpec 'hooks' 區段](reference-appspec-file-structure-hooks.md)。

**-c​**、** - 代理程式組態檔案​**

如果您將它存放至預設位置以外的地方，本機將使用於部署的設定檔案。設定檔案指定替代到其他預設值以及部署表現方式。

根據預設，組態檔案存放在 `/etc/codedeploy-agent/conf/codedeployagent.yml`(Amazon Linux、RHEL 或 Ubuntu Server 執行個體） 或 `C:/ProgramData/Amazon/CodeDeploy/conf.yml`(Windows Server) 中。如需詳細資訊，請參閱[CodeDeploy 代理程式組態參考](reference-agent-configuration.md)。

**-A**、**--appspec-filename**

AppSpec 檔案的名稱。對於本機部署，接受的值為 `appspec.yml`和 `appspec.yaml`。根據預設，AppSpec 檔案稱為 `appspec.yml`。

** -h​**、** -求助​**

顯示協助內容的摘要。

**-v​**、** - ​版本**

顯示工具版本編號。

## 範例
<a name="deployments-local-examples"></a>

以下是有效命令格式的範例。

```
codedeploy-local
```

```
codedeploy-local --bundle-location /path/to/local/bundle/directory
```

```
codedeploy-local --bundle-location C:/path/to/local/bundle.zip --type zip --deployment-group my-deployment-group
```

```
codedeploy-local --bundle-location /path/to/local/directory --type directory --deployment-group my-deployment-group
```

從 Amazon S3 部署套件：

```
codedeploy-local --bundle-location s3://amzn-s3-demo-bucket/bundle.tgz --type tgz
```

```
codedeploy-local --bundle-location s3://amzn-s3-demo-bucket/bundle.zip?versionId=1234&etag=47e8 --type zip --deployment-group my-deployment-group
```

從公有 GitHub 儲存庫部署一個配套：

```
codedeploy-local --bundle-location https://github.com/awslabs/aws-codedeploy-sample-tomcat --type zip
```

```
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/master --type zip
```

```
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/HEAD --type zip
```

```
codedeploy-local --bundle-location https://api.github.com/repos/awslabs/aws-codedeploy-sample-tomcat/zipball/1a2b3c4d --type zip
```

部署一個配套指定多個生命週期事件：

```
codedeploy-local --bundle-location /path/to/local/bundle.tar --type tar --application-folder my-deployment --events DownloadBundle,Install,ApplicationStart,HealthCheck
```

使用 ApplicationStop 生命週期事件停止先前的部署應用程式。

```
codedeploy-local --bundle-location /path/to/local/bundle.tgz --type tgz --deployment-group --events ApplicationStop
```

一個指定部署群組 ID 進行部署：

```
codedeploy-local --bundle-location C:/path/to/local/bundle/directory --deployment-group 1234abcd-5dd1-4774-89c6-30b107ac5dca
```

```
codedeploy-local --bundle-location C:/path/to/local/bundle.zip --type zip --deployment-group 1234abcd-5dd1-4774-89c6-30b107ac5dca
```