AWS CloudShell 计算环境:规格和软件 - AWS CloudShell

AWS CloudShell 计算环境:规格和软件

当您启动 AWS CloudShell 时,系统会创建一个基于 Amazon Linux 2023 的计算环境以托管 Shell 体验。该环境配置了计算资源(vCPU 和内存),并提供了大量可从命令行界面访问的预安装软件。确保您在计算环境中安装的任何软件都经过修补并处于最新状态。还可以通过安装软件和修改 Shell 脚本来配置默认环境。

计算环境资源

每个 AWS CloudShell 计算环境都分配了以下 CPU 和内存资源:

  • 1 个 vCPU(虚拟中央处理器)

  • 2 GiB RAM

而且,为环境配置了以下存储配置:

  • 1GB 持久性存储空间(会话结束后存储空间仍保留)

有关更多信息,请参阅 持久性存储

CloudShell 网络要求

WebSockets

CloudShell 依赖于 WebSocket 协议,该协议允许用户的 Web 浏览器与 AWS 云端的 CloudShell 服务进行双向交互式通信。如果您在专用网络中使用浏览器,则代理服务器和防火墙可能有助于安全访问互联网。WebSocket 通信通常可以毫无问题地遍历代理服务器。但是在某些情况下,代理服务器会阻止 WebSocket 正常运行。如果出现此问题,您的 CloudShell 界面会报告以下错误:Failed to open sessions : Timed out while opening the session

如果此错误反复出现,请查看代理服务器的文档,确保其配置为允许 WebSocket。或者,您可以与网络的系统管理员联系。

注意

如果要通过允许列出特定 URL 来定义精细权限,则可以添加 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 Systems Manager 支持的 AWS 区域的区域标识符,例如美国东部(俄亥俄州)区域的 us-east-2

由于会话 ID 是在特定 Systems Manager 会话成功启动创建的,因此您只能在更新 URL 允许列表时指定 wss://ssmmessages.region.amazonaws.com。有关更多信息,请参阅 AWS Systems Manager API 参考中的开始会话操作。

预安装的软件

注意

由于 AWS CloudShell 开发环境会定期更新以提供对最新软件的访问权限,因此我们在本文档中不提供具体的版本号。相反,我们将介绍如何检查安装了哪个版本。要查看已安装的版本,请输入程序名称,然后选择 --version 选项(例如,git --version)。

Shell

预安装的 Shell
名称 描述 版本信息

Bash

Bash Shell 是 AWS CloudShell 的默认 Shell 应用程序。

bash --version

PowerShell (pwsh)

PowerShell 提供命令行界面和脚本语言支持,建立在 Microsoft 的 .NET 命令语言运行时之上。PowerShell 使用名为 cmdlets 的轻量级命令来接受和返回 .NET 对象。

pwsh --version

Z Shell (zsh)

Z Shell,也被称为 zsh,是 Bourne Shell 的扩展版本,它为主题和插件提供了增强的自定义支持。

zsh --version

AWS 命令行界面(CLI)

CLI
名称 描述 版本信息

AWS CDK Toolkit CLI

AWS CDK Toolkit,即 CLI 命令 cdk,是与您的 AWS CDK 应用程序交互的主要工具。它执行您的应用程序,查询您定义的应用程序模型,并生成和部署由 AWS CDK 生成的 AWS CloudFormation 模板。

有关更多信息,请参阅 AWS CDK 工具包

cdk --version

AWS CLI

AWS CLI 是一个命令行界面,您可以使用它从命令行管理多个 AWS 服务,并利用脚本自动执行这些服务。有关更多信息,请参阅 在 CloudShell 中通过 CLI 管理 AWS 服务

有关如何确保使用的是最新版 AWS CLI 版本 2 的信息,请参阅 安装 AWS CLI 到主目录

aws --version

EB CLI

AWS Elastic Beanstalk CLI 提供了可简化从本地存储库创建、更新和监控环境的命令行界面。

有关 EB CLI 的更多信息,请参阅AWS Elastic Beanstalk 开发人员指南中的使用 Elastic Beanstalk 命令行界面(EB CLI)

eb --version

Amazon ECS CLI

