故障診斷 AWS CloudShell - AWS CloudShell

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

故障診斷 AWS CloudShell

使用 時 AWS CloudShell,您可能會遇到問題,例如當您啟動 CloudShell 或使用 shell 命令列介面執行關鍵任務時。本章涵蓋的資訊說明如何對您可能遇到的一些常見問題進行故障診斷。

如需有關 CloudShell 各種問題的答案,請參閱AWS CloudShell FAQs。您也可以在 AWS CloudShell 討論論壇中搜尋答案並張貼問題。當您進入此論壇時,您可能需要登入 AWS。您也可以直接聯絡我們

故障診斷錯誤

當您遇到下列任何索引錯誤時,您可以使用下列解決方案來解決這些錯誤。

拒絕的存取

問題:當您嘗試從 啟動 CloudShell 時 AWS Management Console,會收到「無法啟動環境」訊息。若要重試,請重新整理瀏覽器或選取動作以重新啟動 AWS CloudShell「。即使您已取得 IAM 管理員的必要許可,且已重新整理瀏覽器或重新啟動 CloudShell,您仍被拒絕存取。

解決方案:聯絡 AWS 支援

(回到頁首)

許可不足

問題:當您嘗試從 啟動 CloudShell 時 AWS Management Console,會收到「無法啟動環境」訊息。您沒有必要的許可。請您的 IAM 管理員授予 的存取權 AWS CloudShell。您被拒絕存取,並通知您沒有必要的許可。

原因:您用來存取的 IAM 身分 AWS CloudShell 缺少必要的 IAM 許可。

解決方案:請求您的 IAM 管理員為您提供必要的許可。他們可以透過新增連接的 AWS 受管政策 (AWSCloudShellFullAccess) 或內嵌內嵌內嵌政策來執行此操作。如需詳細資訊,請參閱使用 IAM 政策管理 AWS CloudShell 存取和用量

(回到頁首)

無法存取 AWS CloudShell 命令列

問題:修改運算環境使用的檔案後,您無法存取命令列輸入 AWS CloudShell。

解決方案:如果您在錯誤修改.bashrc或任何其他檔案後失去存取權,您可以透過刪除主目錄 AWS CloudShell 來返回其預設設定。

(回到頁首)

無法 Ping 外部 IP 地址

問題:當您從命令列執行 ping 命令 (例如 ping amazon.com) 時,會收到下列訊息。

ping: socket: Operation not permitted

原因:ping 公用程式使用網際網路控制訊息通訊協定 (ICMP) 將回應請求封包傳送至目標主機。它會等待回聲從目標回覆。由於未在 中啟用 ICMP 通訊協定 AWS CloudShell,因此 ping 公用程式無法在 shell 的運算環境中操作。

解決方案:由於 不支援 ICMP AWS CloudShell,因此您可以執行下列命令來安裝 Netcat。Netcat 是一種電腦網路公用程式,用於使用 TCP 或 UDP 讀取和寫入網路連線。

sudo yum install nc nc -zv www.amazon.com 443

(回到頁首)

準備終端機時遇到一些問題

問題:嘗試 AWS CloudShell 使用 Microsoft Edge 瀏覽器存取 時,您無法啟動 Shell 工作階段,瀏覽器會顯示錯誤訊息。

Cause:與舊版 Microsoft Edge AWS CloudShell 不相容。您可以使用支援瀏覽器 AWS CloudShell 的最新四個主要版本來存取 。

解決方案: Microsoft 網站安裝更新的 Edge 瀏覽器版本。

(回到頁首)

箭頭鍵在 PowerShell 中無法正常運作

問題:在正常操作中,您可以使用方向鍵來導覽命令列界面,並透過命令歷史記錄向後和向前掃描。但是,當您在 上按下特定 PowerShell 版本中的方向鍵時 AWS CloudShell,字母可能會輸出不正確。

原因:方向鍵輸出字母不正確的情況是 Linux 上執行 PowerShell 7.2.x 版本的已知問題。

