本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
故障排除 AWS CloudShell
使用时 AWS CloudShell,您可能会遇到问题,例如使用 shell 命令行界面启动 CloudShell 或执行关键任务时。本章介绍的信息涵盖如何解决您可能遇到的一些常见问题。
有关各种问题的答案 CloudShell,请参阅AWS CloudShell FAQs
纠正错误
当您遇到以下任何索引错误时,可以使用以下解决方案来解决这些错误。
主题
- 错误:“无法启动环境。要重试,请刷新浏览器或通过选择 “操作,重新启动” 来重新启动 AWS CloudShell
- 错误:“无法启动环境。您没有所需的权限。请您的IAM管理员授予对 AWS CloudShell” 的访问权限
- 无法访问 AWS CloudShell 命令行
- 无法 ping 外部 IP 地址
- 准备您的终端时遇到了一些问题
- 箭头键在中无法正常工作 PowerShell
- 不支持的 Web 套接字会导致无法启动 CloudShell 会话
- 无法导入 AWSPowerShell.NetCore 模块
- 使用 Docker 时未运行 AWS CloudShell
- Docker 的磁盘空间已经用完了
- docker push正在超时并且一直在重试
- 无法VPC从我的 AWS CloudShell VPC环境中访问其中的资源
- ENI AWS CloudShell 用于我的VPC环境的未清理干净
- 仅CreateEnvironment有权访问VPC环境的用户也可以访问公共 AWS CloudShell 环境
- 证书在中不起作用 CloudShell
- 无法访问中的 Amazon Q 内联建议 AWS CloudShell
- 无法访问 Amazon Q 中的CLI功能 AWS CloudShell
错误:“无法启动环境。要重试,请刷新浏览器或通过选择 “操作,重新启动” 来重新启动 AWS CloudShell
问题:当您尝试 AWS CloudShell 从启动时 AWS Management Console,即使您已获得IAM管理员所需的权限,并且您已刷新浏览器或重新 CloudShell启动,您仍会被拒绝访问。
解决方案:联系 AWS Support
(回到顶部)
错误:“无法启动环境。您没有所需的权限。请您的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 amazon.com
)运行 ping 命令时,您会收到以下消息。
ping: socket: Operation not permitted
原因:ping 实用程序使用 Internet 控制消息协议 (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 会话,并且浏览器会显示一条错误消息。
原因:与早期版本 AWS CloudShell 的 Microsoft Edge 不兼容。您可以使用支持的浏览器的最新四个主要版本进行访问 AWS CloudShell 。
解决方案:从 Microsoft 网站
(回到顶部)
箭头键在中无法正常工作 PowerShell
问题:在正常操作中,您可以使用箭头键浏览命令行界面,并来回扫描命令历史记录。但是,在某些版本的 PowerShell on 中按箭头键时 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 套接字会导致无法启动 CloudShell 会话
问题:尝试启动时 AWS CloudShell,您会反复收到以下消息:Failed to open sessions : Timed out while opening
the session
。
原因: CloudShell 取决于WebSocket 协议, 它允许在您的Web浏览器和之间进行双向交互式通信 AWS CloudShell. 如果您在专用网络中使用浏览器,则代理服务器和防火墙可能有助于安全访问互联网。 WebSocket 通信通常可以毫无问题地通过代理服务器。但是,在某些情况下,代理服务器 WebSockets 无法正常工作。如果出现此问题,则 CloudShell 无法启动 shell 会话,连接尝试最终会超时。
解决方案:连接超时可能是由不支持 WebSockets以外的其他问题引起的。如果是这种情况,请先刷新 CloudShell 命令行界面所在的浏览器窗口。
如果刷新后仍然出现超时错误,请参阅代理服务器的文档。并且,请确保您的代理服务器已配置为允许 WebSocket。或者,请与您网络的系统管理员联系。
注意
假设您想通过特定许可名单来定义精细权限。URLs您可以添加 AWS Systems Manager 会话用来打开用于发送输入和接收输出的 WebSocket连接的一部分。URL您的 AWS CloudShell 命令将发送到该 Systems Manager 会话。
Systems Manager 使用的格式是
wss://ssmmessages.region.amazonaws.com/v1/data-channel/session-id?stream=(input|output)
。 StreamUrl
该区域表示支持的区域标 AWS 区域 识符 AWS Systems Manager。例如,us-east-2
是美国东部(俄亥俄州)区域的区域标识符。
由于会话 ID 是在特定 Systems Manager 会话成功启动后创建的,因此您只能指定wss://ssmmessages.region.amazonaws.com
何时更新许可名单。URL有关更多信息,请参阅《AWS Systems Manager API参考》中的StartSession操作。
(回到顶部)
无法导入 AWSPowerShell.NetCore
模块
问题:当您导入时 AWSPowerShell. NetCore在 b PowerShell y 的模块中Import-Module -Name AWSPowerShell.NetCore
,您会收到以下错误消息:
导入模块:指定的模块 '。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()
有关更多信息,请参阅 AWS Tools for PowerShell的版本 4 公告
(回到顶部)
使用 Docker 时未运行 AWS CloudShell
问题:使用 AWS CloudShell Docker 时无法正常运行。您会收到以下错误消息:docker: Cannot connect to the
Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
.
解决方案:尝试重启您的环境。当您在不支持 Docker 的 GovCloud区域 AWS CloudShell 中运行 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
rmi
来删除未使用的 Docker 镜像。你应该知道 Docker 在环境中的空间有限,有关 Docker 的更多信息,请参阅 Dock er 文档
docker push
正在超时并且一直在重试
问题:当你运行时docker push
,它会超时,并且会继续重试,但没有成功。
原因:这可能是由于缺少权限、推送到错误的存储库或缺乏身份验证所致。
解决方案:要尝试解决此问题,请确保您推送到正确的存储库。运行docker
login
以正确进行身份验证。确保您拥有推送到 Amazon ECR 存储库所需的所有权限。
无法VPC从我的 AWS CloudShell VPC环境中访问其中的资源
问题:在使用我的 AWS CloudShell VPC环境VPC时无法访问资源。
原因:您的 AWS CloudShell VPC环境继承了您的VPC网络设置。
解决方案:要解决此问题,请确保VPC已正确设置您的资源访问权限。有关更多信息,请参阅VPC文档 Connect 您的VPC连接到其他网络以及网络访问分析器文档 Network Access Analyzer。您可以通过在 AWS CloudShell VPC环境中的命令`ip -a`行提示符下或在VPC控制台页面上运行命令来找到环境正在使用IPv4的地址。
ENI AWS CloudShell 用于我的VPC环境的未清理干净
问题:无法清理我的VPC环境中ENI使用 AWS CloudShell 的。
原因:您的角色未启用ec2:DeleteNetworkInterface
权限。
解决方案:要解决此问题,请确保您的角色已启用ec2:DeleteNetworkInterface
权限,如以下示例脚本所示:
{ "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } }, "Resource": "arn:aws:ec2:*:*:network-interface/*" }
仅CreateEnvironment
有权访问VPC环境的用户也可以访问公共 AWS CloudShell 环境
问题:仅限VPC环境访问CreateEnvironment
权限的用户也可以访问公共 AWS CloudShell 环境。
原因:当您仅限制创建VPC环境的CreateEnvironment
权限并且已经创建了公共环境时,您将保留对现有公共 CloudShell环境的访问权限,直到使用 Web 用户界面删除该环境。但是,如果您 CloudShell 以前从未使用过,则将无法访问公共环境。
解决方案:要限制对公共 AWS CloudShell 环境的访问,IAM管理员必须先使用限制更新IAM策略,然后用户必须使用 AWS CloudShell Web 用户界面手动删除现有的公共环境。(操作 → 删除 CloudShell 环境)。
证书在中不起作用 CloudShell
问题:当你尝试 AWS CLI
拨打来自的电话时 CloudShell,你会收到错误消息 “内部服务器错误
”。
原因:以下是此问题的可能原因:
-
用于刷新凭据的
putCredentials
API调 CloudShell 用失败。由于缺乏putCredentials
操作IAM权限,API呼叫可能会失败。有关更多信息,请参阅 访问权限 AWS 服务。如果您已经拥有putCredentials
操作IAM权限,则由于网络问题或操作问题,API呼叫可能会失败 CloudShell。 -
您的凭证已失效,因为 AWS 控制台会话已过期,但您的 CloudShell环境仍在运行。当您的凭证失效时, CloudShell无法拨打任何API电话。
解决方案:如果您已经拥有所需的putCredentials
操作IAM权限,请尝试刷新网页。如果问题未得到解决,而您仍然收到错误,请联系 Su AWS pport
无法访问中的 Amazon Q 内联建议 AWS CloudShell
问题:切换到 Z shell 后,在 CloudShell终端中看不到内联建议。
原因:如果您使用的是现有 CloudShell 环境,则您的点文件可能不包含 Amazon Q 内联建议所需的配置。
解决方案:要解决此问题,请执行以下步骤:
-
运行
q integrations install dotfiles
。 -
打开一个新 CloudShell 选项卡。
-
通过键入切换到 Z shell
zsh
,然后按 Enter。
无法访问 Amazon Q 中的CLI功能 AWS CloudShell
问题:当你尝试在中 CloudShell使用 Amazon Q CLI 功能(例如内联建议、聊天和翻译)时,你会得到AccessDeniedError
。
原因:您没有所需的IAM权限。
解决方案:请您的管理员为您提供必要的IAM权限。有关更多信息,请参阅 Amazon Q 开发者用户指南中的 Amazon Q 开发者基于身份的策略示例。