故障排除 AWS Cloud9 - AWS Cloud9

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

故障排除 AWS Cloud9

使用以下信息来识别和解决 AWS Cloud9 的相关问题。

如果没有列出您的问题,或者您需要更多帮助,请参阅 AWS Cloud9 开发论坛。当您进入此论坛时,可能会要求您登录。您也可以直接联系我们

Installer(安装程序)

以下部分概述了与 AWS Cloud9 安装程序相关的故障排除问题。

AWS Cloud9 安装程序挂起或失败

问题:当您下载并运行 AWS Cloud9 安装程序时,出现一个或多个错误消息,并且安装程序脚本未显示 Done

原因:AWS Cloud9 安装程序遇到一个或多个错误,由于无法从中恢复,所以失败。

解决方案:有关更多信息,请参阅AWS Cloud9 安装程序故障排除。请参阅常见问题、可能原因及提供的建议解决方案。

如果显示以下信息,则表示 AWS Cloud9 安装程序 未完成:“Package Cloud9 IDE 1(程序包 Cloud9 IDE 1)”

问题:在创建 SSH 开发环境的过程中,AWS Cloud9 安装到您的现有 Amazon EC2 实例或您自己的服务器上。如果 AWS Cloud9 Installer 对话框中显示以下消息,则表示安装已暂停:“Package Cloud9 IDE 1 (程序包 Cloud9 IDE 1)”。如果您选择 Cancel (取消),则会显示以下消息:“Installation Failed (安装失败)”。当无法在客户的 SSH 主机上安装 AWS Cloud9 程序包时,将显示此错误。

原因:SSH 主机要求您安装 Node.js。我们建议安装主机操作系统支持的最新版本的 Node.js。如果您的主机上有 AWS Cloud9 不支持的 Node.js 版本,则可能会出现安装错误。

建议的解决方案:在您的 SSH 主机上安装 AWS Cloud9 支持的 Node.js 版本。

无法安装依赖项

问题:AWS Cloud9 需要访问互联网方可下载依赖项。

可能的原因:

  • 如果您的 AWS Cloud9 环境使用代理访问互联网,则 AWS Cloud9 需要代理详细信息以便安装依赖项。如果您没有将代理人详细信息提供给 AWS Cloud9,则会出现此错误。

  • 另一个原因可能是您的环境不允许出站流量。

建议的解决方案:

  • 要向 AWS Cloud9 提供代理详细信息,请将以下代码附加到您的环境 ~/.bashrc 文件中:

    export http_proxy=[proxy url for http] export https_proxy=[proxy url for https] #Certificate Authority used by your proxy export NODE_EXTRA_CA_CERTS=[path_to_pem_certificate]

    例如,如果您的 HTTP 代理 URL 是 https://172.31.26.80:3128,而您的 HTTP 代理 URL 是 https://172.31.26.80:3129,则将以下行添加到您的 ~/.bashrc 文件中,并设将 NODE_EXTRA_CA_CERTS 设置为 PEM 格式的证书颁发机构文件的路径。有关此变量的更多信息,请参阅 https://nodejs.org/api/cli.html#node_extra_ca_certsfile

    export http_proxy=http://172.31.26.80:3128 export https_proxy=https://172.31.26.80:3129 export NODE_EXTRA_CA_CERTS=[path_to_pem_certificate]
  • 如果您使用的是非入口 Amazon EC2 实例,则必须确保为 Amazon S3 配置了 Amazon VPC 端点。有关更多信息,请参阅为 Amazon S3 配置 VPC 端点以下载依赖项

SSH 环境错误:“需要 Python 版本 3 才能安装 pty.js”

问题:在您打开 AWS Cloud9 SSH 开发环境后,AWS Cloud9 IDE 中的终端会显示一条以“需要 Python 版本 3 才能安装 pty.js”开头的消息。

原因:要按预期工作,SSH 环境需要安装 Python 版本 3。

解决方案:在环境中安装 Python 版本 3。要检查您的版本,请在您服务器的终端上运行命令 python --version。要在您的服务器上安装 Python 3,请参阅以下内容之一:

AWS Cloud9环境

以下部分概述了与 AWS Cloud9 环境相关的故障排除问题。

环境创建错误:“我们无法创建 EC2 实例……”

问题:当您尝试创建AWS Cloud9 开发环境时,将显示一条消息,指出“We are unable to create EC2 instances in your account during account verification and activation.(我们无法在您的账户中创建 EC2 实例,因为您的账户处于账户验证和激活期间。)”

原因:AWS 当前正在验证和激活您的 AWS 账户。在激活完成之前(可能需要最多 24 小时),您无法创建此环境或其他环境。

解决方案:稍后重新尝试创建环境。如果您在 24 小时后仍收到此消息,请联系支持。除此之外,重要的是要知道,即使创建环境的尝试失败,AWS CloudFormation 也会在您的账户中创建相关堆栈。这些堆栈计入您账户的堆栈创建配额。为了避免耗尽堆栈创建配额,您可以安全地删除这些失败的堆栈。有关更多信息,请参阅 AWS CloudFormation 用户指南中的在 AWS CloudFormation 控制台上删除堆栈

环境创建错误:“无权执行 sts:AssumeRole”

问题:尝试创建新环境时,您看到此错误:“无权执行 sts:AssumeRole”,并且未创建环境。

可能原因:AWS Cloud9 服务相关角色在您的 AWS 账户 账户中不存在。

建议的解决方案:在您的 AWS 账户中创建 AWS Cloud9 服务相关角色。您可以使用以下命令在 AWS Command Line Interface(AWS CLI)或 AWS CloudShell 中进行这项操作。

aws iam create-service-linked-role --aws-service-name cloud9.amazonaws.com # For the AWS CLI. iam create-service-linked-role --aws-service-name cloud9.amazonaws.com # For the aws-shell.

如果您无法执行此操作,请咨询您的 AWS 账户管理员。

运行此命令后,请尝试再次创建环境。

联合身份无法创建环境

问题:当您尝试使用 AWS 联合身份创建 AWS Cloud9 开发环境时,系统会显示一条访问错误消息并且不会创建环境。

原因:AWS Cloud9 使用服务相关角色。在首次使用 iam:CreateServiceLinkedRole 调用在账户中创建环境时,会创建服务相关角色。但联合身份用户无法调用 IAM API。有关更多信息,请参阅 AWS Security Token Service API 参考中的 GetFederationToken

解决方案:让 AWS 账户 管理员在 IAM 控制台中或使用 AWS Command Line Interface (AWS CLI) 运行以下命令,为 AWS Cloud9 创建服务相关角色:

aws iam create-service-linked-role --aws-service-name cloud9.amazonaws.com

或此带 AWS-shell 的命令:

iam create-service-linked-role --aws-service-name cloud9.amazonaws.com

有关更多信息,请参阅 IAM 用户指南 中的使用服务相关角色

控制台错误:“用户无权对资源执行操作”

问题:当您尝试使用 AWS Cloud9 控制台创建或管理 AWS Cloud9 开发环境时,您会看到一个错误,其中包含类似于“用户 arn:aws:iam::123456789012:user/MyUser 无权对资源 arn:aws:cloud9:us-east-2:123456789012:environment:12a34567b8cd9012345ef67abcd890e1 执行 cloud9:action”的短语,其中:

  • arn:aws:iam::123456789012:user/MyUser 是请求用户的 Amazon Resource Name (ARN)。

  • action 是用户请求的操作的名称。

  • arn:aws:cloud9:us-east-2:123456789012:environment:12a34567b8cd9012345ef67abcd890e1 是用户请求用于运行操作的环境的 ARN。

原因:您在 AWS Cloud9 控制台中登录的用户没有正确的 AWS 访问权限,无法执行此操作。

解决方案:确保用户具有正确的 AWS 访问权限,然后再次尝试执行此操作。有关更多信息,请参阅下列内容:

无法连接到环境

问题:用户无法连接到环境,并且在连接阶段停滞不前。

原因:如果您更改 ~/ .ssh/authorized_keys 文件的权限,从该文件中删除 AWS Cloud9 密钥,或者完全删除该文件,可能会出现此问题。

解决方案:请勿删除此文件。如果您将其删除,则必须重新创建环境,并且可能需要将现有环境的 EBS 卷附加到新的 EC2 环境。这是为了找回丢失的数据。如果缺少权限,请确保文件具有 Read-Write 权限。这是为了允许 SSH 进程守护程序读取它。