Amazon Elastic Container Service(Amazon ECS)命令行界面(CLI)提供高级命令,以简化集群和任务的创建、更新和监控。

有关更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的 Amazon ECS 命令行界面

ecs-cli --version

AWS SAM CLI

AWS SAM CLI 是一个命令行工具,可在 AWS Serverless Application Model 模板和应用程序代码上运行。您可以执行多项任务。其中包括在本地调用 Lambda 函数、为无服务器应用程序创建部署包,以及将您的无服务器应用程序部署到 AWS 云端。

有关更多信息,请参阅AWS Serverless Application Model 开发人员指南中的AWS SAM CLI 指令参考

sam --version

AWS Tools for PowerShell AWS Tools for PowerShell 是根据由 适用于 .NET 的 SDK 公开的功能构建的 PowerShell 模块。借助 AWS Tools for PowerShell,您可以从 PowerShell 命令行为 AWS 资源上操作编写脚本。

AWS CloudShell 预安装 AWS Tools for PowerShell 的模块化版本 (AWS.Tools)。

更多信息,请参阅AWS Tools for PowerShell 用户指南中的使用 AWS Tools for PowerShell

pwsh --Command 'Get-AWSPowerShellVersion'

运行时系统和 AWS SDK:Node.js 和 Python 3

运行时系统和 AWS SDK
名称 描述 版本信息

Node.js(带 npm)

Node.js 是一个 JavaScript 运行时系统,旨在让异步编程技术的应用变得更容易。有关更多信息,请参阅 Node.js 官方网站上的文档

npm 是一个软件包管理器,提供对 JavaScript 模块在线注册表的访问。有关更多信息,请参阅 npm 官方网站上的文档

  • Node.js: node --version

  • npm:npm --version

Node.js 中的 SDK for JavaScript

软件开发工具包(SDK)通过为包括 Amazon S3、Amazon EC2、DynamoDB 和 Amazon SWF 在内的 Amazon Web Services 提供 JavaScript 对象,来帮助简化编码。有关更多信息,请参见适用于 JavaScript 的 AWS SDK 开发人员指南

npm -g ls --depth 0 2>/dev/null | grep aws-sdk

Python

Python 3 随时可在 Shell 环境中使用。Python 3 现在被认为是该编程语言的默认版本(对 Python 2 的支持已于 2020 年 1 月结束)。有关更多信息,请参阅 Python 官方网站上的文档

此外,预装的是 Pip,这是一款适用于 Python 的软件包安装程序。您可以使用此命令行程序从在线索引(例如 Python 程序包索引)中安装 Python 软件包。有关更多信息,请参阅 Python 打包权威机构提供的文档

  • Python 3: python3 --version

  • pip: pip3 --version

适用于 Python 的 SDK (Boto3)

Boto 是 Python 开发人员用来创建、配置和管理 AWS 服务(例如 Amazon EC2 和 Amazon S3)的软件开发工具包(SDK)。该 SDK 提供了易于使用的、面向对象的 API,以及对 AWS 服务 的低级别访问。

更多信息,请参阅 Boto3 文档

pip3 list | grep boto3

开发工具和 Shell 实用程序

开发工具和 Shell 实用程序
名称 描述 版本信息

bash-completion

bash-completion 是一个 Shell 函数集合,允许通过按 Tab 键自动完成部分键入的命令或参数。您可以在 /usr/share/bash-completion/completions 中找到 bash-completion 支持的软件包。

要为软件包的命令设置自动完成功能,必须获取该程序文件。例如,要为 Git 命令设置自动完成功能,请在 .bashrc 中添加以下一行,这样每当您的 AWS CloudShell 会话开始时,该功能都可用:

source /usr/share/bash-completion/completions/git

如果要使用自定义完成脚本,请将它们添加到持久性主目录 ($HOME) 中,然后直接从 .bashrc 中获取它们。

有关更多信息,请参阅 GitHub 上项目的 README 页面。

dnf info bash-completion

