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

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

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

启动时AWS CloudShell,将创建一个基于 Amazon Linux 2023 的计算环境来托管 shell 体验。该环境配置了计算资源(vCPU 和内存),并提供了大量可从命令行界面访问的预安装软件。您还可以通过安装软件和修改 Shell 脚本来配置默认环境。

计算环境资源

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

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

  • 2 GiB RAM

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

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

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

CloudShell 网络要求

WebSockets

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

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

注意

如果要通过允许列出特定 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 ManagerAPI 参考中的StartSession操作。

预安装的软件

注意

由于 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 SDK 和工具包

cdk --version

AWS CLI

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

有关如何确保使用最多的 up-to-date AWS CLI版本 2 的信息,请参阅安装 AWS CLI 到主目录

aws --version

EB CLI

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

有关 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 for PowerShell 的模块化版本 (AWS.Tools)。

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

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

运行时系统和 AWS 软件开发工具包:Node.js 和 Python 3

运行时系统和 AWS 软件开发工具包
名称 描述 版本信息

Node.js(带 npm)

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

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

  • Node.js: node --version

  • npm:npm --version

Node.js JavaScript 中的 SDK

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

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

Python

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

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

  • Python 3: python3 --version

  • pip: pip3 --version

SDK for Python (Boto3)

Boto 是 Python 开发人员用来创建、配置和管理 AWS services(例如 Amazon EC2 和 Amazon S3)的软件开发工具包(SDK)。SDK 提供了面向对象的 API 以及对的低级访问权限。 easy-to-use AWS services

更多信息,请参阅 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

CodeCommit 适用于 Git 的实用工具

git-remote-codecommit 是一个实用工具,它提供了一种通过扩展 Git 从 CodeCommit 存储库中推送和提取代码的简单方法。这是支持使用联合访问、身份提供程序和临时凭证建立连接的推荐方法。

有关更多信息,请参阅《AWS CodeCommit用户指南》 git-remote-codecommit中的 HTTPS 连接的设置步骤。AWS CodeCommit

pip3 list | grep git-remote-codecommit

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 使您可以将应用程序与基础架构分开,以便快速交付软件。它使你能够在内部构建 DockerfilesAWS CloudShell,并使用 CDK 构建 Docker 资产。有关 Docker 支持哪些区域的信息,请参阅 Dock er 区域。你应该知道,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 计算环境中尚不可用的软件。例如,你可以使用 DNF 包管理实用程序sudo进行安装,它会生成一头奶牛的 ASCII 艺术图片cowsay,上面写着一条消息:

sudo dnf install cowsay

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

重要

Package 管理工具,例如 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。