无法打开环境

问题:尝试打开环境时,IDE 在超过五分钟的时间内都未显示。

可能的原因:

  • 登录到 AWS Cloud9 控制台的 IAM 用户不具备打开环境所需的 AWS 访问权限。

  • 如果环境与 AWS 云计算实例(例如 Amazon EC2 实例)关联,则可能存在以下情况:

    • 与实例关联的 VPC 未设置为适用于 AWS Cloud9 的正确设置。

    • 在 AWS Cloud9 尝试连接此实例时,实例正在转换状态或自动状态检查失败。

  • 如果环境是 SSH 环境,则关联的云计算实例或者您自己的服务器未正确设置为允许 AWS Cloud9 访问它。

建议的解决方案:

  • 确保登录到 AWS Cloud9 控制台的 IAM 用户具备打开环境所需的 AWS 访问权限。然后尝试再次打开环境。有关更多信息,请参阅以下内容或咨询您的 AWS 账户管理员:

    如果已登录的 IAM 用户仍无法打开环境,请尝试注销,然后以 AWS 账户 根用户或该账户中的管理员用户的身份重新登录。然后尝试再次打开环境。如果您无法以这种方式打开环境,问题最有可能与 IAM 用户的访问权限有关。

  • 如果环境与 AWS 云计算实例(例如 Amazon EC2 实例)关联,请执行以下操作:

    • 确保与实例关联的 VPC 设置为适用于 AWS Cloud9 的正确设置,然后再次尝试打开环境。有关更多信息,请参阅适用于 AWS Cloud9 Amazon VPC 要求

      如果与 AWS 云计算实例关联的 VPC 已设置为适用于 AWS Cloud9 的正确设置,但您仍无法打开环境,则该实例的安全组可能在阻止访问 AWS Cloud9。仅作为一种故障排除技术,请检查安全组,以确保至少允许所有 IP 地址(Anywhere0.0.0.0/0)的入站 SSH 流量通过端口 22。有关说明,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的描述您的安全组更新安全组规则

      有关其他 VPC 故障排除步骤,请在 YouTube 网站上观看相关的 5 分钟视频 AWS Knowledge Center Videos: What can I check if I cannot connect to an instance in a VPC?(AWS 知识中心视频:如果无法连接到 VPC 中的实例,则应检查哪些内容?)。

      警告

      完成故障排除后,请确保将入站规则设置为适当的地址范围。有关更多信息,请参阅AWS Cloud9 的入站 SSH IP 地址范围

    • 重新启动实例,确保实例正在运行,并已通过所有系统检查,然后尝试再次打开环境。有关详细信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的重启您的实例查看状态检查

  • 如果环境是 SSH 环境,请确保关联的云计算实例或者您自己的服务器未正确设置为允许 AWS Cloud9 访问它。然后尝试再次打开环境。有关更多信息,请参阅SSH 环境主机要求

无法打开 AWS Cloud9 环境:“This environment cannot be currently accessed by collaborators。Please wait until the removal of managed temporary credentials is complete, or contact the owner of this environment.”(协作者当前无法访问此环境。请等待托管式临时凭证删除完成,或联系此环境的拥有者。)

问题:如果新的协作者由环境拥有者以外的人添加到环境中,则 AWS 托管式临时凭证将被禁用。删除 ~/.aws/credentials 文件时将禁用凭证。在删除 ~/.aws/credentials 文件的过程中,新的协作者无法访问 AWS Cloud9 环境。

原因:在删除 AWS 托管式临时凭证期间,防止环境访问是一种安全措施。这允许环境拥有者确认只有受信任的协作者方可访问托管式凭证。如果满足协作者列表有效,则环境拥有者可以重新启用托管式凭证,以便共享。有关更多信息,请参阅控制对 AWS 托管式临时凭证的访问

建议的解决方案:请等待 ~/.aws/credentials 文件完全删除,然后再次尝试打开 AWS Cloud9 环境。凭证到期的最长等待时间为 15 分钟。或者,请求环境拥有者重新启用或禁用托管式临时凭证。重新启用或禁用凭证后,协作者可以立即访问环境。通过将托管式凭证的状态切换为“ENABLED”(启用)或“DISABLED”(禁用),环境拥有者可确保凭证不会保持在中间状态。中间统计数据可以阻止协作者访问环境。

注意

假设环境所有者和合作者属于同一 AWS 账户,则协作者可以通过在控制台上的 Your environments(您的环境)页面中查看环境卡片,来确定要联系的环境拥有者。环境拥有者也在 Environment details(环境详细信息)页面中列出。

环境删除错误:“One or more environments failed to delete(一个或多个环境删除失败)”

问题:当您在 AWS Cloud9 控制台中尝试删除一个或多个环境时,会显示一条消息,说明“one or more environments failed to delete(未能删除一个或多个环境)”,并且至少有一个环境未被删除。

可能原因:AWS CloudFormation 在删除一个或多个环境时可能遇到问题。AWS Cloud9 依赖于 AWS CloudFormation 来创建和删除环境。

建议的解决方案:尝试使用 AWS CloudFormation 删除各个未删除的环境。

  1. 打开 AWS CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation

  2. 在 AWS 导航栏中,选择环境所在的 AWS 区域。

  3. 在 AWS CloudFormation 堆栈列表中,选择 Stack name(堆栈名称)包含未删除的环境名称并且 Status(状态)DELETE_FAILED 的条目。例如,如果环境名称为 my-demo-environment,请选择名称以 aws-cloud9-my-demo-environment 开头的堆栈。(选择环境名称旁的复选框或选项,而不是环境名称本身。)

  4. 选择 Actions (操作)、Delete Stack (删除堆栈)

  5. 在系统提示时,选择 Yes, Delete (是,删除)

删除堆栈的过程可能需要几分钟时间。

如果堆栈从列表中消失,则环境现已删除。

如果在几分钟后,堆栈仍显示为 DELETE_FAILED,则环境仍未删除。您可以尝试手动删除各个失败的堆栈资源。

注意

手动删除失败的堆栈资源不会将堆栈本身从您的 AWS 账户 中删除。

要手动删除这些资源,请执行以下操作。在 AWS CloudFormation 控制台中,选择出现故障的堆栈,然后选择 Resources(资源)部分。在 AWS 中转到此列表中各个资源的控制台,然后使用该控制台来删除资源。

在 AWS Cloud9 IDE 中更改环境的超时时间

问题:用户想要更新 Amazon EC2 环境的超时时间。

原因:默认超时时间为 30 分钟。对于某些用户来说,这个时间可能太短了。

建议的解决方案:

  1. 打开要配置的环境。

  2. AWS Cloud9 IDE 中,在菜单栏上依次选择 AWS Cloud9首选项

  3. 首选项窗口中,滚动至 Amazon EC2 实例部分。

  4. 从可用列表中选择超时值并更新。

在 AWS Toolkit 中本地运行 SAM 应用程序时发生错误,因为 AWS Cloud9 环境没有足够的磁盘空间

问题:当您使用 AWS Toolkit 为 SAM 模板定义的应用程序运行 AWS SAM CLI 命令时出现错误。

可能的原因:当您使用 AWS Toolkit 在本地运行和调试无服务器应用程序时,AWS SAM 使用 Docker 映像。这些映像提供一个运行时环境和构建工具,它们可以模拟您计划部署到的 Lambda 环境。

但是,如果您的环境缺乏足够的磁盘空间,则无法构建提供这些功能的 Docker 映像,并且您的本地 SAM 应用程序将无法运行。如果发生这种情况,您可能会在 Output(输出)选项卡中收到与以下内容类似的错误。

Error: Could not find amazon/aws-sam-cli-emulation-image-python3.7:rapid-1.18.1 image locally and failed to pull it from docker.

此错误与使用 Python 运行时构建的 SAM 应用程序有关。根据您为应用程序选择的运行时,您收到的消息可能略有不同。

建议的解决方案:释放环境中的磁盘空间,以构建 Docker 映像。通过在 IDE 的终端中运行以下命令来删除所有未使用的 Docker 映像。

docker image prune -a

如果由于磁盘空间限制而反复出现 SAM CLI 命令问题,请切换到使用不同实例类型的开发环境。

回到顶部

无法使用早期版本的 Microsoft Edge 浏览器加载 IDE

