故障診斷 AWS CloudShell - AWS CloudShell

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

故障診斷 AWS CloudShell

使用 時 AWS CloudShell,您可能會遇到問題,例如當您使用 Shell 命令列介面啟動 CloudShell 或執行金鑰任務時。本章涵蓋的資訊說明如何疑難排解您可能遇到的一些常見問題。

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

故障診斷錯誤

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

錯誤:「無法啟動環境。若要重試,請重新整理瀏覽器或選取動作、重新啟動以重新啟動 AWS CloudShell 「

問題:當您嘗試 AWS CloudShell 從 啟動 時 AWS Management Console,即使您已取得IAM管理員的必要許可,且已重新整理瀏覽器或重新啟動 ,也會被拒絕存取 CloudShell。

解決方案:聯絡 AWS 支援。

(回到頁首)

錯誤:「無法啟動環境。您沒有必要的許可。請您的IAM管理員授予對 AWS CloudShell" 的存取權

問題:當您嘗試 AWS CloudShell 從 啟動 時 AWS Management Console,系統會拒絕存取,並通知您沒有所需的許可。

原因:您用來存取的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 工作階段,且瀏覽器會顯示錯誤訊息。

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

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

(回到頁首)

Arrow 鍵在 中運作不正常 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。如果您在私有網路中使用瀏覽器,代理伺服器可能會協助安全存取網際網路,而 firewalls. WebSocket communication 通常可以周遊代理伺服器而不會發生問題。但是,在某些情況下,代理伺服器 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模組

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

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

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

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

  • 對於大多數情況,只要不使用 .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 在不支援 的 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環境存取 中的資源

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

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

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

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

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

原因:您的角色未啟用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 環境 )。

憑證無法在 中運作 CloudShell

問題:當您嘗試從 AWS CLI 撥打電話時 CloudShell,會收到錯誤訊息內部伺服器錯誤

原因:以下是此問題的可能原因:

  • CloudShell 用於重新整理憑證的putCredentialsAPI呼叫失敗。由於缺少putCredentials動作的IAM許可,API通話可能會失敗。如需詳細資訊,請參閱存取許可 AWS 服務。如果您已經擁有putCredentials動作的IAM許可,則API通話可能會因為網路問題或 的操作問題而失敗 CloudShell。

  • 您的憑證不再有效, AWS 因為主控台工作階段已過期,但您的 CloudShell環境仍在執行中。當您的憑證不再有效時, CloudShell 無法進行任何API呼叫。

解決方案:如果您已經擁有putCredentials動作所需的IAM許可,請嘗試重新整理網頁。如果問題未解決,且您繼續收到錯誤,請聯絡 AWS 支援

無法存取 中的 Amazon Q 內嵌建議 AWS CloudShell

問題:切換到 Z Shell 之後,您看不到終端機中的 CloudShell內嵌建議。

原因 :如果您使用現有 CloudShell 環境,您的點檔案可能不包含 Amazon Q 內嵌建議所需的組態。

解決方案:若要解決此問題,請遵循下列步驟:

  1. 執行 q integrations install dotfiles

  2. 開啟新的 CloudShell 索引標籤。

  3. 透過輸入 切換到 Z Shellzsh,然後按 Enter

無法存取 中的 Amazon Q CLI功能 AWS CloudShell

問題:當您嘗試在 中使用 Amazon Q CLI功能 CloudShell時,例如內嵌建議、聊天和翻譯,您會取得 AccessDeniedError

原因 :您沒有所需的IAM許可。

解決方案:請求您的管理員為您提供必要的IAM許可。如需詳細資訊,請參閱 Amazon Q 開發人員使用者指南 中的 Amazon Q 開發人員的身分型政策範例