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 瀏覽器與 CloudShell 服務之間在 AWS 雲端進行雙向互動式通訊。如果您在私有網路中使用瀏覽器,代理伺服器和防火牆可能會協助安全存取網際網路。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 AWS Systems Manager,例如us-east-2美國東部 (俄亥俄) 區域。

由於 session-id 是在特定 Systems Manager 工作階段成功啟動建立,因此您只能在更新 URL 允許清單wss://ssmmessages.region.amazonaws.com時指定 。如需詳細資訊,請參閱 AWS Systems Manager API 參考中的 StartSession 操作。

預先安裝的軟體

注意

由於 AWS CloudShell 開發環境會定期更新,以提供最新軟體的存取權,因此我們不會在本文件中提供特定版本編號。反之,我們會說明如何檢查已安裝的版本。若要檢查已安裝的版本,請輸入程式名稱,接著輸入 --version選項 (例如,git --version)。

殼層

預先安裝的 shell
名稱 描述 版本資訊

Bash

Bash shell 是 的預設 shell 應用程式 AWS CloudShell。

bash --version

PowerShell (pwsh)

PowerShell 提供命令列界面和指令碼語言支援,建置在 Microsoft 的 .NET Command Language Runtime 之上。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 命令 cdk,是與您的 AWS CDK 應用程式互動的主要工具。它會執行您的應用程式、查詢您定義的應用程式模型,以及產生和部署 產生的 AWS CloudFormation 範本 AWS CDK。

如需詳細資訊,請參閱 AWS CDK Toolkit

cdk --version

AWS CLI

AWS CLI 是命令列界面,可用來從命令列管理多個 AWS 服務,並使用指令碼將其自動化。如需詳細資訊,請參閱從 CloudShell 中的 CLI 管理 AWS 服務

如需如何確保您使用的是up-to-date AWS CLI 2 的相關資訊,請參閱 安裝 AWS CLI 到您的主目錄

aws --version

EB CLI

CLI AWS Elastic Beanstalk 提供命令列界面,可簡化從本機儲存庫建立、更新和監控環境。

如需詳細資訊,請參閱《 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 AWS Tools for PowerShell.Tools)。

如需詳細資訊,請參閱AWS Tools for PowerShell 《 使用者指南》中的使用 AWS Tools for PowerShell

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) 為 Amazon S3、Amazon EC2、DynamoDB 和 Amazon SWF 等 AWS 服務提供 JavaScript 物件,有助於簡化編碼。如需詳細資訊,請參閱《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 Packaging Authority 提供的文件

  • Python 3: python3 --version

  • pip: pip3 --version

SDK for Python (Boto3)

Boto 是 Python 開發人員用來建立、設定和管理的軟體開發套件 (SDK) AWS 服務,例如 Amazon EC2 和 Amazon S3。開發套件提供easy-to-use物件導向 API,以及對 的低階存取 AWS 服務。

如需詳細資訊,請參閱 Boto3 文件

pip3 list | grep boto3

開發工具和 shell 公用程式

開發工具和 shell 公用程式
名稱 描述 版本資訊

bash-completion

bash-completion 是 shell 函數的集合,可允許透過按下 Tab 鍵自動完成部分輸入的命令或引數。您可以在 中找到 bash-completion 支援的套件/usr/share/bash-completion/completions

若要設定套件命令的自動完成,必須取得程式檔案。例如,若要設定 Git 命令的自動完成,請將以下幾行新增至 ,.bashrc以便在您的 AWS CloudShell 工作階段啟動時可以使用此功能:

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

如果您想要使用自訂完成指令碼,請將它們新增至您的持久性主目錄 ($HOME),並直接在 中取得它們.bashrc

如需詳細資訊,請參閱 GitHub 上專案的 README 頁面。

dnf info bash-completion

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

nano nano 是適用於文字型界面的小型且易於使用的編輯器。如需詳細資訊,請參閱 GNU nano 文件

nano --version

procps

procps 是一種系統管理公用程式,可用來監控和停止目前執行中的程序。如需詳細資訊,請參閱列出可使用 procps 執行之程式的 README 檔案。

ps --version

SSH 用戶端

SSH 用戶端使用安全 Shell 通訊協定與遠端電腦進行加密通訊。OpenSSH 是預先安裝的 SSH 用戶端。如需詳細資訊,請參閱 OpenBSD 維護的 OpenSSH 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 是一個可自訂的編輯器,您可以透過文字型界面與之互動。如需詳細資訊,請參閱 https://vim.org 所提供的文件資源

vim --version

wget

wget 是一種電腦程式,用於從命令列中端點指定的 Web 伺服器擷取內容。如需詳細資訊,請參閱 GNU Wget 文件

wget --version

zip/unzip

zip/unzip 公用程式使用封存檔案格式,可提供無失真資料壓縮,而不會遺失資料。呼叫 zip 命令,在單一封存中將檔案分組和壓縮。使用解壓縮將檔案從封存擷取到指定的目錄。

unzip --version

zip --version

Docker

Docker 是開發、運送和執行應用程式的開放平台。Docker 可讓您將應用程式與基礎設施分開,以便快速交付軟體。它可讓您在內部建置 Dockerfile, 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,您可以選擇在 shell 的主目錄中手動安裝工具。

重要

您需要 AWS CLI 在主目錄中手動安裝 的複本,以便下次啟動 CloudShell 工作階段時可以使用。此安裝是必要的,因為新增至 外部目錄的檔案$HOME會在您完成 shell 工作階段後刪除。此外,在您安裝此複本之後 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 環境啟動時執行。.bashrc 指令碼會在預設 bash shell 啟動時執行。

警告

如果您錯誤地修改.bashrc檔案,之後可能無法存取您的 shell 環境。最好先複製 檔案再編輯。您也可以在編輯 時開啟兩個 Shell 來降低風險.bashrc。如果您在一個 Shell 中失去存取權,您仍然會登入另一個 Shell,並且可以復原任何變更。

如果您在錯誤修改.bashrc或任何其他檔案後失去存取權,您可以透過刪除主目錄 AWS CloudShell 來返回其預設設定。

在程序中,您將修改.bashrc指令碼,以便您的 shell 環境自動切換到執行 Z shell。

  1. .bashrc 使用文字編輯器 (例如 Vim) 開啟 :

    vim .bashrc
  2. 在編輯器界面中,按下 I 鍵開始編輯,然後新增下列項目:

    zsh
  3. 若要結束並儲存編輯.bashrc的檔案,請按 Esc 進入 Vim 命令模式並輸入下列內容:

    :wq

  4. 使用 source命令重新載入.bashrc檔案:

    source .bashrc

    當命令列界面再次可用時,提示符號 已變更為 % ,表示您現在正在使用 Z shell。