故障排除 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 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 网站安装更新版本的 Edge 浏览器。

回到顶部

箭头键在中无法正常工作 PowerShell

问题:在正常操作中,您可以使用箭头键浏览命令行界面,并来回扫描命令历史记录。但是,在某些版本的 PowerShell on 中按箭头键时 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 套接字会导致无法启动 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,你会收到错误消息 “内部服务器错误”。

原因:以下是此问题的可能原因:

  • 用于刷新凭据的putCredentialsAPI调 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 内联建议所需的配置。

解决方案:要解决此问题,请执行以下步骤:

  1. 运行 q integrations install dotfiles

  2. 打开一个新 CloudShell 选项卡。

  3. 通过键入切换到 Z shellzsh,然后按 Enter

无法访问 Amazon Q 中的CLI功能 AWS CloudShell

问题:当你尝试在中 CloudShell使用 Amazon Q CLI 功能(例如内联建议、聊天和翻译)时,你会得到AccessDeniedError

原因:您没有所需的IAM权限。

解决方案:请您的管理员为您提供必要的IAM权限。有关更多信息,请参阅 Amazon Q 开发者用户指南中的 Amazon Q 开发者基于身份的策略示例