问题:尝试使用 Microsoft Edge 浏览器加载 AWS Cloud9 IDE 时会返回 HTTP403: FORBIDDEN 错误。

可能的原因:AWS Cloud9 IDE 不支持某些旧版本的 Microsoft Edge。

建议的解决方案:要更新浏览器,请选择 Microsoft Edge 工具栏中的省略号(...)按钮。从菜单中选择 Settings(设置),然后选择 About Microsoft Edge(关于 Microsoft Edge)。如果需要更新,则会自动下载并安装。

回到顶部

无法在 AWS Cloud9 IDE 文件资源管理器中创建子文件夹结构 /home/ec2-user/environment/home/ec2-user/environment

问题:在 AWS Cloud9 IDE 文件资源管理器中创建子文件夹结构 /home/ec2-user/environment/home/ec2-user/environment 时,您收到一条错误消息,指出无法打开此目录。

可能的原因:目前无法使用 AWS Cloud9 IDE 的文件系统在同名文件夹中创建子文件夹结构 /home/ec2-user/environment。您将无法从 AWS Cloud9 IDE 文件资源管理器访问此目录中的任何文件,但您可以使用命令行访问它们。此问题仅影响文件路径 /home/ec2-user/environment/home/ec2-user/environment/test/home/ec2-user/environment/home/ec2-user/environment/test 等文件路径应该有效。这是一个已知问题,仅影响 AWS Cloud9 IDE File Explorer。

建议的解决方案:使用不同的文件名和结构。

回到顶部

无法在 AWS Cloud9 IDE for CodeCatalyst 的文件资源管理器中创建子文件夹结构 /projects/projects

问题:在 AWS Cloud9 IDE for CodeCatalyst 文件资源管理器中创建子文件夹结构 /projects/projects 时,您会收到一条错误消息,指出无法打开此目录。

可能的原因:目前无法使用 AWS Cloud9 IDE for CodeCatalyst 文件资源管理器在同名文件夹中创建子文件夹结构 /projects。您将无法从 AWS Cloud9 IDE 文件资源管理器访问此目录中的任何文件,但您可以使用命令行访问它们。此问题仅影响文件路径 /projects/projects/test/projects/projects/test 等此类文件路径应有效。这是一个已知问题,仅影响 AWS Cloud9 IDE for CodeCatalyst 文件资源管理器。

建议的解决方案:使用不同的文件名和结构。

回到顶部

由于 tmux 会话错误,无法与 AWS Cloud9 中的终端窗口交互

问题:当您尝试在 AWS Cloud9 中启动新的终端窗口时,预期的命令行界面不可用。没有命令提示符,您无法输入文本。将返回 tmux: need UTF-8 locale (LC_CTYPE)invalid LC_ALL, LC_CTYPE or LANG 等错误消息。

可能的原因:终端无响应可能是由 tmux 错误引起的。AWS Cloud9 使用 tmux 实用程序。这样,即使在页面重新加载或重新连接到开发环境时,终端中显示的信息也会保持不变。

tmux 会话中,终端窗口中显示的内容由客户端处理。客户端与可以管理多个会话的服务器通信。服务器和客户端通过位于 tmp 文件夹中的套接字进行通信。如果您的开发环境中缺少该 tmp 文件夹或对其应用了过于严格的权限,则 tmux 会话将无法运行。如果发生这种情况,IDE 中的终端窗口将变得没有响应。

建议的解决方案:如果 tmux 错误阻止您与终端窗口进行交互,请使用另一种方法来创建具有正确权限的 tmp 文件夹。这样一来就可以运行tmux 会话。一种解决方案是导出 .bash_profile 中或 .bashrc 文件中的 LC_CTYPE。另一个推荐解决方案是使用 AWS Systems Manager 设置主机管理配置。这允许通过 Amazon EC2 控制台访问相关实例。

设置主机管理

  1. 首先,在 AWS Cloud9 控制台中,找到您的环境实例的名称。为此,您可以选择 Your environments(您的环境)页面中的相关面板并选择 View details(查看详细信息)。在 Environment details(环境详细信息)页面上,选择 Go to Instance(转到实例)。在 Amazon EC2 控制台中,确认需要访问的实例的名称。

  2. 现在转到 AWS Systems Manager 控制台,然后在导航窗格中选择 Quick Setup(快速设置)。

  3. Quick Setup(快速设置)页面上,选择 Create(创建)。

  4. 对于 Configuration types(配置类型),请转到 Host Management(主机管理),然后选择 Create(创建)。

  5. 对于 Customize Host Management configuration options(自定义主机管理配置选项),在 Targets(目标)部分中,选择 Manual(手动)。

  6. 选择要访问的 EC2 实例,然后选择 Create(创建)。

连接到实例并运行命令

注意

以下步骤适用于新的 EC2 控制台。

  1. 在 Amazon EC2 控制台的导航窗格中,选择 Instances(实例),然后选择要连接的实例。

  2. 选择连接

    如果 Connect(连接)未激活,您可能需要先启动实例。

  3. Connect to your instance(连接到您的实例)窗格中,对于 Connection method(连接方法),请选择 Session Manager(会话管理器),然后选择 Connect(连接)。

  4. 在出现的终端会话窗口中,输入以下命令。这些命令会创建具有正确权限的 tmp 文件夹,以便 tmux 套接字可用。

    sudo mkdir /tmp sudo chmod 777 /tmp sudo rmdir /tmp/tmux-*

回到顶部

Amazon EC2

以下部分概述了与 Amazon EC2 相关的故障排除问题。

Amazon EC2 实例未自动更新

问题:最近的系统更新未自动应用到连接到 AWS Cloud9 开发环境的 Amazon EC2 实例。

原因:自动应用最近的系统更新可能导致您的代码或 Amazon EC2 实例在您事先不知情或未经您批准的情况下以非预期方式运行。

建议的解决方案:

按照适用于 Linux 实例的 Amazon EC2 用户指南中的更新实例软件中的说明,定期将系统更新应用到 Amazon EC2 实例。

要在实例上运行命令,您可以在来自连接到实例的环境中的 AWS Cloud9 IDE 中使用终端会话。

或者,您可以使用 SSH 远程访问实用程序(如 ssh 或 PuTTY)连接到该实例。要执行此操作,请在您的本地计算机中,使用诸如 ssh-keygen 或 PuTTYgen 之类的 SSH 密钥对创建实用程序。使用来自连接到实例的环境的 AWS Cloud9 IDE,将生成的公有密钥存储在实例上。然后,使用 SSH 远程访问实用程序以及生成的私有密钥访问该实例。有关更多信息,请参阅您的实用程序的文档。

EC2 环境中的 AWS CLI 或 AWS-shell 错误:“The security token included in the request is invalid”(请求中包含的安全令牌无效)

问题:当您尝试使用 AWS Command Line Interface (AWS CLI) 或 AWS-shell 在用于 EC2 环境的 AWS Cloud9 IDE 中运行命令时,显示一个错误:“The security token included in the request is invalid”(请求中包含的安全令牌无效)。

原因:如果您启用了 AWS 托管式临时凭证并且发生了以下任一情况,可能会导致安全令牌无效:

  • 您尝试运行 AWS 托管式临时凭证不允许的命令。有关允许的命令列表,请参阅AWS 托管临时证书支持的操作

  • AWS 托管式临时凭证会在 15 分钟后自动过期。

  • 共享环境的 AWS 托管式临时凭证已停用,因为新成员是由环境拥有者以外的其他人添加的。

建议的解决方案:

  • 仅运行 AWS 托管式临时凭证允许的命令。如果您需要运行 AWS 托管式临时凭证不允许的命令,请使用一组永久凭证配置环境中的 AWS CLI 或 AWS-shell,这样可消除此限制。有关说明,请参阅 在环境中创建和存储永久访问凭证

  • 对于停用或过期的凭证,请确保环境拥有者能打开环境,以便 AWS Cloud9 可以刷新环境中的临时凭证。有关更多信息,请参阅控制对 AWS 托管式临时凭证的访问

无法连接到 EC2 环境,因为 VPC 的 IP 地址被 Docker 使用

问题:对于 EC2 环境,如果您将 EC2 实例启动到使用 IPv4 无类别域间路由 (CIDR) 块 172.17.0.0/16 的 Amazon VPC 中,则在您尝试打开该环境时连接可能会停止。