解決方案:若要將修改方向鍵行為的逸出序列分割出來,請編輯 PowerShell 設定檔,並將$PSStyle變數設定為 PlainText

  1. 在 AWS CloudShell 命令列中,輸入下列命令以開啟設定檔檔案。

    vim ~/.config/powershell/Microsoft.PowerShell_profile.ps1
    注意

    如果您已經在 PowerShell 中,也可以使用下列命令在編輯器中開啟設定檔檔案。

    vim $PROFILE
  2. 在編輯器中,前往檔案現有文字的結尾,按 i 進入插入模式,然後新增下列陳述式。

    $PSStyle.OutputRendering = 'PlainText'
  3. 完成編輯後,按 Esc 進入命令模式。接著,輸入下列命令來儲存檔案並結束編輯器。

    :wq
注意

您的變更會在您下次啟動 PowerShell 時生效。

(回到頁首)

不支援的 Web Sockets 會導致無法啟動 CloudShell 工作階段

問題:當您嘗試啟動時 AWS CloudShell,會重複收到下列訊息:Failed to open sessions : Timed out while opening the session

原因:CloudShell 取決於 WebSocket 通訊協定,允許 Web 瀏覽器與 之間的雙向互動式通訊 AWS CloudShell。如果您在私有網路中使用瀏覽器,代理伺服器和防火牆可能會協助安全存取網際網路。WebSocket 通訊通常可以周遊代理伺服器,而不會發生問題。但是,在某些情況下,代理伺服器會阻止 WebSockets 正常運作。如果發生此問題,CloudShell 無法啟動 shell 工作階段,並且嘗試連線最終會逾時。

解決方案:連線逾時可能是由不支援的 WebSockets以外的問題所造成。如果是這種情況,請先重新整理 CloudShell 命令列界面所在的瀏覽器視窗。

如果您在重新整理後仍然收到逾時錯誤,請參閱代理伺服器的文件。此外,請確定您的代理伺服器已設定為允許 Web Sockets。或者,請聯絡網路的系統管理員。

注意

假設您想要透過允許列出特定 URLs 來定義精細許可。您可以新增 AWS Systems Manager 工作階段用來開啟 WebSocket 連線的部分 URL,以傳送輸入和接收輸出。您的 AWS CloudShell 命令會傳送至該 Systems Manager 工作階段。

Systems Manager 所使用的此 StreamUrl 格式為 wss://ssmmessages.region.amazonaws.com/v1/data-channel/session-id?stream=(input|output)

區域代表 支援的 AWS 區域 的區域識別符 AWS Systems Manager。例如, us-east-2是美國東部 (俄亥俄) 區域的區域識別符。

由於 session-id 是在特定 Systems Manager 工作階段成功啟動建立,因此您只能在更新 URL 允許清單wss://ssmmessages.region.amazonaws.com時指定 。如需詳細資訊,請參閱 AWS Systems Manager API 參考中的 StartSession 操作。

(回到頁首)

無法匯入AWSPowerShell.NetCore模組

問題:當您透過 在 PowerShell 中匯入 AWSPowerShell.NetCore 模組時Import-Module -Name AWSPowerShell.NetCore,您會收到下列錯誤訊息:

Import-Module:指定的模組 'AWSPowerShell.NetCore' 未載入,因為在任何模組目錄中找不到有效的模組檔案。

原因:AWSPowerShell.NetCore模組會由 中的每個服務 AWS.Tools 模組取代 AWS CloudShell。

解決方案:可能不再需要任何明確的匯入陳述式,或需要變更為相關的每個服務 AWS。工具模組。

  • 對於大多數情況下,只要不使用 .Net 類型,您就不需要任何明確的匯入陳述式。以下是匯入陳述式的範例。

    • Get-S3Bucket

    • (Get-EC2Instance).Instances

  • 如果使用 .Net 類型,請匯入服務層級模組 (AWS.Tools.<Service>)。以下為範例語法。

    Import-Module -Name AWS.Tools.EC2 $InstanceTag = [Amazon.EC2.Model.Tag]::new("Environment","Dev")
    Import-Module -Name AWS.Tools.S3 $LifecycleRule = [Amazon.S3.Model.LifecycleRule]::new()

