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 通信通常可以毫无问题地通过代理服务器。但是在某些情况下,代理服务器会 WebSockets 阻止正常工作。如果出现此问题,您的 CloudShell 接口将报告以下错误:Failed to open sessions : Timed out while opening the session

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

注意

如果要通过特定许可名单来定义精细权限 URLs,则可以添加 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 参考中的StartSession操作。

预安装的软件

注意

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

Shell

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

Bash

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

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 工具包 CLI

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

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

cdk --version

AWS CLI

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

有关如何确保使用最多的 up-to-date 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 这些 PowerShell 模块是在公开的功能基础上构建的 AWS SDK for .NET。使用 AWS Tools for PowerShell,您可以通过 PowerShell 命令行编写 AWS 资源操作脚本。

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

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

pwsh --Command ' Get-Module -ListAvailable -Name AWS.Tools.Common'

运行时和 AWS SDKs:Node.js 和 Python 3

运行时和 AWS SDKs
名称 描述 版本信息

Node.js(带 npm)

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

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

  • Node.js: node --version

  • npm:npm --version

Node.js JavaScript 中的 SDK

软件开发套件 (SDK) 通过为包括亚马逊 S3、亚马逊、DynamoDB 和亚马逊 SWF 在内的 AWS 服务提供 JavaScript对象 EC2,帮助简化编码。有关更多信息,请参见AWS SDK for JavaScript 开发人员指南

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 开发人员用来创建、配置和管理的软件开发套件 (SDK) AWS 服务,例如亚马逊 EC2 和亚马逊 S3。SDK 提供了面向对象的 API 以及对的低级访问权限。 easy-to-use 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 中获取它们。

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

dnf info bash-completion

Git

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

git --version

iputils

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

iputils 工具的示例:arping -V

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

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

procps

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

ps --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

unzip

有关更多信息,请参阅 zip/unzip。
vim

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

vim --version

wget

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

wget --version

zip/unzip

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

unzip --version

zip --version

Docker

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

docker --version

安装 AWS CLI 到你的主目录

与 CloudShell 环境中预安装的其余软件一样,该 AWS CLI 工具会自动更新定期升级和安全补丁。如果要确保拥有的最高 up-to-date版本 AWS CLI,可以选择在外壳程序的主目录中手动安装该工具。

重要

您需要在主目录 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。