原因:Docker 使用了一种名为网桥网络的链路层设备,它使连接到同一网桥网络的容器能够进行通信。AWS Cloud9 创建了使用默认网桥进行容器通信的容器。默认网桥通常使用 172.17.0.0/16 子网进行容器联网。

如果环境实例的 VPC 子网使用的地址范围与 Docker 使用的相同,则可能会出现 IP 地址冲突。因此,当 AWS Cloud9 尝试连接到其实例时,该连接由网关路由表路由到 Docker 网桥。这防止 AWS Cloud9 连接到支持开发环境的 EC2 实例。

建议的解决方案:要解决由 Amazon VPC 和 Docker 使用相同 IPv4 CIDR 地址块导致的 IP 地址冲突,请为支持您的 EC2 环境的实例配置一个新的 VPC。为这个新的 VPC,配置一个不同于 172.17.0.0/16 的 CIDR 块。(您不能更改现有 VPC 或子网的 IP 地址范围。)

有关更多配置信息,请参阅 Amazon VPC 用户指南 中的 VPC 和子网大小调整

无法在 AWS Cloud9 IDE 文件资源管理器中创建子文件夹结构 /home/ec2-user/environment/home/ec2-user/environment

问题:在 AWS Cloud9 IDE 文件资源管理器中创建子文件夹结构 /home/ec2-user/environment/home/ec2-user/environment 时,您收到一条错误消息,指出无法打开此目录。

可能的原因:目前无法使用 AWS Cloud9 IDE 的文件系统在同名文件夹中创建子文件夹结构 /home/ec2-user/environment。您将无法从 AWS Cloud9 IDE 文件资源管理器访问此目录中的任何文件,但您可以使用命令行访问它们。此问题仅影响文件路径 /home/ec2-user/environment/home/ec2-user/environment/test/home/ec2-user/environment/home/ec2-user/environment/test 等文件路径应该有效。这是一个已知问题,仅影响 AWS Cloud9 IDE File Explorer。

建议的解决方案:使用不同的文件名和结构。

当 AWS License Manager 许可证配置与 Amazon EC2 实例关联时,无法从控制台启动 AWS Cloud9

问题:当您尝试从控制台启动 AWS Cloud9 EC2 环境时,会返回错误消息 unable to access your environment

可能的原因:AWS License Manager 简化了跨 AWS Cloud 的软件供应商许可证管理。设置 License Manager 时,您可以创建许可证配置,它们是基于企业协议条款的许可规则集。这些许可证配置可以附加到 Amazon 机器映像 (AMI) 或 AWS CloudFormation 等机制。您可以使用其中一种机制启动 EC2 实例。

AWSServiceRoleForAWSCloud9 服务相关角色 (SLR) 的 AWSCloud9ServiceRolePolicy 旧版本目前不包含 license-configuration 资源条件。因此不允许 AWS Cloud9 启动和停止其实例。因此,AWS Cloud9 被拒绝访问其 Amazon EC2 实例并返回错误。

建议的解决方案:如果无法访问现有 AWS Cloud9 环境和使用 License Manager,请将旧的 AWSCloud9ServiceRolePolicy 服务相关角色替换为 SLR 版本,该版本在 license-configuration 应用于实例时显式允许 EC2 操作。只需删除旧角色即可替换旧角色。之后将自动创建更新后的角色。

无法在 EC2 环境中运行某些命令或脚本

问题:打开 AWS Cloud9 EC2 开发环境后,您无法安装某些类型的软件包、运行某些命令(例如 yumapt)或运行包含通常与其他 Linux 操作系统配合使用的命令的脚本。

原因: AWS Cloud9 用于 EC2 环境的 Amazon EC2 实例依赖于 Amazon Linux(基于 Red Hat Enterprise Linux (RHEL))或 Ubuntu Server。

解决方案:如果您在用于 EC2 环境的 IDE 中安装或管理软件包或运行命令或脚本,根据该环境的实例,请确保它们与 RHEL(对于 Amazon Linux)或 Ubuntu Server 兼容。

使用 AWS CloudFormation 创建 EC2 环境时,报告错误消息“Instance profile AWSCloud9SSMInstanceProfile does not exist in account(账户中不存在实例配置文件 AWSCloud9SSMInstanceProfile)”

问题:当使用 AWS::Cloud9::EnvironmentEC2AWS CloudFormation 资源创建 EC2 环境时,用户会收到一条错误消息,指出Instance profile AWSCloud9SSMInstanceProfile does not exist in account.(账户中不存在实例配置文件 AWSCloud9SSMInstanceProfile)。

原因:在创建非入口 EC2 环境时,您必须创建服务角色 AWSCloud9SSMAccessRole 和实例配置文件 AWSCloud9SSMInstanceProfile。这些 IAM 资源使得 Systems Manager 能够对支持您的开发环境的 EC2 实例进行管理。

如果您使用控制台创建非入口环境,AWSCloud9SSMAccessRoleAWSCloud9SSMInstanceProfile 会自动创建。但是在使用 AWS CloudFormation 或 AWS CLI 创建您的第一个非入口环境时,您必须手动创建这些 IAM 资源。

建议的解决方案:有关编辑 AWS CloudFormation 模板和更新 IAM 权限的信息,请参阅使用 AWS CloudFormation 创建非入口 EC2 环境

使用 AWS CloudFormation 创建 EC2 环境时,报告错误消息“未授权对资源执行 perform: ssm:StartSession

问题:当使用 AWS::Cloud9::EnvironmentEC2 AWS CloudFormation 资源创建 EC2 环境时,用户会收到 AccessDeniedException,它通知用户:“not authorized to perform: ssm:StartSession on resource”(无权对资源执行:ssm:StartSession)。

原因:用户缺乏调用 StartSession API 的权限,该 API 是将 Systems Manager 用于非入口实例的 EC2 环境配置的一部分。

建议的解决方案:有关编辑 AWS CloudFormation 模板和更新 IAM 权限的信息,请参阅使用 AWS CloudFormation 创建非入口 EC2 环境

