

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

# 對 Elastic Beanstalk 環境進行故障診斷
<a name="troubleshooting"></a>

本章提供對 Elastic Beanstalk 環境進行故障診斷的指引。其包括以下內容：
+  AWS Systems Manager 簡介，包括執行預先定義 Elastic Beanstalk 執行手冊的程序，以輸出故障診斷步驟和建議。
+ 環境狀態降低時要使用之動作和資源的一般指引。
+ 依類別整理的特定疑難排解秘訣。

**如果您環境的運作狀態變更為紅色**，建議您先使用包含預先定義 Runbook AWS Systems Manager 的工具來疑難排解 Elastic Beanstalk。如需詳細資訊，請參閱 [ 使用 Systems Manager 工具](#troubleshooting-systems-manager)。

**試用 Amazon Q Developer CLI 進行 AI 輔助故障診斷**  
 Amazon Q Developer CLI 可協助您快速疑難排解環境問題。Q CLI 透過檢查環境狀態、檢閱事件、分析日誌和詢問釐清問題來提供解決方案。如需詳細資訊和詳細的逐步解說，請參閱 AWS 部落格中的[使用 Amazon Q Developer CLI 疑難排解 Elastic Beanstalk 環境](https://aws.amazon.com/blogs/devops/troubleshooting-elastic-beanstalk-environments-with-amazon-q-developer-cli/)。

**Topics**
+ [使用 AI 驅動的環境分析](#troubleshooting-ai-analysis)
+ [使用 AWS Systems Manager Elastic Beanstalk Runbook](#troubleshooting-systems-manager)
+ [疑難排解 Elastic Beanstalk 環境的一般指引](#troubleshooting-general)
+ [使用環境變數存取秘密和參數的環境](#troubleshooting-secrets-env-variables)
+ [建立環境並啟動執行個體](#troubleshooting-envcreate)
+ [部署](#troubleshooting-deployments)
+ [運作狀態](#troubleshooting-health)
+ [具有雙堆疊設定負載平衡器的環境](#troubleshooting-dual-stack-load-balancer)
+ [Configuration](#troubleshooting-configuration)
+ [Docker 容器故障診斷](#troubleshooting-docker)
+ [常見問答集](#troubleshooting-faq)
+ [常見錯誤](#common-errors)
+ [部署錯誤](#python-common-troubleshooting)

## 使用 AI 驅動的環境分析
<a name="troubleshooting-ai-analysis"></a>

Elastic Beanstalk 提供 AI 支援的分析，以協助識別根本原因，並建議環境運作狀態問題的解決方案。您可以透過主控台的 **AI 分析**按鈕、透過 使用 Elastic Beanstalk API AWS CLI，或使用 EB CLI **eb logs --analyze** 執行，來存取此功能。分析會檢查您環境的日誌、事件和執行個體運作狀態，以識別關鍵問題並提供step-by-step疑難排解建議。

如需詳細資訊，請參閱[AI 驅動的環境分析](health-ai-analysis.md)。

## 使用 AWS Systems Manager Elastic Beanstalk Runbook
<a name="troubleshooting-systems-manager"></a>

可以使用 Systems Manager 對 Elastic Beanstalk 環境進行故障診斷。為了協助您快速開始使用，Systems Manager 為 Elastic Beanstalk 提供預先定義的自動化執行手冊。自動化執行手冊是一種 Systems Manager 文件類型，它定義要對環境的執行個體和其他 AWS 資源執行的操作。

文件 `AWSSupport-TroubleshootElasticBeanstalk` 是一個自動化執行手冊，旨在幫助識別可能讓 Elastic Beanstalk 環境降級的許多常見問題。為此，它會檢查環境的元件，包括下列項目：EC2 執行個體、VPC、 CloudFormation 堆疊、負載平衡器、Auto Scaling 群組，以及與安全群組規則、路由表和 ACL 相關聯的網路組態。

它也提供從您的環境中將綁定的日誌檔案上傳至 AWS Support 的選項。

如需詳細資訊，請參閱《AWS Systems Manager Automation 執行手冊參考》中的 [https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshoot-elastic-beanstalk.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshoot-elastic-beanstalk.html)。**

**使用 Systems Manager 執行 `AWSSupport-TroubleshootElasticBeanstalk` 執行手冊**
**注意**  
在 Elastic Beanstalk 環境所在的相同 AWS 區域 中執行此程序。

1. 開啟 [AWS Systems Manager](https://console.aws.amazon.com/systems-manager/home) 主控台。

1. 在導覽窗格的**變更管理**區段中，選擇**自動化**。

1. 選擇 **Execute automation (執行自動化)**。

1. 在**由 Amazon 擁有**索引標籤的**自動化文件**搜尋方塊中，輸入 `AWSSupport-TroubleshootElasticBeanstalk`。

1. 選取 **AWSSupport-TroubleshootElasticBeanstalk** 卡，然後選擇**下一步**。

1. 選取**執行**。

1. 在**輸入參數**區段中：

   1. 從**自動化擔任角色**下拉式清單中，選取允許 Systems Manager 代表您執行動作的角色的 ARN。

   1. 在**應用程式名稱**中，輸入 Elastic Beanstalk 應用程式的名稱。

   1. 在**環境名稱**中，輸入 Elastic Beanstalk 環境。

   1. （選用） 對於 **S3UploaderLink**，如果 AWS 支援工程師已為您提供用於日誌收集的 S3 連結，請輸入連結。

1. 選擇 **Execute (執行)**。

   如果有任何步驟失敗，請在**步驟 ID** 欄下選取失敗步驟的連結。這會顯示步驟的**執行詳細資訊**頁面。**驗證錯誤訊息**區段會顯示需要注意的步驟摘要。例如，`IAMPermissionCheck` 可能會顯示警告訊息。在這種情況下，您可以檢查在**自動化擔任角色**下拉式清單中選取的角色是否有必需的許可。

順利完成所有步驟之後，輸出會提供故障診斷步驟和建議，以將您的環境還原至健康狀態。

## 疑難排解 Elastic Beanstalk 環境的一般指引
<a name="troubleshooting-general"></a>

錯誤訊息可以顯示在主控台的「事件」頁面中、日誌中或「運作狀態」頁面中。您也可以採取行動，從最近變更所導致的降級環境中復原。如果您環境的健全狀態變更為紅色，請嘗試進行下列動作：
+ 請求對您環境進行 AI 支援的分析。如需詳細資訊，請參閱[AI 驅動的環境分析](health-ai-analysis.md)。
+ 如果環境中的 操作傳回包含文字 的錯誤`The stack stack_id associated with environment environment-ID is in stack-status state`，請參閱 [從無效狀態復原您的 Elastic Beanstalk 環境](environment-management-invalid-stack.md) 以取得故障診斷說明。
+ 如果環境中的操作傳回包含文字 的錯誤`Environment environment-name associated CloudFormation stack stack_arn does not exist`，請終止您的環境並建立另一個環境。
+ 檢閱最近的環境[事件](using-features.events.md)。由 Elastic Beanstalk 所提供的關於部署、載入和設定問題的訊息，經常會出現在此處。
+ 檢閱最近的環境[變更歷史記錄](using-features.changehistory.md)。變更歷史記錄會列出對您環境所做的所有組態變更，並包括其他資訊，例如哪些 IAM 使用者進行變更，以及設定了哪些組態參數。
+ [叫出日誌](using-features.logging.md)來檢視最近的日誌檔案項目。Web 伺服器的日誌包含了關於傳入要求和錯誤的資訊。
+ [連線到執行個體](using-features.ec2connect.md)，並檢查系統資源。
+ [轉返](using-features.deploy-existing-version.md)到應用程式先前運作中的版本。
+ 還原最近的組態變更，或恢復[儲存的組態](environment-configuration-methods-before.md#configuration-options-before-savedconfig)。
+ 部署新的環境。如果環境顯示為健全，請執行 [CNAME 交換](using-features.CNAMESwap.md)，將流量路由至新的環境，並繼續針對之前的環境來進行除錯。

## 使用環境變數存取秘密和參數的環境
<a name="troubleshooting-secrets-env-variables"></a>

**事件：***執行個體部署無法取得一或多個秘密*

此訊息表示 Elastic Beanstalk 無法擷取應用程式部署期間指定的一或多個秘密。
+ 檢查環境變數組態中 ARN 值指定的資源是否存在。
+ 確認您的 Elastic Beanstalk EC2 執行個體描述檔角色具有存取資源[所需的 IAM 許可](AWSHowTo.secrets.IAM-permissions.md#AWSHowTo.secrets.IAM-permissions.secrets-manager)。
+ 如果此事件是透過 `RestartAppServer`操作觸發，一旦問題已修正，請重試`RestartAppServer`呼叫以解決問題。
+ 如果事件是透過 `UpdateEnvironment`呼叫觸發，請重試 `UpdateEnvironment`操作。

如需這些命令的範例，請參閱 [https://docs.aws.amazon.com//cli/latest/userguide/cli_elastic-beanstalk_code_examples.html](https://docs.aws.amazon.com//cli/latest/userguide/cli_elastic-beanstalk_code_examples.html)。如需這些操作 API 動作的詳細資訊，請參閱 *[AWS Elastic Beanstalk API 參考](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/)*。

**事件：***執行個體部署偵測到一或多個多行環境值，此平台不支援這些*值

Amazon Linux 2 平台不支援多行變數，但 Docker 和 ECS 受管 Docker 平台除外。如需繼續可用的選項，請參閱 [多行值](AWSHowTo.secrets.env-vars.md#AWSHowTo.secrets.multiline)。

**事件：***指定秘密時 CreateEnvironment 失敗*

當 `CreateEnvironment` 失敗且您有秘密做為環境變數時，您需要解決基礎問題，然後使用 `UpdateEnvironment` 來完成環境設定。請勿使用 `RestartAppServer`，因為在這種情況下環境將無法啟動。如需這些命令的範例，請參閱 [https://docs.aws.amazon.com//cli/latest/userguide/cli_elastic-beanstalk_code_examples.html](https://docs.aws.amazon.com//cli/latest/userguide/cli_elastic-beanstalk_code_examples.html)。如需這些操作 API 動作的詳細資訊，請參閱 *[AWS Elastic Beanstalk API 參考](https://docs.aws.amazon.com/elasticbeanstalk/latest/api/)*。

## 建立環境並啟動執行個體
<a name="troubleshooting-envcreate"></a>

**事件：***啟動環境失敗*

當 Elastic Beanstalk 嘗試啟動環境卻遭遇失敗，就會發生此事件。**Events (事件)** 頁面上的過去事件將提醒您此問題的根源。

**事件：***建立環境操作已完成，但出現命令逾時。嘗試增加逾時期間。*

若您使用的組態檔案會在執行個體上執行命令、下載大型檔案或安裝套件，部署您的應用程式可能會花費較長時間。增加[命令逾時](using-features.rolling-version-deploy.md#environments-cfg-rollingdeployments-console)，讓應用程式在部署期間有更多時間來啟動。

**事件：***下列資源建立失敗：[AWSEBInstanceLaunchWaitCondition]*

此訊息表示您環境的 Amazon EC2 執行個體未與成功啟動的 Elastic Beanstalk 進行通訊。若執行個體沒有網際網路連線，本情況就可能會發生。若您已將環境設定為在私有 VPC 子網路中啟動執行個體，[請確認子網路具備 NAT](vpc.md)，以允許執行個體連接至 Elastic Beanstalk。

**事件：***本區域需要服務角色。請將「服務角色」選項新增至環境。*

Elastic Beanstalk 會使用服務角色來監控環境中的資源，並支援[受管平台更新](environment-platform-update-managed.md)。如需詳細資訊，請參閱[管理 Elastic Beanstalk 服務角色](iam-servicerole.md)。

## 部署
<a name="troubleshooting-deployments"></a>

**問題：***部署期間無法使用應用程式*

由於 Elastic Beanstalk 使用便利的升級程序，因此可能會出現幾秒鐘的停機時間。使用[滾動部署](using-features.rolling-version-deploy.md)將部署對您生產環境的影響降到最低。

**事件：***無法建立 AWS Elastic Beanstalk 應用程式版本*

您的應用程式原始碼套件可能過於龐大，或者您可能已達到[應用程式版本配額](applications-versions.md)。

**事件：***更新環境操作已完成，但出現命令逾時。嘗試增加逾時期間。*

若您使用的組態檔案會在執行個體上執行命令、下載大型檔案或安裝套件，部署您的應用程式可能會花費較長時間。增加[命令逾時](using-features.rolling-version-deploy.md#environments-cfg-rollingdeployments-console)，讓應用程式在部署期間有更多時間來啟動。

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

**事件：***CPU 使用率超過 95.00%*

嘗試[執行更多執行個體](using-features.managing.as.md)，或[選擇不同的執行個體類型](using-features.managing.ec2.md)。

**事件：***Elastic Load Balancer awseb-*myapp* 具有零運作狀態良好的執行個體*、**Y *執行個體中的 *X* 上的 ELB 程序運作狀態不佳。*、*ELB 程序並非所有執行個體都正常運作。*

這些訊息表示您的負載平衡器運作狀態檢查在一或多個執行個體上失敗。如果您的應用程式似乎正常運作，請確定應用程式的運作狀態檢查 URL 已正確設定。如果沒有，請嘗試下列動作：
+ 檢查您的應用程式日誌 （例如 `/var/log/web.stdout.log`) 和 `/var/log/eb-engine.log`是否有錯誤、啟動失敗或部署問題。
+ 檢查 `/var/log/nginx/`(nginx) 或 `/var/log/httpd/`(Apache) 中的代理日誌是否有連線錯誤。
+ 確認您的應用程式以 HTTP 200 回應已設定的運作狀態檢查路徑，並且正在接聽預期的連接埠。
+ 驗證安全群組允許從負載平衡器到運作狀態檢查連接埠上執行個體的傳入流量。在 EC2 主控台中，檢查執行個體安全群組上的傳入規則，以確認運作狀態檢查連接埠已開放給負載平衡器的安全群組。
+ 檢查 CloudWatch 指標 (`CPUUtilization`、) 中的 CPU 和記憶體使用率`EnvironmentHealth`。資源耗盡可能會導致運作狀態檢查逾時。

如需詳細資訊，請[擷取完整的套件日誌](using-features.logging.md)或[啟用 CloudWatch 日誌串流](AWSHowTo.cloudwatchlogs.md)。您也可以執行[https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshoot-elastic-beanstalk.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshoot-elastic-beanstalk.html)自動化 Runbook，以協助診斷問題。

**事件：***無法找到 Elastic Load Balancer awseb-*myapp**

您環境的負載平衡器可能已從外部移除。使用組態選項及 Elastic Beanstalk 提供的[擴充功能](ebextensions.md)，僅變更您環境的資源。重建您的環境或啟動新的環境。

**事件：***EC2 執行個體啟動失敗。等待新的 EC2 執行個體啟動…*

您環境執行個體類型的可用性可能較低，或者您已達到帳戶的執行個體配額。檢查[服務運作狀態儀表板](https://status.aws.amazon.com/)，確認 Elastic Compute Cloud (Amazon EC2) 服務為綠色，或[請求提高配額](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-ec2-instances)。

**事件：***沒有任何執行個體正在傳送資料。*

Elastic Beanstalk 不會從您的任何執行個體接收運作狀態資料。這可能是由網路連線問題、運作狀態代理程式問題或系統層級故障所造成。
+ 驗證網路連線。檢查安全群組是否允許傳出 HTTPS （連接埠 443)。對於私有子網路中的執行個體，請確認已設定 NAT 閘道或 VPC 端點。檢查路由表是否有正確的傳出路由，並確保 DNS 解析在您的 VPC 中正常運作。
+ 檢查運作狀態監控代理程式。查看`/var/log/healthd/daemon.log`運作狀態代理程式錯誤`/var/log/messages`和系統層級錯誤。透過 SSH 連線至執行個體並執行 ，確認運作狀態良好的服務正在執行`systemctl status healthd`。
+ 檢查系統層級問題，例如資源耗盡 （記憶體、CPU、磁碟空間）、NTP/系統時鐘同步，以及執行個體中繼資料服務連線。

如需詳細資訊，請[擷取完整的套件日誌](using-features.logging.md)或[啟用 CloudWatch 日誌串流](AWSHowTo.cloudwatchlogs.md)。您也可以執行[https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshoot-elastic-beanstalk.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshoot-elastic-beanstalk.html)自動化 Runbook，以協助診斷問題。

## 具有雙堆疊設定負載平衡器的環境
<a name="troubleshooting-dual-stack-load-balancer"></a>

**事件：***VPC *vpc\$1id* 未設定 IPv6 CIDR 區塊。dualstack 負載平衡器需要 IPv6 CIDR 區塊。在使用雙堆疊模式之前，請將 IPv6 CIDR 區塊與您的 VPC 建立關聯。*

您的 VPC 和所有子網路必須具有與其相關聯的 IPv6 CIDR 區塊。這是在設定負載平衡器進行雙堆疊支援之前，您必須完成的其中一個 VPC 先決條件。如需完成此任務的詳細資訊，請參閱本主題稍[Amazon VPC 先決條件](environments-cfg-elbv2-ipv6-dualstack.md#environments-cfg-elbv2-ipv6-dualstack.prereqs)早的 。

 **事件：***一或多個 VPC *vpc\$1id* 子網路未設定 IPv6 CIDR 區塊。與雙堆疊負載平衡器搭配使用的子網路需要 IPv6 CIDR 區塊。在使用雙堆疊模式之前，請將 IPv6 CIDR 區塊與所有必要子網路建立關聯。*

VPC 的所有子網路都必須有與其相關聯的 IPv6 CIDR 區塊。這是在設定負載平衡器進行雙堆疊支援之前，您必須完成的其中一個 VPC 先決條件。如需完成此任務的詳細資訊，請參閱本主題稍[Amazon VPC 先決條件](environments-cfg-elbv2-ipv6-dualstack.md#environments-cfg-elbv2-ipv6-dualstack.prereqs)早的 。

 **錯誤：** *`IpAddressType`選項僅適用於使用 Application Load Balancer 或 Network Load Balancer 設定的 Elastic Beanstalk 環境。*

此訊息表示您的 Elastic Beanstalk 環境可能是單一執行個體環境，也可能是使用 Classic Load Balancer。只有使用 Application Load Balancer 或 Network Load Balancer 設定的環境才能設定 `IpAddressType`。

## Configuration
<a name="troubleshooting-configuration"></a>

**事件：***與環境`stack_id`相關聯的堆疊`environment-ID`處於 `stack-status` 狀態*

您環境的基礎 CloudFormation 堆疊可能處於 *\$1\$1FAILED* 狀態。必須修復此狀態，才能在您的環境中繼續 Elastic Beanstalk 操作。如需詳細資訊，請參閱[從無效狀態復原您的 Elastic Beanstalk 環境](environment-management-invalid-stack.md)。

**事件：***您無法為 Elastic Beanstalk 環境設定 Elastic Load Balancing Target 選項與應用程式運作狀態檢查 URL 選項的數值*

`Target` 命名空間的 `aws:elb:healthcheck` 選項已作廢。請自環境移除 `Target` 選項命名空間，然後再嘗試更新。

**事件：***ELB 無法連接到相同 AZ 中的多個子網路*

若您嘗試在相同可用區域的子網路間移動負載平衡器，將出現此訊息。變更負載平衡器上的子網路，需要將其移出原始可用區域，然後將所需子網路移回原始可用區域。在此過程中，所有執行個體將於 AZ 內遷移，會產生重大停機時間。否則，請考慮建立新的環境，並[執行 CNAME 交換](using-features.CNAMESwap.md)。

## Docker 容器故障診斷
<a name="troubleshooting-docker"></a>

**事件：***無法擷取 Docker 映像檔：最新的：無效的儲存庫名稱 ()，僅允許 [a-z0-9-\$1.]。針對日誌執行 tail 指令以取得詳細資訊。*

使用 JSON 驗證程式來檢查 `dockerrun.aws.json` 檔案的語法。另外也請根據 [準備 Docker 映像以部署至 Elastic Beanstalk](single-container-docker-configuration.md) 中所說明的要求，來驗證 dockerfile 的內容

**事件：***Dockerfile 中找不到 EXPOSE 指令，請中止部署*

`Dockerfile` 或 `dockerrun.aws.json` 檔案並未宣告容器的通訊埠。使用 `EXPOSE` 指令 (`Dockerfile`) 或 `Ports` 區塊 (`dockerrun.aws.json` 檔案) 來公開傳入資料用的通訊埠。

**事件：** *無法從*儲存貯體名稱*下載身分驗證登入資料*儲存庫**

`dockerrun.aws.json` 為 `.dockercfg` 檔案提供了無效的 EC2 金鑰對和/或 S3 儲存貯體。或者，執行個體描述檔不具有 S3 儲存貯體適用的 GetObject 授權。請確認 `.dockercfg` 檔案包含有效的 S3 儲存貯體和 EC2 金鑰對。針對執行個體描述檔中的 IAM 角色，授予動作 `s3:GetObject` 的許可。如需詳細資訊，請參閱 [管理 Elastic Beanstalk 執行個體描述檔](iam-instanceprofile.md)

**事件：***活動執行失敗，原因：警告：無效的授權組態檔案*

您的身分驗證檔案 (`config.json`) 格式不正確。請參閱 [使用映像儲存庫進行驗證使用 AWS Secrets Manager](docker-configuration.remote-repo.md)

## 常見問答集
<a name="troubleshooting-faq"></a>

**問：***如何將我的應用程式 URL 自 myapp.us-west-2.elasticbeanstalk.com 變更為 www.myapp.com？*

在 DNS 伺服器，註冊 CNAME 記錄，例如 **www.mydomain.com CNAME mydomain.elasticbeanstalk.com**。

**問：***如何為我的 Elastic Beanstalk 應用程式指定特定的可用區域？*

您可使用 API、CLI、Eclipse 外掛程式或 Visual Studio 外掛程式，挑選特定的可用區域。如需有關使用 Elastic Beanstalk 主控台來指定可用區域的詳細資訊，請參閱[Auto Scaling 您的 Elastic Beanstalk 環境執行個體](using-features.managing.as.md)。

**問：***如何變更我的環境內的執行個體類型？*

若要變更環境的執行個體類型，請移至環境組態頁面，並在**執行個體**組態類別中選擇**編輯**。然後，選擇新的執行個體類型，然後選擇 **Apply** (套用) 以更新您的環境。在此之後，Elastic Beanstalk 會終止所有執行中的執行個體，並取代為新的執行個體。

**問：***如何判斷是否有人對環境做出組態變更？*

若要查看此資訊，請在 Elastic Beanstalk 主控台的導覽窗格中，選擇 **Change history** (變更歷史記錄) 以顯示所有環境的組態變更清單。此清單包括變更的日期和時間、變更的目標組態參數和值，以及做出變更的 IAM 使用者。如需詳細資訊，請參閱[變更歷史記錄](using-features.changehistory.md)。

**問：***能否在執行個體終止時，防止 Amazon EBS 磁碟區遭到刪除？*

您環境的執行個體使用 Amazon EBS 來儲存，然而，當 Auto Scaling 終止執行個體時，根磁碟區將遭到刪除。不建議將狀態或其他資料存放於您的執行個體。如有需要，您可以使用 來防止磁碟區遭到刪除 AWS CLI：`$ aws ec2 modify-instance-attribute -b '/dev/sdc=<vol-id>:false`如 [AWS CLI 參考](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-attribute.html)中所述。

**問：***如何從我的 Elastic Beanstalk 應用程式刪除個人資訊？*

AWS Elastic Beanstalk 應用程式使用的資源可能會儲存個人資訊。當您終止環境時，Elastic Beanstalk 會終止其建立的所有資源。使用[組態檔案](ebextensions.md)所新增的資源也會終止。不過，如果您在 Elastic Beanstalk 環境之外建立 AWS 資源，並將其與您的應用程式建立關聯，您可能需要手動檢查應用程式可能儲存的個人資訊是否未保留。在這整個開發人員指南中，我們無論何時討論建立其他資源，都會提及何時應該考慮刪除。

## 常見錯誤
<a name="common-errors"></a>

此主題列出了在使用 EB CLI 時常見的錯誤訊息，以及可能的解決方法。如果您遇到此處未顯示的錯誤訊息，請利用*意見回饋*連結告知我們。

**錯誤：處理 git 命令時發生錯誤。錯誤碼：128 錯誤：嚴重：不是有效的物件名稱 HEAD**

**原因：**當您將 Git 儲存庫初始化但尚未執行遞交時，會顯示此錯誤訊息。當您的專案資料夾包含 Git 儲存庫時，EB CLI 會尋找 HEAD 修訂版。

**解決方法：**在您的專案資料夾中，將檔案新增至整備區，然後執行遞交：

```
~/my-app$ git add .
~/my-app$ git commit -m "First commit"
```

**錯誤：此分支沒有預設環境。您必須輸入「eb 狀態 my-env-name」來指定環境，或輸入「eb use my-env-name」來設定預設環境。 **

**原因：**當您在 git 中建立新的分支時，該分支預設不會連接到 Elastic Beanstalk 環境。

**解決方法：**執行 **eb list** 來查看可用環境的清單。然後執行 **eb use *env-name***，以使用其中一個可用的環境。

**錯誤：2.0\$1 平台需要服務角色。您可以提供 --service-role 選項**

**原因：**如果您使用 **eb create** (例如 **eb create my-env**) 來指定環境名稱，則 EB CLI 不會試著為您建立服務角色。如果不具有預設服務角色，將會顯示上述的錯誤。

**解決方法：**執行 **eb create** 而不指定環境名稱，然後再依照提示來建立預設的服務角色。

## 部署錯誤
<a name="python-common-troubleshooting"></a>

您的 Elastic Beanstalk 部署可能會以 404 （如果您的應用程式無法啟動） 或 500 （如果您的應用程式在執行時間失敗） 回應來回應。若要疑難排解許多常見問題，您可以使用 EB CLI 來檢查部署狀態、檢視其日誌、使用 SSH 存取 EC2 執行個體，或開啟應用程式環境的 AWS 管理主控台頁面。

**若要使用 EB CLI 來協助排除部署的問題**

1. 執行 **eb status** 以查看目前部署作業的狀態和 EC2 主機的健全狀況。例如：

   ```
   $ eb status --verbose
   
   Environment details for: python_eb_app
     Application name: python_eb_app
     Region: us-west-2
     Deployed Version: app-150206_035343
     Environment ID: e-wa8u6rrmqy
     Platform: 64bit Amazon Linux 2014.09 v1.1.0 running Python 2.7
     Tier: WebServer-Standard-
     CNAME: python_eb_app.elasticbeanstalk.com
     Updated: 2015-02-06 12:00:08.557000+00:00
     Status: Ready
     Health: Green
     Running instances: 1
         i-8000528c: InService
   ```
**注意**  
使用 `--verbose` 條件判斷式，來提供關於執行中執行個體狀態的資訊。如果未使用此條件判斷式，**eb status** 只會列出關於您環境的一般資訊。

1. 執行 **eb health** 來檢視關於您環境的健全狀況資訊：

   ```
   $ eb health --refresh
    elasticBeanstalkExa-env                                  Degraded                  2016-03-28 23:13:20
   WebServer                                                                              Ruby 2.1 (Puma)
     total      ok    warning  degraded  severe    info   pending  unknown
       5        2        0        2        1        0        0        0
   
     instance-id   status     cause
       Overall     Degraded  Incorrect application version found on 3 out of 5 instances. Expected version "Sample Application" (deployment 1).
     i-d581497d    Degraded  Incorrect application version "v2" (deployment 2). Expected version "Sample Application" (deployment 1).
     i-d481497c    Degraded  Incorrect application version "v2" (deployment 2). Expected version "Sample Application" (deployment 1).
     i-136e00c0    Severe    Instance ELB health has not been available for 5 minutes.
     i-126e00c1    Ok
     i-8b2cf575    Ok
   
     instance-id   r/sec    %2xx   %3xx   %4xx   %5xx      p99      p90      p75     p50     p10
       Overall     646.7   100.0    0.0    0.0    0.0    0.003    0.002    0.001   0.001   0.000
     i-dac3f859    167.5    1675      0      0      0    0.003    0.002    0.001   0.001   0.000
     i-05013a81    161.2    1612      0      0      0    0.003    0.002    0.001   0.001   0.000
     i-04013a80    0.0         -      -      -      -         -        -       -       -       -
     i-3ab524a1    155.9    1559      0      0      0    0.003    0.002    0.001   0.001   0.000
     i-bf300d3c    162.1    1621      0      0      0    0.003    0.002    0.001   0.001   0.000
   
     instance-id   type       az   running     load 1  load 5      user%  nice%  system%  idle%   iowait%
     i-d581497d    t2.micro   1a   25 mins       0.16     0.1        7.0    0.0      1.7   91.0       0.1
     i-d481497c    t2.micro   1a   25 mins       0.14     0.1        7.2    0.0      1.6   91.1       0.0
     i-136e00c0    t2.micro   1b   25 mins        0.0    0.01        0.0    0.0      0.0   99.9       0.1
     i-126e00c1    t2.micro   1b   25 mins       0.03    0.08        6.9    0.0      2.1   90.7       0.1
     i-8b2cf575    t2.micro   1c   1 hour        0.05    0.41        6.9    0.0      2.0   90.9       0.0
     
     instance-id   status     id   version              ago                                  deployments
     i-d581497d    Deployed   2    v2                   9 mins
     i-d481497c    Deployed   2    v2                   7 mins
     i-136e00c0    Failed     2    v2                   5 mins
     i-126e00c1    Deployed   1    Sample Application   25 mins
     i-8b2cf575    Deployed   1    Sample Application   1 hour
   ```

   上述範例顯示了具有 5 個執行個體的環境，其中在第 3 個執行個體上的「v2」版本部署作業已失敗。在部署失敗之後，預期的版本會重設為已經成功的最新版本，在此例中為第一個部署作業的「範例應用程式」。如需詳細資訊，請參閱[使用 EB CLI 來監控環境運作狀態](health-enhanced-ebcli.md)。

1. 執行 **eb logs**，以下載和檢視與您應用程式部署相關的日誌。

   ```
   $ eb logs
   ```

1. 執行 **eb ssh**，以連線到執行您應用程式的 EC2 執行個體，並直接對此執行個體進行檢查。在執行個體上，您所部署的應用程式會出現在 `/opt/python/current/app` 目錄中，而您的 Python 環境將會出現在 `/opt/python/run/venv/` 中。

1. 執行 **eb console**，以在 [AWS 管理主控台](https://aws.amazon.com/console/)上檢視您的應用程式環境。您可以使用 Web 介面，來輕鬆地檢查部署作業的各種面向，包括應用程式的組態、狀態、事件和日誌。您也可以下載已部署到伺服器的目前或過去的應用程式版本。