cqlsh-expansion cqlsh-expansion 是一套工具包,包含 cqlsh 及相关辅助工具,这些工具已针对 Amazon Keyspaces 预配置,同时保持与 Apache Cassandra 的完全兼容性。有关更多信息,请参阅《Amazon Keyspaces(Apache Cassandra 兼容)开发人员指南》中的使用 cqlsh 连接到 Amazon Keyspaces

cqlsh-expansion --version

Docker

Docker 是用于开发、发布和运行应用程序的开放平台。借助 Docker,您可以将应用程序与基础结构分开,以便快速交付软件,并且可以在 AWS CloudShell 内部构建 Dockerfiles,并使用 CDK 构建 Docker 资产。有关 Docker 支持哪些 AWS 区域的信息,请参阅 AWS CloudShell 支持的 AWS 区域。您应该知道,Docker 在环境中的空间有限。如果您的单个映像较大,或者预先存在的 Docker 映像过多,则可能会导致问题。有关 Docker 的更多信息,请参阅 Docker 文档指南

docker --version

Git

Git 是一个分布式版本控制系统,它通过分支工作流程和内容暂存支持现代软件开发实践。有关更多信息,请参阅 Git 官方网站上的文档页面

git --version

iputils

iputils 软件包包含用于 Linux 联网的实用程序。有关提供的实用工具的更多信息,请参阅 GitHub 上的 iputils 存储库

iputils 工具的示例:arping -V

jq jq 实用程序解析 JSON 格式的数据,以生成由命令行过滤器修改的输出。有关更多信息,请参阅 GitHub 上托管的 jq 手册

jq --version

kubectl

kubectl 是一个命令行工具,用于使用 Kubernetes API 与 Kubernetes 集群的控制面板进行通信。

kubectl --version

make

make 实用程序使用 makefiles 自动执行任务集并组织代码编译。有关更多信息,请参阅 GNU Make 文档

make --version

man

man 命令提供命令行实用程序和工具的手册页。例如,man ls 返回列出目录内容的 ls 命令的手册页。更多信息,请参阅 Wikipedia 的 man 词条

man --version

nano nano 是一款小型且用户友好的、基于文本界面的编辑器。有关更多信息,请参阅 GNU nano 文档

nano --version

OpenJDK 21

Amazon Corretto 21 是 OpenJDK 21 的长期支持(LTS)发行版。Amazon Corretto 是开放 Java 开发工具包(OpenJDK)的免费、多平台、生产就绪型分发版。有关更多信息,请参阅《Corretto 21 用户指南》中的什么是 Amazon Corretto 21?

java -version

procps

procps 是一个系统管理实用程序,可用于监控和停止当前正在运行的进程。有关更多信息,请参阅列出可以使用 procps 运行的程序的 README 文件

ps --version

psql

PostgreSQL 是一个功能强大的开源数据库系统,它使用标准 SQL 功能,同时提供强大的功能来安全地管理和扩展复杂的数据操作。有关更多信息,请参阅什么是 PostgreSQL

psql --version

SSH 客户端

SSH 客户端使用安全 Shell 协议与远程计算机进行加密通信。OpenSSH 是预安装的 SSH 客户端。有关更多信息,请参阅 OpenBSD 维护的 OpenSSH 网站

ssh -V

sudo

使用 sudo 实用程序,用户可以使用其他用户(通常是超级用户)的安全权限运行程序。当您需要以系统管理员身份安装应用程序时,Sudo 非常有用。有关更多信息,请参阅 Sudo 手册

sudo --version

tar

tar 是一个命令行实用程序,可用于将多个文件分组到单个存档文件(通常称为 tarball)中。有关更多信息,请参阅 GNU tar 文档

tar --version

tmux

tmux 是一个终端多路复用器,可用于在多个窗口中同时运行不同的程序。有关更多信息,请参阅简要介绍 tmux 的博客

tmux -V

vim

Vim 是一个可自定义的编辑器,您可以通过基于文本的界面与之交互。更多信息,请参阅 vim.org 上提供的文档资源

vim --version

wget

wget 是一种计算机程序,用于从命令行中的端点指定的 Web 服务器检索内容。有关更多信息,请参阅 GNU Wget 文档

wget --version

zip/unzip