使用 AWS CLI 创建 EC2 环境时,报告错误消息“no authorization to perform: on resource: instance profile”(未授权对资源执行 iam:GetInstanceProfile:实例配置文件 AWSCloud9SSMInstanceProfile

问题:使用 AWS CLI 创建 EC2 环境时,用户会收到 AccessDeniedException,它通知用户其 AWS Cloud9 环境未获得对资源执行 iam:GetInstanceProfile 的授权:实例配置文件 AWSCloud9SSMInstanceProfile

原因:AWS Cloud9 缺乏调用 StartSession API 的权限,该 API 是将 Systems Manager 用于非入口实例的 EC2 环境配置的一部分。

建议的解决方案:有关将所需的 AWSCloud9SSMAccessRole 服务角色和 AWSCloud9SSMInstanceProfile 添加到 AWS Cloud9 环境的信息,请参阅使用 AWS CLI 管理 Systems Manager 的实例配置文件

将默认加密应用于 Amazon EBS 卷时,无法创建环境

问题:尝试创建 Amazon EC2 环境时会返回 Failed to create environments. The development environment '[environment-ID]' failed to create 错误。

可能的原因:如果您的 AWS Cloud9 IDE 使用默认加密的 Amazon EBS 卷,则 AWS Cloud9 的 AWS Identity and Access Management 服务相关角色需要访问这些 EBS 卷的 AWS KMS keys。如果未提供访问权限,则 AWS Cloud9 IDE 可能无法启动,调试问题可能很困难。

建议的解决方案:要提供访问权限,请将 AWS Cloud9、AWSServiceRoleForAWSCloud9 的服务相关角色添加到您的 Amazon EBS 卷所使用的客户托管式密钥。

有关此任务的更多信息,请参阅 AWS 规范性指导模式 中的创建使用默认加密的 Amazon EBS 卷的 AWS Cloud9

EC2-Classic 账户的 VPC 错误“Unable to access your environment (无法访问您的环境)”

问题: EC2-Classic 是在 Amazon EC2 的初始版本中引入的。如果您使用的是 2013 年 12 月 4 日之前设置的 AWS 账户,并且在创建 AWS Cloud9 EC2 开发环境时未配置 Amazon VPC 和子网,则可能会发生此错误。

如果您接受原定设置 VPC 设置,则 Amazon EC2 实例将启动到 EC2-Classic 网络中。该实例不会启动到原定设置 VPC 的子网中。当创建环境失败时,将显示以下消息:

Environment Error (环境错误)

Unable to access your environment (无法访问您的环境)

The environment creation failed with the error: The following resource(s) failed to create: [Instance]. . Rollback requested by user..(环境创建失败,错误为: 无法创建以下资源: [Instance]. . 用户已请求回滚..)

您可以确认错误是因 EC2 实例未位于默认 VPC 中导致的。使用 AWS CloudFormation 可查看开发环境的堆栈事件历史记录。

  1. 打开 AWS CloudFormation 控制台。有关更多信息,请参阅登录到 AWS CloudFormation 本地控制台。

  2. 在 AWS CloudFormation 控制台中,选择 Stacks (堆栈)

  3. Stacks (堆栈) 页面上,选择创建失败的开发环境的名称。

  4. Stack details(堆栈详细信息)页面上,选择 Events(事件)选项卡并检查以下条目:

    Status: CREATE_FAILED (状态: CREATE_FAILED)

    Status reason: The AssociatePublicIpAddress parameter is only supported by VPC launches. [...] (状态原因: AssociatePublicIpAddress 参数仅受 VPC 启动支持。[...])

原因:AWS Cloud9 开发环境必须与满足特定 VPC 要求的 Amazon VPC 关联。对于启用了 EC2-Classic 的账户,在创建 EC2 环境时接受默认网络设置意味着所需的 EC2 实例未在 VPC 中启动。相反,此实例将在 EC2-Classic 网络中启动。

建议的解决方案:对于 EC2-Classic 账户,您必须在创建 EC2 环境时选择 VPC 和子网。在 Configure settings (配置设置) 页面上的 Network settings (advanced) (网络设置(高级)) 部分中,选择可以在其中启动 EC2 实例的 VPC 和子网。

其他 AWS 服务

以下部分概述了与其他 AWS 服务相关的故障排除问题。

无法在 AWS Cloud9 IDE for CodeCatalyst 的文件资源管理器中创建子文件夹结构 /projects/projects

问题:在 AWS Cloud9 IDE for CodeCatalyst 文件资源管理器中创建子文件夹结构 /projects/projects 时,您会收到一条错误消息,指出无法打开此目录。

可能的原因:目前无法使用 AWS Cloud9 IDE for CodeCatalyst 文件资源管理器在同名文件夹中创建子文件夹结构 /projects。您将无法从 AWS Cloud9 IDE 文件资源管理器访问此目录中的任何文件,但您可以使用命令行访问它们。此问题仅影响文件路径 /projects/projects/test/projects/projects/test 等此类文件路径应有效。这是一个已知问题,仅影响 AWS Cloud9 IDE for CodeCatalyst 文件资源管理器。

建议的解决方案:使用不同的文件名和结构。

无法显示在 IDE 以外运行的应用程序

问题:当您或其他用户尝试在 IDE 以外的 Web 浏览器选项卡中显示正在运行的应用程序,该 Web 浏览器选项卡会显示错误或空白。

可能的原因:

  • 应用程序未在 IDE 中运行。

  • 应用程序正使用 IP 127.0.0.1localhost 运行。

  • 该应用程序正在 AWS Cloud9 EC2 开发环境中运行。此外,一个或多个与相应 Amazon EC2 实例关联的安全组不允许通过应用程序需要使用的协议、端口或 IP 地址传输入站流量。

  • 该应用程序正在 AWS Cloud9 SSH 开发环境中针对 AWS 云计算实例(例如 Amazon EC2 实例)运行。此外,与相应实例关联的虚拟私有云 (VPC) 中子网的网络 ACL 不允许通过应用程序需要使用的协议、端口或 IP 地址传输入站流量。

  • URL 不正确。

  • 正在请求应用程序预览标签页中的 URL,而不是实例的公有 IP 地址。

  • 您正在尝试转到包含 IP 127.0.0.1localhost 的地址。这些 IP 将尝试访问您的本地计算机上的资源,而非环境中的资源。

  • 该实例的公有 IP 地址已更改。

  • Web 请求源自 virtual private network (VPN),该网络阻止通过应用程序需要使用的协议、端口或 IP 地址传输流量。

  • 该应用程序正在 SSH 环境中运行。但是,您的服务器或关联的网络不允许通过应用程序需要使用的协议、端口或 IP 地址传输流量。

建议的解决方案:

  • 确保此应用程序正在 IDE 中运行。

  • 确保应用程序未使用 IP 127.0.0.1localhost 运行。有关 Node.js 和 Python 中的示例,请参阅运行应用程序

  • 假设此应用程序正在 AWS 云计算实例(例如 Amazon EC2 实例)上运行。请确保与相应实例关联的所有安全组都允许通过应用程序需要使用的协议、端口和 IP 地址传输入站流量。有关说明,请参阅通过互联网共享正在运行的应用程序中的 步骤 2:为实例设置安全组。要了解更多信息,请参阅 Amazon VPC 用户指南中的您的 VPC 的安全组

  • 假设此应用程序正在 AWS 云计算实例上运行。此外,与相应实例关联的 VPC 中的子网存在网络 ACL。请确保网络 ACL 允许通过应用程序需要使用的协议、端口和 IP 地址传输入站流量。有关说明,请参阅通过互联网共享正在运行的应用程序中的 步骤 3:为实例设置子网。有关信息,请参阅 Amazon VPC 用户指南 中的网络 ACL

  • 确保请求 URL 是正确的,包括协议和端口 (如果必须指定)。有关更多信息,请参阅通过互联网共享运行的应用程序中的 步骤 4:共享运行的应用程序 URL

  • 建议不要请求 https://12a34567b8cd9012345ef67abcd890e1.vfs.cloud9.us-east-2.amazonaws.com/ 格式的 URL(其中 12a34567b8cd9012345ef67abcd890e1 是 AWS Cloud9 为环境分配的 ID,us-east-2 是环境所在的 AWS 区域的 ID)。仅当环境的 IDE 处于打开状态并且应用程序正在同一个 Web 浏览器中运行时,此 URL 才有用。

  • 假设您正在尝试转到包含 IP 127.0.0.1localhost 的地址。尝试转到正在运行的应用程序的正确非本地地址。有关更多信息,请参阅通过互联网共享运行的应用程序

  • 假设此应用程序正在 AWS 云计算实例上运行。确定该实例的公有 IP 地址是否已更改。该实例的公有 IP 地址可能在实例重新启动时随时更改。要防止此 IP 地址发生更改,您可以分配弹性 IP 地址并将其分配给正在运行的实例。有关更多信息,请参阅通过互联网共享运行的应用程序中的 步骤 4:共享运行的应用程序 URL

  • 如果 Web 请求源自 VPN,请确保 VPN 允许通过应用程序需要使用的协议、端口和 IP 地址传输流量。如果您无法更改您的 VPN,请联系您的网络管理员。或者,从其他网络发出 Web 请求(如果可能)。

  • 假设应用程序在您自己的服务器的 SSH 环境中运行。确保您的服务器和关联的网络允许通过应用程序需要使用的协议、端口和 IP 地址传输流量。如果您无法更改您的服务器或关联的网络,请联系您的服务器或网络管理员。

  • 尝试通过运行 curl 命令并在后面跟随 URL,从环境中的终端运行应用程序。如果此命令显示错误消息,可能还有一些与 AWS Cloud9 无关的其他问题。

运行 AWS Toolkit 时出现错误:“Your environment is running out of inodes, please increase 'fs.inotify.max_user_watches' limit.(您环境中的 inode 不足,请增加‘fs.inotify.max_user_watches’限制。)”

问题:AWS Toolkit 所使用的文件监视器实用程序正在接近其可监视文件的当前限制或配额。

原因:AWS Toolkit 使用文件监视器实用程序,对文件和目录的更改进行监控。当该实用程序接近其可监视文件的当前配额时,会出现一条警告消息。

建议的解决方案:要增加文件监视器可处理的最大文件数,请执行以下操作:

  1. 要开始一个终端会话,请在菜单栏上依次选择 Window(窗口)New Terminal(新建终端)

  2. 输入以下 命令。

    sudo bash -c 'echo "fs.inotify.max_user_watches=524288" >> /etc/sysctl.conf' && sudo sysctl -p

Lambda 本地函数运行错误:无法安装 SAM Local

问题:在您尝试在 AWS Cloud9 IDE 中运行 AWS Lambda 函数的本地版本之后,会显示对话框。对话框指出,AWS Cloud9 在安装 SAM Local 时遇到问题。AWS Cloud9 需要 SAM Local 在 IDE 中运行 AWS Lambda 函数的本地版本。除非安装 SAM Local,否则无法在 IDE 中运行 Lambda 函数的本地版本。

原因:AWS Cloud9 在环境中的预期路径中无法找到 SAM Local,此路径为 ~/.c9/bin/sam。这是因为尚未安装 SAM Local;或者虽然已安装了该程序,但 AWS Cloud9 无法在该位置找到程序。

建议的解决方案:您可以等待 AWS Cloud9 尝试完成 SAM Local 的安装,也可以自行安装。

要查看 AWS Cloud9 如何尝试安装 SAM Local,请在菜单栏上选择 Window (窗口)、Installer (安装程序)

要自行安装 SAM Local,请按照 AWS Serverless Application Model 开发人员指南 中的在 Linux 上安装 AWS SAM CLI 的说明进行操作。

尝试使用 AWS Cloud9 创建 Amazon EC2 环境时出现 AWS Control Tower 错误:“环境创建失败,错误为:以下钩子无效:[ControlTower:: Guard:: Hook]。”

问题:AWS Cloud9 和 AWS Control Tower 主动控件 CT.EC2.PR.8 之间存在兼容性问题。如果启用此控件,则无法在 AWS Cloud9 中创建 EC2 环境。

原因:AWS Control Tower 需要 AWS CloudFormation 模板中包含 AssociatePublicIpAddress 参数。此时无法添加此参数。

推荐的解决方案:从 AWS Control Tower 控制台中禁用控件 CT.EC2.PR.8,然后在 AWS Cloud9 中重新创建环境。

将默认加密应用于 Amazon EBS 卷时,无法创建环境

问题:尝试创建 Amazon EC2 环境时会返回 Failed to create environments. The development environment '[environment-ID]' failed to create 错误。

可能的原因:如果您的 AWS Cloud9 IDE 使用默认加密的 Amazon EBS 卷,则 AWS Cloud9 的 AWS Identity and Access Management 服务相关角色需要访问这些 EBS 卷的 AWS KMS keys。如果未提供访问权限,则 AWS Cloud9 IDE 可能无法启动,调试问题可能很困难。

建议的解决方案:要提供访问权限,请将 AWS Cloud9、AWSServiceRoleForAWSCloud9 的服务相关角色添加到您的 Amazon EBS 卷所使用的客户托管式密钥。

有关此任务的更多信息,请参阅 AWS 规范性指导模式 中的创建使用默认加密的 Amazon EBS 卷的 AWS Cloud9

回到顶部

当 AWS License Manager 许可证配置与 Amazon EC2 实例关联时,无法从控制台启动 AWS Cloud9

问题:当您尝试从控制台启动 AWS Cloud9 EC2 环境时,会返回错误消息 unable to access your environment

可能的原因:AWS License Manager 简化了跨 AWS Cloud 的软件供应商许可证管理。设置 License Manager 时,您可以创建许可证配置,它们是基于企业协议条款的许可规则集。这些许可证配置可以附加到 Amazon 机器映像 (AMI) 或 AWS CloudFormation 等机制。您可以使用其中一种机制启动 EC2 实例。

AWSServiceRoleForAWSCloud9 服务相关角色 (SLR) 的 AWSCloud9ServiceRolePolicy 旧版本目前不包含 license-configuration 资源条件。因此不允许 AWS Cloud9 启动和停止其实例。因此,AWS Cloud9 被拒绝访问其 Amazon EC2 实例并返回错误。

建议的解决方案:如果无法访问现有 AWS Cloud9 环境和使用 License Manager,请将旧的 AWSCloud9ServiceRolePolicy 服务相关角色替换为 SLR 版本,该版本在 license-configuration 应用于实例时显式允许 EC2 操作。只需删除旧角色即可替换旧角色。之后将自动创建更新后的角色。

回到顶部

应用程序预览

以下部分概述了与应用程序预览相关的故障排除问题。

重新加载环境之后,必须刷新应用程序预览

问题:重新加载显示应用程序预览选项卡的环境之后,该选项卡未显示应用程序预览。

原因:有时,用户编写的代码可能会运行无限循环。或者他们的代码可能会消耗太多的内存,以至于在应用程序预览运行时,AWS Cloud9 IDE 可能会暂停或停止。为了防止出现这种情况,AWS Cloud9 不在重新加载环境时重新加载应用程序预览标签页。

解决方案:在重新加载显示应用程序预览选项卡的环境之后,要显示应用程序预览,请选择该选项卡上的 Click to load the page(单击以加载页面)按钮。

应用程序预览或文件预览通知:“Third-party cookies disabled(第三方 cookie 已禁用)”

问题:当您尝试预览应用程序文件时,会显示一条通知,并显示以下消息:“预览功能已禁用,因为您的浏览器禁用了第三方 cookie。”

原因:不需要第三方 Cookie 即可打开 AWS Cloud9 IDE。但是,您必须启用第三方 Cookie 才能使用应用程序预览或文件预览功能。

解决方案:在 Web 浏览器中启用第三方 cookie,重新加载 IDE,然后再次尝试打开预览。

如果您的 Web 浏览器允许这种精细度,则只能为 AWS Cloud9 启用第三方 Cookie。为此,请指定以下域,具体取决于您要在其中使用 AWS Cloud9 的受支持的 AWS 区域。

AWS 区域

美国东部(弗吉尼亚州北部)

*.vfs.cloud9.us-east-1.amazonaws.com

vfs.cloud9.us-east-1.amazonaws.com

美国东部(俄亥俄州)

*.vfs.cloud9.us-east-2.amazonaws.com

vfs.cloud9.us-east-2.amazonaws.com

美国西部(北加利福尼亚)

*.vfs.cloud9.us-west-1.amazonaws.com

vfs.cloud9.us-west-1.amazonaws.com

美国西部(俄勒冈州)

*.vfs.cloud9.us-west-2.amazonaws.com

vfs.cloud9.us-west-2.amazonaws.com

非洲(开普敦)

*.vfs.cloud9.af-south-1.amazonaws.com

vfs.cloud9.af-south-1.amazonaws.com

亚太地区(香港)

*.vfs.cloud9.ap-east-1.amazonaws.com

vfs.cloud9.ap-east-1.amazonaws.com

Asia Pacific (Mumbai)

*.vfs.cloud9.ap-south-1.amazonaws.com

vfs.cloud9.ap-south-1.amazonaws.com

亚太地区(大阪)

*.vfs.cloud9.ap-northeast-3.amazonaws.com

vfs.cloud9.ap-northeast-3.amazonaws.com

亚太地区(首尔)

*.vfs.cloud9.ap-northeast-2.amazonaws.com

vfs.cloud9.ap-northeast-2.amazonaws.com

亚太地区(新加坡)

*.vfs.cloud9.ap-southeast-1.amazonaws.com

vfs.cloud9.ap-southeast-1.amazonaws.com

亚太地区(悉尼)

*.vfs.cloud9.ap-southeast-2.amazonaws.com

vfs.cloud9.ap-southeast-2.amazonaws.com

亚太地区(东京)

*.vfs.cloud9.ap-northeast-1.amazonaws.com

vfs.cloud9.ap-northeast-1.amazonaws.com

加拿大(中部)

*.vfs.cloud9.ca-central-1.amazonaws.com

vfs.cloud9.ca-central-1.amazonaws.com

欧洲地区(法兰克福)

*.vfs.cloud9.eu-central-1.amazonaws.com

vfs.cloud9.eu-central-1.amazonaws.com

欧洲地区(爱尔兰)

*.vfs.cloud9.eu-west-1.amazonaws.com

vfs.cloud9.eu-west-1.amazonaws.com

欧洲地区(伦敦)

*.vfs.cloud9.eu-west-2.amazonaws.com

vfs.cloud9.eu-west-2.amazonaws.com

欧洲地区(米兰)

*.vfs.cloud9.eu-south-1.amazonaws.com

vfs.cloud9.eu-south-1.amazonaws.com

欧洲地区(巴黎)

*.vfs.cloud9.eu-west-3.amazonaws.com

vfs.cloud9.eu-west-3.amazonaws.com

欧洲地区(斯德哥尔摩)

*.vfs.cloud9.eu-north-1.amazonaws.com

vfs.cloud9.eu-north-1.amazonaws.com

中东(巴林)

*.vfs.cloud9.me-south-1.amazonaws.com

vfs.cloud9.me-south-1.amazonaws.com

南美洲(圣保罗)

*.vfs.cloud9.sa-east-1.amazonaws.com

vfs.cloud9.sa-east-1.amazonaws.com

应用程序预览选项卡显示错误或空白

问题:在 IDE 菜单栏中,当您选择 Preview, Preview Running Application(预览、预览正在运行的应用程序)Tools, Preview, Preview Running Application(工具、预览、预览正在运行的应用程序),以便尝试在 IDE 中的预览选项卡上显示您的应用程序时,该选项卡将显示错误或空白。

可能的原因:

  • 您的应用程序未在 IDE 中运行。

  • 您的应用程序未使用 HTTP 运行。

  • 您的应用程序正通过多个端口运行。

  • 您的应用程序正通过 808080818082 之外的端口运行。

  • 您的应用程序正使用 127.0.0.1localhost0.0.0.0 之外的 IP 运行。

  • 在预览标签页的 URL 中未指定端口 (808080818082)。

  • 您的网络阻止流向端口 808080818082 的入站流量。

  • 您正在尝试转到包含 IP 127.0.0.1localhost0.0.0.0 的地址。默认情况下,AWS Cloud9 IDE 尝试访问本地计算机。它不会尝试访问连接到环境的实例或您自己的服务器。

建议的解决方案:

  • 确保此应用程序正在 IDE 中运行。

  • 确保此应用程序正在使用 HTTP 运行。有关 Node.js 和 Python 中的示例,请参阅运行应用程序

  • 确保应用程序只通过一个端口运行。有关 Node.js 和 Python 中的示例,请参阅运行应用程序

  • 确保应用程序正通过端口 808080818082 运行。有关 Node.js 和 Python 中的示例,请参阅运行应用程序

  • 确保应用程序正使用 IP 127.0.0.1localhost0.0.0.0 运行。有关 Node.js 和 Python 中的示例,请参阅运行应用程序

  • :8080:8081:8082 添加到预览标签页上的 URL。

  • 确保您的网络允许入站流量通过端口 808080818082。如果您无法更改您的网络,请联系您的网络管理员。

  • 如果您正在尝试访问一个包含 IP 127.0.0.1localhost0.0.0.0 的地址,请尝试转到以下地址:https://12a34567b8cd9012345ef67abcd890e1.vfs.cloud9.us-east-2.amazonaws.com/。在该地址中,12a34567b8cd9012345ef67abcd890e1 是 AWS Cloud9 分配给环境的 ID。us-east-2 是环境所在 AWS 区域 的 ID。您也可以尝试在 IDE 之外转到这个地址。但是,仅当环境的 IDE 处于打开状态并且应用程序正在同一个 Web 浏览器中运行时,这才会起作用。

  • 当您确定满足所有之前的条件后,请尝试停止应用程序,然后重新启动它。

  • 如果您已停止应用程序并重新启动,请尝试在菜单栏上重新选择 Preview (预览)、Preview Running Application(预览正在运行的应用程序)Tools (工具)、Preview (预览)、Preview Running Application (预览正在运行的应用程序)。或者,如果选项卡已显示,则尝试在相应的应用程序预览标签页上选择 Refresh (刷新) 按钮(圆形箭头)。

无法在 IDE 中预览 Web 内容,因为与站点的连接不安全

问题:当您尝试访问托管在 AWS Cloud9 EC2 环境中的 Web 内容时,IDE 预览窗口无法将其显示。

可能原因:默认情况下,您在 AWS Cloud9 IDE 的应用程序预览选项卡中访问的所有网页都会自动使用 HTTPS 协议。如果页面的 URI 具有不安全的 http 协议,则会自动替换为 https。并且您无法通过将 https 手动更改回 http 的方式来访问不安全的内容。

建议的解决方案:从尝试在 IDE 中预览的网站中删除不安全的 HTTP 脚本或内容。按照 Web 服务器或内容管理系统的说明,获取有关实施 HTTPS 的指导。

预览文件时返回 499 错误

问题:当您尝试使用 AWS Cloud9 IDE 预览包含 <script> 元素的文件时(该元素包含 src 属性并将 type 属性设置为 module),则会发生 499 错误,并且脚本无法按预期运行。

原因: AWS Cloud9 IDE中的文件预览获取请求需要 Web 浏览器发送 Cookie 来进行身份验证。默认情况下,Web 浏览器会为常规脚本请求发送 Cookie。他们不会为模块脚本请求发送 Cookie,除非您添加 crossorigin 属性。

解决方案:crossorigin 属性添加至 <script> 元素。例如,<script type="module" src="index.js" crossorigin></script>。然后,保存更改的文件,并尝试再次预览该文件。

Performance

以下部分概述了与性能相关的故障排除问题。

AWS Cloud9 IDE 冻结了很长时间

问题:在启动期间和执行刷新时,AWS Cloud9 IDE 终端冻结了很长时间并且无法使用。

原因:您的环境中可能含有大量文件正在被 AWS Cloud9 的文件监视模块递归监视。

推荐的解决方案:您可以降低文件监视深度(最小值为 1),并考虑将大型文件夹或与源代码无关的文件夹(构建输出/构件、第三方软件包)添加到忽略的模式中。要完成此操作,请导航至首选项 > 用户设置 > 文件监视。请注意,这将导致 AWS Toolkit 中的 CodeLenses 无法正常工作。

另一种可能的解决方案是考虑通过减少要搜索的最大文件数来忽略与源代码无关的大型文件和文件夹。要完成此操作,请导航至首选项 > 项目设置 > 在文件中查找。请注意,这将导致被忽略的文件夹不会显示在文件搜索中。

控制台警告:“Switching to the minimal code completion engine...(切换到最小代码完成引擎……)”

问题:在 AWS Cloud9 控制台中工作时(例如,打开 IDE 或刷新 IDE 的网页),您会看到此消息:“一个或多个会话或协作者在此环境中处于活动状态。切换到最小代码完成引擎来节省内存。” 结合此消息来看,代码完成行为可能很慢或间歇。

原因:运行代码完成引擎占用环境中的内存和 CPU 周期。此外,每个协作者和每个额外会话都需要单独的代码完成引擎。为避免使用太多资源,尤其是在小型实例大小(如 t2.nano 和 t2.micro)上,AWS Cloud9 会切换到最小代码完成引擎。

建议的解决方案:如果您计划经常协作或长时间协作,请在创建 EC2 环境时选择更大的 Amazon EC2 实例。或者,也可以将 SSH 环境连接到容量更大的实例。

注意

选择更大的 Amazon EC2 实例可能会导致您的 AWS 账户 产生额外费用。有关更多信息,请参阅 Amazon EC2 定价

IDE 警告:“This environment is running low on memory(此环境内存不足)”或“This environment has high CPU load(此环境具有较高 CPU 负载)”

问题:在 IDE 运行时,出现一条类似以下短句的消息,“this environment is running low on memory(此环境内存不足)”或“this environment has high CPU load(此环境具有较高 CPU 负载)”

原因: IDE 可能没有足够的计算资源用来继续运行而不发生延迟或挂起。

建议的解决方案:

  • 停止一个或多个正在运行的进程以释放可用内存。为此,请在环境的 IDE 中的菜单栏上,选择 Tools, Process List(工具、进程列表)。对于要停止的每个进程,请选择进程,然后选择 Force Kill (强制终止)

  • 在环境中创建交换文件。交换文件是操作系统可以用作虚拟内存的环境中的文件。

    要确认环境当前是否正在使用交换内存,请在环境中的终端会话中运行 top 命令。如果正在使用交换内存,则输出将显示非零 Swap 内存统计数据(例如 Swap: 499996k total, 1280k used, 498716 free, 110672k cached)。要停止显示实时内存信息,请按 Ctrl + C

    要创建交换文件,请在环境中运行类似如下的命令。

    sudo fallocate --length 512MB /var/swapfile && sudo chmod 600 /var/swapfile && sudo mkswap /var/swapfile && echo '/var/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab > /dev/null

    上述命令执行以下操作:

    1. /var 目录中创建一个名为 swapfile 的 512 MB 文件。

    2. 将对 swapfile 文件的访问权限更改为读写(仅针对所有者)。

    3. swapfile 文件设置为交换文件。

    4. 将信息写入 /etc/fstab file。这使得该交换文件在系统重新启动时可用。

    运行上述命令后,要使此交换文件立即可用,请运行以下命令。

    sudo swapon /var/swapfile
  • 调整大小或将环境移动到具有更多计算资源的实例或服务器。要移动 Amazon EC2 实例或调整其大小,请参阅 移动环境并对 Amazon EBS 卷调整大小或加密。对于其他实例或服务器类型,请参阅您的实例或服务器的文档。

无法在 AWS Cloud9 IDE 中上传文件

问题:用户无法在 AWS Cloud9 IDE 中上传大型文件。此类上传失败。

原因:AWS Cloud9 限制了上传到 AWS Cloud9 IDE 的速度,导致文件上传请求超时。

推荐的解决方案:我们建议将文件上传到 Amazon S3,然后使用 Amazon S3 通过 AWS Cloud9 IDE 中的 CLI 将文件下载到环境中。有关将对象上传至 Amazon S3 的更多信息,请参阅《Amazon S3 用户指南》中的上传对象

在 AWS Cloud9 IDE 中,下载速度过慢

问题:用户在尝试从 AWS Cloud9 IDE 下载文件时遇到下载速度慢的问题。

原因:将文件从 IDE 下载到本地文件系统时,传输速度将限制为 0.1 兆字节/秒。

推荐的解决方案:要提高文件传输速度,请使用 AWS Cloud9 IDE 中的 CLI 将文件上传到 Amazon S3,然后在 Amazon S3 处下载文件。

无法在 IDE 中预览 Web 内容,因为与站点的连接不安全

问题:当您尝试访问托管在 AWS Cloud9 EC2 环境中的 Web 内容时,IDE 预览窗口无法将其显示。

可能原因:默认情况下,您在 AWS Cloud9 IDE 的应用程序预览选项卡中访问的所有网页都会自动使用 HTTPS 协议。如果页面的 URI 具有不安全的 http 协议,则会自动替换为 https。并且您无法通过将 https 手动更改回 http 的方式来访问不安全的内容。

建议的解决方案:从尝试在 IDE 中预览的网站中删除不安全的 HTTP 脚本或内容。按照 Web 服务器或内容管理系统的说明,获取有关实施 HTTPS 的指导。

回到顶部

第三方应用程序和服务

以下部分概述了与第三方应用程序和服务相关的故障排除问题。

由于 tmux 会话错误,无法与 AWS Cloud9 中的终端窗口交互

问题:当您尝试在 AWS Cloud9 中启动新的终端窗口时,预期的命令行界面不可用。没有命令提示符,您无法输入文本。将返回 tmux: need UTF-8 locale (LC_CTYPE)invalid LC_ALL, LC_CTYPE or LANG 等错误消息。

可能的原因:终端无响应可能是由 tmux 错误引起的。AWS Cloud9 使用 tmux 实用程序。这样,即使在页面重新加载或重新连接到开发环境时,终端中显示的信息也会保持不变。

tmux 会话中,终端窗口中显示的内容由客户端处理。客户端与可以管理多个会话的服务器通信。服务器和客户端通过位于 tmp 文件夹中的套接字进行通信。如果您的开发环境中缺少该 tmp 文件夹或对其应用了过于严格的权限,则 tmux 会话将无法运行。如果发生这种情况,IDE 中的终端窗口将变得没有响应。

建议的解决方案:如果 tmux 错误阻止您与终端窗口进行交互,请使用另一种方法来创建具有正确权限的 tmp 文件夹。这样一来就可以运行tmux 会话。一种解决方案是导出 .bash_profile 中或 .bashrc 文件中的 LC_CTYPE。另一个推荐解决方案是使用 AWS Systems Manager 设置主机管理配置。这允许通过 Amazon EC2 控制台访问相关实例。

设置主机管理

  1. 首先,在 AWS Cloud9 控制台中,找到您的环境实例的名称。为此,您可以选择 Your environments(您的环境)页面中的相关面板并选择 View details(查看详细信息)。在 Environment details(环境详细信息)页面上,选择 Go to Instance(转到实例)。在 Amazon EC2 控制台中,确认需要访问的实例的名称。

  2. 现在转到 AWS Systems Manager 控制台,然后在导航窗格中选择 Quick Setup(快速设置)。

  3. Quick Setup(快速设置)页面上,选择 Create(创建)。

  4. 对于 Configuration types(配置类型),请转到 Host Management(主机管理),然后选择 Create(创建)。

  5. 对于 Customize Host Management configuration options(自定义主机管理配置选项),在 Targets(目标)部分中,选择 Manual(手动)。

  6. 选择要访问的 EC2 实例,然后选择 Create(创建)。

连接到实例并运行命令

注意

以下步骤适用于新的 EC2 控制台。

  1. 在 Amazon EC2 控制台的导航窗格中,选择 Instances(实例),然后选择要连接的实例。

  2. 选择连接

    如果 Connect(连接)未激活,您可能需要先启动实例。

  3. Connect to your instance(连接到您的实例)窗格中,对于 Connection method(连接方法),请选择 Session Manager(会话管理器),然后选择 Connect(连接)。

  4. 在出现的终端会话窗口中,输入以下命令。这些命令会创建具有正确权限的 tmp 文件夹,以便 tmux 套接字可用。

    sudo mkdir /tmp sudo chmod 777 /tmp sudo rmdir /tmp/tmux-*

无法使用早期版本的 Microsoft Edge 浏览器加载 IDE

问题:尝试使用 Microsoft Edge 浏览器加载 AWS Cloud9 IDE 时会返回 HTTP403: FORBIDDEN 错误。

可能的原因:AWS Cloud9 IDE 不支持某些旧版本的 Microsoft Edge。

建议的解决方案:要更新浏览器,请选择 Microsoft Edge 工具栏中的省略号(...)按钮。从菜单中选择 Settings(设置),然后选择 About Microsoft Edge(关于 Microsoft Edge)。如果需要更新,则会自动下载并安装。

调试 C++ 项目时 gdb 出现错误

问题:尝试在 IDE 中调试 C++ 项目时,gdb 调试程序报告错误。

可能的原因:假设您的 AWS Cloud9 环境使用特定 EC2 实例类型(例如 t3.smallm5.large)。然后,当您尝试使用 IDE 的内置运行程序运行和调试 C++ 项目时,可能会出现调试错误。发生此错误的原因可能是为您的环境预安装的 gdb(GNU 项目调试程序)版本在某些处理器平台上不适用。您可能会看到以下错误代码。

GDB server terminated with code 1

建议的解决方案:gdb 不支持某些处理器平台的问题,自 3.0 版本起开始修复。应卸载旧版本的调试程序并升级到 gdb 的新版本:

  1. 通过在 AWS Cloud9 终端中运行以下命令来删除调试程序的现有版本。

    sudo yum -y remove gdb
  2. 检索 gdb 的归档文件、将其解压,然后通过运行以下命令导航到包含解压文件的目录。

    wget "http://ftp.gnu.org/gnu/gdb/gdb-8.3.tar.gz" tar xzf gdb-8.3.tar.gz cd gdb-8.3
  3. 通过运行以下命令生成调试器。为此,请将以下文本作为单个块复制并粘贴,然后按回车键 运行make

    ./configure --prefix=/usr \ --with-system-readline \ --with-python=/usr/bin/python3 && make
  4. 安装调试程序。

    sudo make -C gdb install
  5. 确认调试程序的更新版本已安装完成。

    gdb --version

AWS Cloud9 中的 PHP 运行程序出现问题

问题:用户无法在 PHP CLI 运行程序终端中查看任何输出。

原因:CLI 运行程序需要设置为 PHP,并且需要启用调试器模式。

推荐的解决方案:将 CLI 运行程序设置为 PHP,并确保启用调试器模式。

与 Node.js 相关的 GLIBC 错误

问题:用户无法运行 Node.js 并收到 GLIBC 错误。以下是这些错误消息的示例:

node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by node) node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by node)

原因:可能是与正在使用的实例有关的 Node.js 版本问题。

推荐的解决方案:有关如何为 AWS Cloud9 安装 Node.js 的信息,请参阅 步骤 1:安装所需工具 部分。