使用 EB CLI 來進行問題的故障診斷 - AWS Elastic Beanstalk

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

使用 EB CLI 來進行問題的故障診斷

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

錯誤:處理 git 指令時所發生的錯誤。錯誤碼:128 錯誤:嚴重:非有效的物件名稱 HEAD

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

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

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

錯誤:此分支不具備預設環境。您必須輸入「eb status my-env-name」來指定環境,或輸入「eb use my-env-name」來設定預設的環境。

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

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

錯誤:2.0+ 平台需要服務角色。您可以利用 --service-role 選項來提供

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

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

故障診斷部署

如果您的 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 只會列出關於您環境的一般資訊。

  2. 執行 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 來監控環境運作狀態

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

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

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