

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

# 一般故障診斷問題
<a name="troubleshooting-general"></a>

**Topics**
+ [一般故障診斷檢查清單](#troubleshooting-checklist)
+ [CodeDeploy 部署資源僅在某些 AWS 區域中支援](#troubleshooting-supported-regions)
+ [本指南中的程序與 CodeDeploy 主控台不相符](#troubleshooting-old-console)
+ [無法使用必要的 IAM 角色](#troubleshooting-iam-cloudformation)
+ [使用某些文字編輯器來建立 AppSpec 檔案和 shell 指令碼會導致部署失敗](#troubleshooting-text-editors)
+ [使用 macOS 的 Finder 套用應用程式修訂可能導致失敗](#troubleshooting-bundle-with-finder)

## 一般故障診斷檢查清單
<a name="troubleshooting-checklist"></a>

您可以使用以下檢查清單來排除故障的部署。

1. 請參閱 [檢視 CodeDeploy 部署詳細資訊](deployments-view-details.md) 和 [使用 CodeDeploy 檢視執行個體詳細資訊](instances-view-details.md) 以判斷部署失敗的原因。如果您無法判斷原因，請檢閱此檢查清單中的項目。

1. 請檢查執行個體的設定是否正確：
   + 是否使用指定的 EC2 金鑰對啟動執行個體？ 如需詳細資訊，請參閱《Amazon [EC2 使用者指南》中的 EC2 金鑰對](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EC2-key-pairs.html)。 *Amazon EC2 *
   + 是否已將正確的 IAM 執行個體描述檔連接至執行個體？ 如需詳細資訊，請參閱[設定 Amazon EC2 執行個體以使用 CodeDeploy](instances-ec2-configure.md)及[步驟 4：為您的 Amazon EC2 執行個體建立 IAM 執行個體描述檔](getting-started-create-iam-instance-profile.md)。
   + 該執行個體是否有加上標籤？ 如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》[中的在主控台中使用標籤](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html#Using_Tags_Console)。
   + CodeDeploy 代理程式是否已在執行個體上安裝、更新和執行？ 如需詳細資訊，請參閱[管理 CodeDeploy 代理程式操作](codedeploy-agent-operations.md)。若要檢查已安裝的代理程式版本，請參閱 [判斷 CodeDeploy 代理程式的版本](codedeploy-agent-operations-version.md)。

1. 檢查應用程式和部署群組設定：
   + 若要查看您的應用程式設定的詳細資訊，請參閱 [使用 CodeDeploy 檢視應用程式詳細資訊](applications-view-details.md)。
   + 若要查看您的部署群組設定的詳細資訊，請參閱[使用 CodeDeploy 檢視部署群組詳細資訊](deployment-groups-view-details.md)。

1. 確認是否已正確設定應用程式修訂版：
   + 檢查 AppSpec 檔案的格式。如需詳細資訊，請參閱[將應用程式規格檔案新增至 CodeDeploy 的修訂版](application-revisions-appspec-file.md)及[CodeDeploy AppSpec 檔案參考](reference-appspec-file.md)。
   + 檢查您的 Amazon S3 儲存貯體或 GitHub 儲存庫，確認您的應用程式修訂版位於預期的位置。
   + 檢閱 CodeDeploy 應用程式修訂版的詳細資訊，以確保其已正確註冊。如需相關資訊，請參閱[使用 CodeDeploy 檢視應用程式修訂詳細資訊](application-revisions-view-details.md)。
   + 如果您是從 Amazon S3 部署，請檢查您的 Amazon S3 儲存貯體，以確認已授予 CodeDeploy 下載應用程式修訂版的許可。如需儲存貯體政策的資訊，請參閱 [部署先決條件](deployments-create-prerequisites.md)。
   + 如果您是從 GitHub 部署，請檢查您的 GitHub 儲存庫，以確認 CodeDeploy 已獲得下載應用程式修訂版的許可。如需詳細資訊，請參閱[使用 CodeDeploy 建立部署](deployments-create.md)及[在 CodeDeploy 中使用應用程式進行 GitHub 身分驗證](integrations-partners-github.md#behaviors-authentication)。

1. 檢查服務角色的設定是否正確。如需相關資訊，請參閱[步驟 2：建立 CodeDeploy 的服務角色](getting-started-create-service-role.md)。

1. 確認您依照中 [CodeDeploy 入門](getting-started-codedeploy.md) 的步驟執行：
   + 已佈建具有適當許可的使用者。
   + 選擇安裝或升級，並設定 AWS CLI。
   + 建立 IAM 執行個體描述檔和服務角色。

   如需詳細資訊，請參閱[的身分和存取管理 AWS CodeDeploy](security-iam.md)。

1. 確認您使用的是 1 AWS CLI .6.1 版或更新版本。若要檢查安裝的版本，請呼叫 **aws --version**。

如果您仍然無法排除故障的部署，請檢閱本主題中的其他問題。

## CodeDeploy 部署資源僅在某些 AWS 區域中支援
<a name="troubleshooting-supported-regions"></a>

如果您看不到或無法存取來自 或 AWS CLI CodeDeploy 主控台的應用程式、部署群組、執行個體或其他部署資源，請確定您正在參考 區域[和端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#codedeploy_region)中 AWS 列出的其中一個區域*AWS 一般參考*。

在 CodeDeploy 部署中使用的 EC2 執行個體和 Amazon EC2 Auto Scaling 群組必須在其中一個 AWS 區域中啟動和建立。

如果您使用的是 AWS CLI，請從 執行 **aws configure**命令 AWS CLI。然後，您可以檢視和設定預設 AWS 區域。

如果您使用的是 CodeDeploy 主控台，請在導覽列上，從區域選擇器中選擇其中一個支援 AWS 的區域。

**重要**  
若要在中國 （北京） 區域或中國 （寧夏） 區域使用 服務，您必須擁有這些區域的 帳戶和登入資料。其他 AWS 區域的帳戶和登入資料不適用於北京和寧夏區域，反之亦然。  
此版本的 CodeDeploy *使用者指南中不包含有關中國區域的一些資源的資訊，例如 CodeDeploy Resource Kit 儲存貯體名稱和 CodeDeploy * CodeDeploy 代理程式安裝程序。  
如需詳細資訊：  
中國 （北京） 區域的 [CodeDeploy](http://docs.amazonaws.cn/en_us/aws/latest/userguide/codedeploy.html) 入門 *[AWS](http://docs.amazonaws.cn/en_us/aws/latest/userguide/introduction.html) *
*中國區域的 CodeDeploy 使用者指南 *([英文版本](http://docs.amazonaws.cn/en_us/codedeploy/latest/userguide/welcome.html) \$1 [中文版本](http://docs.amazonaws.cn/codedeploy/latest/userguide/welcome.html))

## 本指南中的程序與 CodeDeploy 主控台不相符
<a name="troubleshooting-old-console"></a>

 本指南中的程序反映新的主控台設計。如果您正在使用較舊版本的主控台，本指南中的許多概念和基本程序仍適用 。若要存取新主控台的說明，請選擇資訊圖示。

## 無法使用必要的 IAM 角色
<a name="troubleshooting-iam-cloudformation"></a>

如果您依賴作為 AWS CloudFormation 堆疊的一部分建立的 IAM 執行個體描述檔或服務角色，如果您刪除堆疊，則所有 IAM 角色也會刪除。這可能是為什麼 IAM 角色不再顯示在 IAM 主控台中，且 CodeDeploy 不再如預期般運作。若要修正此問題，您必須手動重新建立已刪除的 IAM 角色。

## 使用某些文字編輯器來建立 AppSpec 檔案和 shell 指令碼會導致部署失敗
<a name="troubleshooting-text-editors"></a>

有些文字編輯器將引進不符合、非列印字元到檔案裡。如果您使用文字編輯器來建立或修改 AppSpec 檔案或 Shell 指令碼檔案，以在 Amazon Linux、Ubuntu Server 或 RHEL 執行個體上執行，則依賴這些檔案的任何部署都可能會失敗。當 CodeDeploy 在部署期間使用這些檔案時，這些字元的存在可能會導致hard-to-troubleshoot的 AppSpec 檔案驗證失敗和指令碼執行失敗。

在 CodeDeploy 主控台中，在部署的事件詳細資訊頁面上，選擇**檢視日誌**。（或者，您可以使用 AWS CLI 呼叫 [get-deployment-instance](https://docs.aws.amazon.com/cli/latest/reference/deploy/get-deployment-instance.html) 命令。) 尋找錯誤，例如：`invalid character`、`command not found`，或 `file not found`。

若要解決此問題，我們有以下建議：
+ 請勿使用會在您的 AppSpec 檔案和 shell 指令碼檔案中加入非列印字元的文字編輯器，例如換行符號 (`^M` 字元)。
+ 使用文字編輯器顯示非列印字元，例如 AppSpec 檔案和 shell 指令碼檔案中的換行符號在，因此您可以尋找和移除任何可能加入非列印字元。如需這些類型文字編輯器的範例，請至網際網路搜尋顯示換行符號的文字編輯器。
+ 使用在 Amazon Linux、Ubuntu Server 或 RHEL 執行個體上執行的文字編輯器，建立在 Amazon Linux、Ubuntu Server 或 RHEL 執行個體上執行的 shell 指令碼檔案。如需這些類型文字編輯器的範例，請至網際網路搜尋「Linux shell 指令碼編輯器」。
+ 如果您必須使用 Windows 或 macOS 中的文字編輯器來建立 shell 指令碼檔案以在 Amazon Linux、Ubuntu Server 或 RHEL 執行個體上執行，請使用程式或公用程式，將 Windows 或 macOS 格式的文字轉換為 Unix 格式。如需這些程式和公用程式的範例，請至網際網路搜尋「DOS 轉換 UNIX」或「Mac 轉換 UNIX」。請務必在目標作業系統上測試轉換過的 shell 指令碼檔案。

## 使用 macOS 的 Finder 套用應用程式修訂可能導致失敗
<a name="troubleshooting-bundle-with-finder"></a>

如果您在 Mac 上使用 Finder 圖形使用者介面 (GUI) 應用程式將 AppSpec 檔案和相關檔案和指令碼綁定 (zip) 到應用程式修訂版封存檔 (.zip) 檔案中，部署可能會失敗。這是因為 Finder 在 .zip 檔案中建立中繼`__MACOSX`資料夾，並將元件檔案放入其中。CodeDeploy 找不到元件檔案，因此部署失敗。

若要解決此問題，建議您使用 AWS CLI 呼叫 [push](https://docs.aws.amazon.com/cli/latest/reference/deploy/push.html) 命令，將元件檔案壓縮為預期的結構。或者，您可以使用 GUI 的終端機壓縮元件檔案。終端機不會建立中繼 `__MACOSX` 資料夾。