本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
故障排除 AWS CloudShell
使用时 AWS CloudShell,您可能会遇到问题,例如使用 shell 命令行界面启动 CloudShell 或执行关键任务时。本章介绍的信息涵盖如何解决您可能遇到的一些常见问题。
有关各种问题的答案 CloudShell,请参阅AWS CloudShell 常见问题解答
纠正错误
当您遇到以下任何索引错误时,可以使用以下解决方案来解决这些错误。
主题
- 无法启动环境。要重试,请刷新浏览器或通过选择 “操作”、“重新启动” 来重新启动 AWS CloudShell
- 无法启动环境。您没有所需的权限。要求您的 IAM 管理员授予 AWS CloudShell的访问权限
- 无法访问 AWS CloudShell 命令行
- 无法 ping 外部 IP 地址
- 准备您的终端时遇到了一些问题
- 箭头键在中无法正常工作 PowerShell
- 不支持的 Web 套接字会导致无法启动 CloudShell 会话
- 无法导入 AWSPowerShell.NetCore 模块
- 使用 Docker 时未运行 AWS CloudShell
- Docker 的磁盘空间已经用完了
- docker push正在超时并且一直在重试
- 无法从我的 VPC 环境中访问 V AWS CloudShell PC 内的资源
- AWS CloudShell 用于我的 VPC 环境的 ENI 未被清除
- 仅具有 VPC 环境CreateEnvironment权限的用户也可以访问公共 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 实用程序无法在外壳的计算环境中运行。
解决方案:由于中不支持 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。或者,请与您网络的系统管理员联系。
注意
假设您要通过允许列出特定 URL 来定义精细权限。您可以添加 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 会话成功启动后创建的,因此您只能在更新 URL 允许列表时指定 wss://ssmmessages.region.amazonaws.com
。有关更多信息,请参阅 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 的区域 AWS CloudShell 中运行 Docker 时,可能会出现此错误消息。确保您在支持的区域中运行 Docker,有关哪些区域支持使用 Docker 容器的信息 AWS CloudShell,请参阅 Docker 区域。
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 环境中访问 V AWS CloudShell PC 内的资源
问题:使用我的 VPC 环境时无法访问 V AWS CloudShell PC 内的资源。
原因:您的 AWS CloudShell VPC 环境继承了 VPC 的网络设置。
解决方案:要解决此问题,请确保正确设置您的 VPC 以访问您的资源。有关更多信息,请参阅 VPC 文档将您的 VPC 连接到其他网络以及网络访问分析器文档网络访问分析器。您可以通过在环境中的命令行提示符下或`ip -a`在 AWS CloudShell VPC 控制台页面上运行命令来找到 VPC 环境正在使用的 IPv4 地址。
AWS CloudShell 用于我的 VPC 环境的 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
权限,并且您已经创建了公共环境,则在使用 Web 用户界面删除该 CloudShell环境之前,您将保留对现有公共环境的访问权限。但是,如果您 CloudShell 以前从未使用过,则将无法访问公共环境。
解决方案:要限制对公共 AWS CloudShell 环境的访问,IAM 管理员必须先使用限制更新 IAM 策略,然后用户必须使用 AWS CloudShell Web 用户界面手动删除现有的公共环境。(操作 → 删除 CloudShell 环境)。