本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
故障診斷 AWS CloudShell
使用 時 AWS CloudShell,您可能會遇到問題,例如當您使用 Shell 命令列介面啟動 CloudShell 或執行金鑰任務時。本章涵蓋的資訊說明如何疑難排解您可能遇到的一些常見問題。
如需有關 的各種問題的答案 CloudShell,請參閱 AWS CloudShell FAQs
故障診斷錯誤
當您遇到下列任何索引錯誤時,您可以使用下列解決方案來解決這些錯誤。
主題
- 錯誤:「無法啟動環境。若要重試,請重新整理瀏覽器或選取動作、重新啟動以重新啟動 AWS CloudShell 「
- 錯誤:「無法啟動環境。您沒有必要的許可。請您的IAM管理員授予對 AWS CloudShell" 的存取權
- 無法存取 AWS CloudShell 命令列
- 無法 ping 外部 IP 地址
- 準備終端機時遇到一些問題
- Arrow 鍵在 中運作不正常 PowerShell
- 不支援的 Web Sockets 導致無法啟動 CloudShell 工作階段
- 無法匯入AWSPowerShell.NetCore模組
- 使用 時,Docker 未執行 AWS CloudShell
- Docker 已耗盡磁碟空間
- docker push 正在逾時並持續重試
- 無法VPC從我的 AWS CloudShell VPC環境存取 中的資源
- ENI 用於我VPC環境 AWS CloudShell 的 不會清除
- 具有僅VPC環境CreateEnvironment許可的使用者也可以存取公有 AWS CloudShell 環境
- 憑證無法在 中運作 CloudShell
- 無法存取 中的 Amazon Q 內嵌建議 AWS CloudShell
- 無法存取 中的 Amazon Q CLI功能 AWS CloudShell
錯誤:「無法啟動環境。若要重試,請重新整理瀏覽器或選取動作、重新啟動以重新啟動 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 網站
(回到頁首)
Arrow 鍵在 中運作不正常 PowerShell
問題:在正常操作中,您可以使用方向鍵來導覽命令列介面,並透過命令歷史記錄向後和向前掃描。但是,當您在 PowerShell 上按下特定版本 中的方向鍵時 AWS CloudShell,字母可能會輸出不正確。
原因 :箭頭鍵輸出錯誤的字母是 Linux 上執行 PowerShell 7.2.x 版本的已知問題。
解決方案:若要將修改方向鍵行為的逸出序列分割出來,請編輯 PowerShell 設定檔檔案並將$PSStyle
變數設定為 PlainText
。
-
在 AWS CloudShell 命令列中,輸入下列命令以開啟設定檔檔案。
vim ~/.config/powershell/Microsoft.PowerShell_profile.ps1
注意
如果您已在 中 PowerShell,您也可以使用下列命令在編輯器中開啟設定檔檔案。
vim $PROFILE
-
在編輯器中,前往檔案現有文字的結尾,按 i 進入插入模式,然後新增下列陳述式。
$PSStyle.OutputRendering = 'PlainText'
-
完成編輯後,請按 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 版公告
(回到頁首)
使用 時,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 用於重新整理憑證的
putCredentials
API呼叫失敗。由於缺少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 內嵌建議所需的組態。
解決方案:若要解決此問題,請遵循下列步驟:
-
執行
q integrations install dotfiles
。 -
開啟新的 CloudShell 索引標籤。
-
透過輸入 切換到 Z Shell
zsh
,然後按 Enter 。
無法存取 中的 Amazon Q CLI功能 AWS CloudShell
問題:當您嘗試在 中使用 Amazon Q CLI功能 CloudShell時,例如內嵌建議、聊天和翻譯,您會取得 AccessDeniedError
。
原因 :您沒有所需的IAM許可。
解決方案:請求您的管理員為您提供必要的IAM許可。如需詳細資訊,請參閱 Amazon Q 開發人員使用者指南 中的 Amazon Q 開發人員的身分型政策範例。