如需詳細資訊,請參閱 的第 4 版公告 AWS Tools for PowerShell。

(回到頁首)

使用 時 Docker 未執行 AWS CloudShell

問題:使用 時,Docker 未正確執行 AWS CloudShell。您會收到下列錯誤訊息:docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

解決方案:嘗試重新啟動您的環境。當您 AWS CloudShell 在不支援 Docker 的 GovCloud 區域中執行 Docker 時,可能會發生此錯誤訊息。請確定您在支援的 AWS 區域中執行 Docker。如需可使用 Docker 的區域清單,請參閱 的支援 AWS 區域 AWS CloudShell

Docker 已耗盡磁碟空間

問題:您收到下列錯誤訊息:ERROR: failed to solve: failed to register layer: write [...]: no space left on device

原因:Dockerfile 超過 中的可用磁碟空間 AWS CloudShell。這可能是由於大型個別影像或過多的預先存在 Docker 影像所造成。

解決方案:執行 df -h 以尋找磁碟用量。執行 sudo du -sh /folder/folder1 來評估您認為可能很大的特定資料夾大小,並考慮刪除其他檔案以釋放空間。其中一個選項是考慮執行 來移除未使用的 Docker 映像docker rmi。您應該知道 Docker 在環境中的空間有限,如需 Docker 的詳細資訊,請參閱 Docker 文件指南

docker push 正在逾時並持續重試

問題:當您執行時docker push,它會逾時,並繼續重試,但不會成功。

原因:這可能是由於缺少許可、推送到錯誤的儲存庫或缺乏身分驗證所致。

解決方案:若要嘗試解決此問題,請確定您正在推送至正確的儲存庫。執行 docker login以正確驗證。請確定您擁有推送至 Amazon ECR 儲存庫所需的所有必要許可。

無法從我的 VPC 環境存取 AWS CloudShell VPC 內的資源

問題:使用我的 VPC 環境時,無法存取 AWS CloudShell VPC 內的資源。

原因:您的 AWS CloudShell VPC 環境會繼承 VPC 的網路設定。

解決方案:若要解決此問題,請確定您的 VPC 已正確設定以存取您的資源。如需詳細資訊,請參閱 VPC 文件 將您的 VPC 連接到其他網路,以及 和 Network Access Analyzer 文件 Network Access Analyzer。您可以在命令列提示中或在 AWS CloudShell VPC 主控台頁面中,於您的環境`ip -a`內執行 命令,以找到 VPC 環境正在使用的 IPv4 地址。

用於我的 VPC 環境 AWS CloudShell 的 ENI 未清除

問題:無法清除 AWS CloudShell 用於我的 VPC 環境的 ENI。

原因:您的角色未啟用ec2:DeleteNetworkInterface許可。

解決方案:若要解決此問題,請確定您的角色已啟用ec2:DeleteNetworkInterface許可,如下列範例指令碼所示:

{ "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } }, "Resource": "arn:aws:ec2:*:*:network-interface/*" }

具有僅 VPC 環境CreateEnvironment許可的使用者也可以存取公有 AWS CloudShell 環境

問題:只有 VPC 環境的CreateEnvironment許可限制使用者也可以存取公有 AWS CloudShell 環境。

原因:當您限制僅建立 VPC 環境的CreateEnvironment許可時,如果您已建立公有環境,您將保留對現有公有 CloudShell 環境的存取權,直到使用 Web 使用者介面刪除此環境為止。但是,如果您之前從未使用過 CloudShell,您將無法存取公有環境。

解決方案:若要限制對公 AWS CloudShell 有環境的存取,IAM 管理員必須先使用 限制更新 IAM 政策,然後使用者必須使用 AWS CloudShell Web 使用者介面手動刪除現有的公有環境。(動作刪除 CloudShell 環境)。