zip/unzip 实用程序使用存档文件格式,可在不丢失数据的情况下提供无损数据压缩。调用 zip 命令将文件分组并压缩到单个存档中。使用 unzip 将存档中的文件解压缩到指定目录中。

unzip --version

zip --version

安装 AWS CLI 到主目录

与 CloudShell 环境中预安装的其他软件一样,AWS CLI 工具会自动使用定期升级和安全补丁进行更新。如果要确保使用的是最新版本 AWS CLI,可以选择在 Shell 的主目录中手动安装该工具。

重要

您需要在主目录中手动安装 AWS CLI 副本,以便下次启动 CloudShell 会话时可用。之所以需要此安装,是因为在完成 Shell 会话后,添加到 $HOME 之外的目录的文件将被删除。此外,安装此 AWS CLI 副本后,它不会自动更新。换句话说,管理更新和安全补丁是您的责任。

有关 AWS 责任共担模式的更多信息, 请参阅 AWS CloudShell 中的数据保护

要安装 AWS CLI,请执行以下操作
  1. 在 CloudShell 命令行中,使用 curl 命令将已安装 AWS CLI 的压缩副本传输到 Shell:

    curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
  2. 对压缩文件夹进行解压缩:

    unzip awscliv2.zip
  3. 要将工具添加到指定文件夹,请运行 AWS CLI 安装程序:

    sudo ./aws/install --install-dir /home/cloudshell-user/usr/local/aws-cli --bin-dir /home/cloudshell-user/usr/local/bin

    如果安装成功,命令行会显示以下消息:

    You can now run: /home/cloudshell-user/usr/local/bin/aws --version
  4. 为了方便起见,我们建议您同时更新 PATH 环境变量,这样在运行 aws 命令时就无需指定工具的安装路径:

    export PATH=/home/cloudshell-user/usr/local/bin:$PATH
    注意

    如果撤消对 PATH 的这一更改,则未采用指定路径的 aws 命令将默认使用 AWS CLI 的预装版本。

在 Shell 环境中安装第三方软件

注意

建议您在向 AWS CloudShell 的计算环境安装任何第三方应用程序之前,先查看安全责任共担模式

默认设置下,所有 AWS CloudShell 用户均无 sudo 权限。因此,您可以使用 sudo 命令来安装 Shell 计算环境中尚不可用的软件。例如,您可以结合使用 sudo 和 DNF 软件包管理实用程序来安装 cowsay,以便使用以下消息生成包含一只牛的 ASCII 格式的艺术图片:

sudo dnf install cowsay

然后,您可以通过键入 echo "Welcome to AWS CloudShell" | cowsay 来启动新安装的程序。

重要

dnf 等软件包管理实用程序会将程序安装到目录(例如 /usr/bin),而这些程序会在 Shell 会话结束时被回收。这意味着要在每个会话的基础上安装和使用其他软件。

使用脚本修改 Shell

如果您要修改默认的 Shell 环境,可以编辑每次启动 Shell 环境时都会运行的 Shell 脚本。每当默认 bash shell 启动时,.bashrc 脚本就会运行。

警告

如果您错误地修改了 .bashrc 文件,则以后可能无法访问您的 Shell 环境。在编辑文件之前,最好先制作一份文件副本。您还可以在编辑 .bashrc 时通过打开两个 Shell 来降低风险。如果您在一个 Shell 中失去访问权限,则仍可以登录到另一个 Shell,并且可以回滚任何更改。

如果您在错误修改 .bashrc 或任何其他文件后确实失去了访问权限,则可以通过删除主目录将 AWS CloudShell 恢复其默认设置。

在此过程中,您将修改 .bashrc 脚本,以便您的 Shell 环境自动切换到运行 Z shell。

  1. 使用文本编辑器(例如 Vim)打开 .bashrc

    vim .bashrc
  2. 在编辑器界面中,按 I 键开始编辑,然后添加以下内容:

    zsh
  3. 要退出并保存编辑后的 .bashrc 文件,请 Esc 进入 Vim 命令模式并输入以下内容:

    :wq

  4. 使用 source 命令重新加载 .bashrc 文件:

    source .bashrc

    当命令行界面再次可用时,提示符号已更改为 % 表示您现在正在使用 Z shell。