

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS CloudShell 運算環境：規格和軟體
<a name="vm-specs"></a>

當您啟動時 AWS CloudShell，會建立以 [Amazon Linux 2023 ](https://aws.amazon.com/linux/amazon-linux-2023/)為基礎的運算環境來託管 shell 體驗。環境使用[運算資源 (vCPU 和記憶體）](#vm-configuration) 設定，並提供各式各樣的[預先安裝軟體](#pre-installed-software)，可從命令列界面存取。請確定您在運算環境中安裝的任何軟體都已修補且為最新版本。您也可以透過安裝軟體和修改 shell 指令碼來設定預設環境。

## 運算環境資源
<a name="vm-configuration"></a>

每個 AWS CloudShell 運算環境都會指派下列 CPU 和記憶體資源：
+ 1 個 vCPU （虛擬中央處理單元）
+ 2-GiB RAM

此外，會使用下列儲存組態佈建環境：
+ 1-GB持久性儲存 （工作階段結束後儲存仍然存在）

如需詳細資訊，請參閱[持久性儲存](limits.md#persistent-storage-limitations)。

## CloudShell 網路需求
<a name="cloudshell-network-requirements"></a>

**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](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_StartSession.html) 操作。

## 預先安裝的軟體
<a name="pre-installed-software"></a>

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

### 殼層
<a name="installed-shells"></a>


**預先安裝的 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)
<a name="aws-services-installed"></a>


**CLI**  

| 名稱 | 描述 | 版本資訊 | 
| --- | --- | --- | 
| AWS CDK 工具組 CLI |  AWS CDK Toolkit 是 CLI 命令 `cdk`，是與您的 AWS CDK 應用程式互動的主要工具。它會執行您的應用程式、查詢您定義的應用程式模型，以及產生和部署 產生的 AWS CloudFormation 範本 AWS CDK。<br />如需詳細資訊，請參閱 [AWS CDK Toolkit](https://docs.aws.amazon.com/cdk/v2/guide/cli.html)。 | `cdk --version` | 
| AWS CLI |  AWS CLI 是一個命令列界面，您可以用來從命令列管理多個 AWS 服務，並使用指令碼將其自動化。如需詳細資訊，請參閱[在 CloudShell 中從 CLI 管理 AWS 服務](working-with-aws-cli.md)。如需如何確保您使用的是up-to-date AWS CLI 2 的相關資訊，請參閱 [安裝 AWS CLI 到您的主目錄](#install-cli-software)。 | `aws --version` | 
| EB CLI | CLI AWS Elastic Beanstalk 提供命令列界面，可簡化從本機儲存庫建立、更新和監控環境。<br />如需詳細資訊，請參閱《 *AWS Elastic Beanstalk 開發人員指南*》中的[使用 Elastic Beanstalk 命令列界面 (EB CLI)](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3.html)。 | `eb --version` | 
| Amazon ECS CLI | Amazon Elastic Container Service (Amazon ECS) 命令列界面 (CLI) 提供高階命令，可簡化叢集和任務的建立、更新和監控。<br />如需詳細資訊，請參閱《[Amazon Elastic Container Service 開發人員指南》中的使用 Amazon ECS 命令列界面](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_CLI.html)。 ** | `ecs-cli --version` | 
| AWS SAM CLI | AWS SAM CLI 是一種命令列工具，可在 AWS Serverless Application Model 範本和應用程式程式碼上操作。您可以執行數個任務。這包括在本機叫用 Lambda 函數、為無伺服器應用程式建立部署套件，以及將無伺服器應用程式部署至 AWS 雲端。<br />如需詳細資訊，請參閱《 *AWS Serverless Application Model 開發人員指南*》中的 [AWS SAM CLI 命令參考](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-command-reference.html)。 | `sam --version` | 
| AWS Tools for PowerShell |  AWS Tools for PowerShell 是建置在 公開功能上的 PowerShell 模組 適用於 .NET 的 SDK。使用 AWS Tools for PowerShell，您可以從 PowerShell 命令列在您的 AWS 資源上編寫操作指令碼。AWS CloudShell 預先安裝 的模組化版本 (AWS AWS Tools for PowerShell.Tools)。如需詳細資訊，請參閱AWS Tools for PowerShell 《 使用者指南[》中的使用適用於 PowerShell 的 AWS 工具](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-using.html)。 | `pwsh --Command 'Get-AWSPowerShellVersion'` | 

### 執行期和 AWS SDKs：Node.js 和 Python 3
<a name="runtimes-installed"></a>


**執行期和 AWS SDKs**  

| 名稱 | 描述 | 版本資訊 | 
| --- | --- | --- | 
| Node.js （含 npm) | Node.js 是一種 JavaScript 執行期，旨在讓您更輕鬆地套用非同步程式設計技術。如需詳細資訊，請參閱[官方 Node.js 網站上的文件。](https://nodejs.org/en/docs/)<br />npm 是套件管理員，可讓您存取 JavaScript 模組的線上登錄檔。如需詳細資訊，請參閱[官方 npm 網站上的文件](https://docs.npmjs.com/)。 |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/cloudshell/latest/userguide/vm-specs.html)  | 
|  Node.js 中適用於 JavaScript 的 SDK  | 軟體開發套件 (SDK) 透過為 Amazon S3、Amazon EC2、DynamoDB 和 Amazon SWF 等 AWS 服務提供 JavaScript 物件，協助簡化編碼。如需詳細資訊，請參閱《適用於 JavaScript 的 AWS SDK 開發人員指南》[https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/ ](https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/ )。 | `npm -g ls --depth 0 2>/dev/null \| grep aws-sdk` | 
| Python | Python 3 已準備好在 shell 環境中使用。Python 3 現在被視為程式設計語言的預設版本 (Python 2 的支援已於 2020 年 1 月結束）。如需詳細資訊，請參閱[官方 Python 網站上的文件](https://www.python.org/doc/)。<br />此外，預先安裝的是 pip，Python 套件安裝程式。您可以使用此命令列程式從線上索引安裝 Python 套件，例如 Python 套件索引。如需詳細資訊，請參閱 [Python Packaging Authority 提供的文件](https://pip.pypa.io/en/stable/)。 |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/cloudshell/latest/userguide/vm-specs.html)  | 
| 適用於 Python 的 SDK (Boto3) | Boto 是 Python 開發人員用來建立、設定和管理的軟體開發套件 (SDK) AWS 服務，例如 Amazon EC2 和 Amazon S3。開發套件提供easy-to-use物件導向 API，以及對 的低階存取 AWS 服務。<br />如需詳細資訊，請參閱 [Boto3 文件](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)。 | `pip3 list \| grep boto3` | 

### 開發工具和 shell 公用程式
<a name="utilities-installed"></a>


**開發工具和 shell 公用程式**  

| 名稱 | 描述 | 版本資訊 | 
| --- | --- | --- | 
| bash-completion | bash-completion 是 shell 函數的集合，可透過按 **Tab** 鍵自動完成部分輸入的命令或引數。您可以在 中找到 bash-completion 支援的套件`/usr/share/bash-completion/completions`。<br />若要設定套件命令的自動完成，必須取得程式檔案。例如，若要設定 Git 命令的自動完成，請將以下行新增至 ，`.bashrc`以便在 AWS CloudShell 工作階段啟動時可以使用此功能：<br />`source /usr/share/bash-completion/completions/git`<br />如果您想要使用自訂完成指令碼，請將它們新增至您的持久性主目錄 (`$HOME`)，並直接在 中取得它們`.bashrc`。<br />如需詳細資訊，請參閱 GitHub 上的專案的 [README](https://github.com/scop/bash-completion#readme) 頁面。 | `dnf info bash-completion` | 
| cqlsh-expansion | cqlsh-expansion 是一種工具組，其中包含針對 Amazon Keyspaces 預先設定的 cqlsh 和協助程式，同時保持與 Apache Cassandra 的完整相容性。如需詳細資訊，請參閱[使用 cqlsh 連線至 Amazon Keyspaces ](https://docs.aws.amazon.com/keyspaces/latest/devguide/programmatic.cqlsh.html)（適用於 Apache Cassandra) 開發人員指南中的 Amazon Keyspaces。 | `cqlsh-expansion --version` | 
| Docker | [Docker](https://docs.docker.com/guides/workshop/) 是開發、運送和執行應用程式的開放平台。Docker 可讓您將應用程式與基礎設施分開，以便快速交付軟體。它可讓您在內部建置 Dockerfile AWS CloudShell，並使用 CDK 建置 Docker 資產。如需 Docker 支援哪些 AWS 區域的詳細資訊，請參閱[支援的 AWS 區域 AWS CloudShell](supported-aws-regions.md)。您應該知道 Docker 在環境中的空間有限。如果您有大型的個別映像，或預先存在太多的 Docker 映像，可能會導致問題。如需 Docker 的詳細資訊，請參閱 [Docker 文件指南](https://docs.docker.com/get-started/overview/)。 | `docker --version` | 
| Git | Git 是一種分散式版本控制系統，可透過分支工作流程和內容預備來支援現代軟體開發實務。如需詳細資訊，請參閱 [Git 官方網站上的文件頁面](https://git-scm.com/doc)。 | `git --version` | 
| iputils | iputils 套件包含 Linux 聯網的公用程式。如需所提供公用程式的詳細資訊，請參閱 [ GitHub 上的 iputils 儲存庫](https://github.com/iputils/iputils)。 | iputils 工具的範例： `arping -V` | 
| jq | jq 公用程式會剖析 JSON 格式的資料，以產生由命令列篩選條件修改的輸出。如需詳細資訊，請參閱 [ GitHub 上託管的 jq 手冊](https://stedolan.github.io/jq/manual/)。 | `jq --version` | 
| kubectl | kubectl 是一種命令列工具，可使用 Kubernetes API 與 Kubernetes 叢集的控制平面進行通訊。 | `kubectl --version` | 
| make | make 公用程式使用 makefiles 來自動化任務集並組織程式碼編譯。如需詳細資訊，請參閱 [GNU Make 文件](https://www.gnu.org/software/make/)。 | `make --version` | 
| man | man 命令提供命令列公用程式和工具的手動頁面。例如， 會man ls傳回 ls命令的手動頁面，列出目錄的內容。如需詳細資訊，請參閱[人物頁面上的 Wikipedia 項目](https://en.wikipedia.org/wiki/Man_page)。 | `man --version` | 
| nano | nano 是適用於文字型界面的小型且易於使用的編輯器。如需詳細資訊，請參閱 [GNU nano 文件](https://www.nano-editor.org/docs.php)。 | `nano --version` | 
| OpenJDK 21 | Amazon Corretto 21 是 [OpenJDK 21 的長期支援 (LTS) ](https://openjdk.org/projects/jdk/21/)分佈。Amazon Corretto 是 Open Java Development Kit (OpenJDK) 的免費、多平台的生產就緒分佈。如需詳細資訊，請參閱 [Corretto 21 使用者指南中的什麼是 Amazon](https://docs.aws.amazon.com/corretto/latest/corretto-21-ug/what-is-corretto-21.html) *Corretto 21*？。 | `java -version` | 
|  procps  | procps 是一種系統管理公用程式，可用來監控和停止目前執行中的程序。如需詳細資訊，請參閱[列出可使用 procps 執行之程式的 README 檔案。](https://gitlab.com/procps-ng/procps/blob/master/README.md) | `ps --version` | 
| psql | PostgreSQL 是一種功能強大的開放原始碼資料庫系統，使用標準 SQL 功能，同時提供強大的功能，以安全地管理和擴展複雜的資料操作。如需詳細資訊，請參閱[什麼是 PostgreSQL](https://www.postgresql.org/about/)。 | `psql --version` | 
| SSH 用戶端 | SSH 用戶端使用安全 Shell 通訊協定與遠端電腦進行加密通訊。OpenSSH 是預先安裝的 SSH 用戶端。如需詳細資訊，請參閱 [OpenBSD 維護的 OpenSSH 網站](https://www.openssh.com/)。 OpenBSD  | `ssh -V` | 
| sudo | 使用 sudo 公用程式，使用者可以執行具有其他使用者安全許可的程式，通常是超級使用者。當您需要以系統管理員身分安裝應用程式時，Sudo 很有用。如需詳細資訊，請參閱 [Sudo 手冊](https://www.sudo.ws/man/1.8.14/sudo.man.html)。 | `sudo --version` | 
| tar | tar 是一種命令列公用程式，可用來將單一封存檔案中的多個檔案分組 （通常稱為 tarball)。如需詳細資訊，請參閱 [GNU tar 文件](https://www.gnu.org/software/wget/manual/)。 | `tar --version` | 
| tmux | tmux 是一種終端機多工器，可用於在多個視窗中同時執行不同的程式。如需詳細資訊，請參閱[提供 tmux 簡要簡介的部落格](https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/)。 | `tmux -V` | 
| vim | vim 是一種可自訂的編輯器，您可以透過文字型界面與之互動。如需詳細資訊，請參閱 https：//[vim.org 上提供的文件資源](https://www.vim.org/docs.php)。 | `vim --version` | 
| wget | wget 是一種電腦程式，用於從命令列中端點指定的 Web 伺服器擷取內容。如需詳細資訊，請參閱 [GNU Wget 文件](https://www.gnu.org/software/wget/manual/)。 | `wget --version` | 
| zip/unzip | zip/unzip 公用程式使用封存檔案格式，可提供無失真的資料壓縮，而不會遺失資料。呼叫 zip 命令，在單一封存中分組和壓縮檔案。使用 unzip 將檔案從封存擷取到指定的目錄。 | `unzip --version`<br />`zip --version` | 

## 安裝 AWS CLI 到您的主目錄
<a name="install-cli-software"></a>

如同您 CloudShell 環境中預先安裝的其餘軟體， AWS CLI 工具會自動更新為排程升級和安全性修補程式。如果您想要確保您擁有up-to-date的 AWS CLI，您可以選擇在 shell 的主目錄中手動安裝工具。

**重要**  
您需要 AWS CLI 在主目錄中手動安裝 的複本，以便下次啟動 CloudShell 工作階段時可以使用。需要此安裝，因為新增至 外部目錄的檔案`$HOME`會在您完成 shell 工作階段後刪除。此外，在您安裝此副本之後 AWS CLI，不會自動更新。換句話說，管理更新和安全性修補程式是您的責任。  
如需 AWS 共同責任模型的詳細資訊，請參閱 [中的資料保護 AWS CloudShell](data-protection.md)。<a name="install-cli-software-proc"></a>

**安裝 AWS CLI**

1. 在 CloudShell 命令列中，使用 `curl`命令將 AWS CLI 已安裝 的壓縮副本傳輸至 shell：

   ```
   curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
   ```

1. 解壓縮壓縮的資料夾：

   ```
   unzip awscliv2.zip
   ```

1. 若要將工具新增至指定的資料夾，請執行 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
   ```

1. 為了方便起見，我們建議您也更新`PATH`環境變數，以便在執行`aws`命令時不需要指定工具安裝的路徑：

   ```
   export PATH=/home/cloudshell-user/usr/local/bin:$PATH
   ```
**注意**  
如果您復原此變更至 `PATH`，則不具有指定路徑的`aws`命令 AWS CLI 預設會使用預先安裝的 版本。

## 在 shell 環境上安裝第三方軟體
<a name="installing-software"></a>

**注意**  
建議您先檢閱[共同安全責任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)，再將任何第三方應用程式安裝至 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
<a name="modifying-shell-scripts"></a>

如果您想要修改預設 shell 環境，您可以編輯 shell 環境每次啟動時都會執行的 shell 指令碼。`.bashrc` 指令碼會在預設 bash shell 啟動時執行。

**警告**  
如果您錯誤地修改`.bashrc`檔案，之後可能無法存取您的 shell 環境。最好先複製檔案再編輯。您也可以在編輯 時開啟兩個 Shell 來降低風險`.bashrc`。如果您在一個 shell 中失去存取權，您仍然會登入另一個 shell，並且可以轉返任何變更。  
如果您在錯誤修改`.bashrc`或任何其他檔案後失去存取權，您可以透過[刪除主目錄](getting-started.md#delete-shell-session) AWS CloudShell 來返回其預設設定。

在此程序中，您將修改`.bashrc`指令碼，讓您的 shell 環境自動切換到執行 Z shell。

1. `.bashrc` 使用文字編輯器 （例如 Vim) 開啟 ：

   ```
   vim .bashrc
   ```

1. 在編輯器界面中，按下 **I** 鍵開始編輯，然後新增下列項目：

   ```
   zsh
   ```

1. 若要結束並儲存編輯過的`.bashrc`檔案，請按 **Esc** 進入 Vim 命令模式並輸入下列命令：

   `:wq `

1. 使用 `source`命令重新載入`.bashrc`檔案：

   ```
   source .bashrc
   ```

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