

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

# 入門 AWS CloudShell
<a name="getting-started"></a>

本簡介教學課程說明如何使用 shell 命令列界面啟動 AWS CloudShell 和執行關鍵任務。

首先，您會登入 AWS 管理主控台 並選取 AWS 區域。然後，在新的瀏覽器視窗和要使用的 Shell 類型中啟動 CloudShell。

接下來，您可以在主目錄中建立新的資料夾，並從本機電腦上傳檔案到其中。您先使用預先安裝的編輯器處理該檔案，再從命令列將其做為程式執行。最後，您呼叫 AWS CLI 命令來建立 Amazon S3 儲存貯體，並將 檔案做為物件新增至儲存貯體。

## 先決條件
<a name="getting-started-prerequesities"></a>

**IAM 許可**

您可以透過將下列 AWS 受管政策連接至 IAM 身分 （例如使用者、角色或群組） AWS CloudShell 來取得 的許可：
+ **AWSCloudShellFullAccess**：提供使用者對 AWS CloudShell 及其功能的完整存取權。

在本教學課程中，您也可以與 互動 AWS 服務。更具體地說，您可以透過建立 Amazon S3 S3 互動。您的 IAM 身分需要至少授予 `s3:CreateBucket`和 `s3:PutObject`許可的政策。

如需詳細資訊，請參閱[《Amazon Simple Storage Service 使用者指南》中的 Amazon S3 動作](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security_iam_service-with-iam.html#security_iam_service-with-iam-id-based-policies-actions)。 **

**練習檔案**

此練習也涉及上傳和編輯檔案，然後從命令列界面做為程式執行。在本機電腦上開啟文字編輯器，並新增下列程式碼片段。

```
import sys
x=int(sys.argv[1])
y=int(sys.argv[2])
sum=x+y
print("The sum is",sum)
```

儲存檔案，並將其命名為 `add_prog.py`。

## 目錄
<a name="getting-started-contents"></a>
+ [步驟 1：登入 AWS 管理主控台](#start-session)
+ [步驟 2：選取區域、啟動 AWS CloudShell，然後選擇 shell](#launch-region-shell)
+ [步驟 3：從 下載檔案 AWS CloudShell](#download-file)
+ [步驟 4：將檔案上傳至 AWS CloudShell](#folder-upload)
+ [步驟 5：從 移除檔案 AWS CloudShell](#remove-files)
+ [步驟 6：建立主目錄備份](#home-directory-backup)
+ [步驟 7：重新啟動 shell 工作階段](#restart-shell-session)
+ [步驟 8：刪除 shell 工作階段主目錄](#delete-shell-session)
+ [步驟 9：編輯檔案的程式碼，並從命令列執行](#edit-run)
+ [步驟 10：使用 將檔案 AWS CLI 新增為 Amazon S3 儲存貯體中的物件](#s3-put)

## 步驟 1：登入 AWS 管理主控台
<a name="start-session"></a>

此步驟涉及輸入您的 IAM 使用者資訊以存取 AWS 管理主控台。如果您已在主控台中，請跳至[步驟 2](#launch-region-shell)。
+ 您可以使用 IAM AWS 管理主控台 使用者登入 URL 或前往主登入頁面來存取 。

------
#### [ IAM user sign-in URL ]
  + 開啟瀏覽器並輸入下列登入 URL。`account_alias_or_id` 以管理員提供的帳戶別名或帳戶 ID 取代 。

    ```
    https://account_alias_or_id.signin.aws.amazon.com/console/
    ```
  + 輸入您的 IAM 登入憑證，然後選擇**登入**。

------
#### [ Main sign-in page ]
  + 開啟 https：//[https://aws.amazon.com/console/](https://aws.amazon.com/console/)。
  + 如果您先前沒有使用此瀏覽器登入，則會顯示主要登入頁面。選擇 IAM 使用者，輸入帳戶別名或帳戶 ID，然後選擇**下一步**。
  + 如果您之前已以 IAM 使用者身分登入。您的瀏覽器可能會記住 的帳戶別名或帳戶 ID AWS 帳戶。若是如此，請輸入您的 IAM 登入憑證，然後選擇**登入**。

------
**注意**  
您也可以以[根使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/)身分登入。此身分具有帳戶中所有 AWS 服務 和 資源的完整存取權。強烈建議您不要將根使用者用於日常任務，即使是管理任務。反之，請遵循僅以根使用者建立您第一個 IAM 使用者的最佳實務。

## 步驟 2：選取區域、啟動 AWS CloudShell，然後選擇 shell
<a name="launch-region-shell"></a>

在此步驟中，您可以從主控台界面啟動 CloudShell、選擇可用的 AWS 區域，然後切換到您偏好的 shell，例如 Bash、PowerShell 或 Z shell。

1. 若要選擇要 AWS 區域 使用的 ，請前往**選取區域**選單，然後選取[支援的 AWS 區域](supported-aws-regions.md)。(可用區域會反白顯示。)
**重要**  
如果您切換區域，界面會重新整理，且所選 的名稱 AWS 區域 會顯示在命令列文字上方。您新增至持久性儲存體的任何檔案都只能在相同的 中使用 AWS 區域。如果您變更區域，則可以存取不同的儲存體和檔案。
**重要**  
如果在 上啟動 CloudShell 時，所選區域中無法使用 CloudShellConsole Toolbar，則主控台左下角的預設區域會設定為最接近所選區域的區域。 CloudShell 您可以執行 命令，提供管理與預設區域不同區域中資源的許可。如需詳細資訊，請參閱[使用 AWS 區域](working-with-aws-cloudshell.md#region-selection)。  

**Example**  
**範例**  
如果您選擇歐洲 （西班牙），eu-south-2但歐洲 （西班牙） 無法使用 CloudShelleu-south-2，則預設區域會設定為歐洲 （愛爾蘭） eu-west-1，最接近歐洲 （西班牙）eu-south-2。  
您將使用預設區域的服務配額，歐洲 （愛爾蘭） eu-west-1和相同的 CloudShell 工作階段將還原至所有區域。預設區域可能會變更，而且您會在 CloudShell 瀏覽器視窗中收到通知。

1. 從 中 AWS 管理主控台，您可以選擇下列其中一個選項來啟動 CloudShell：

   1. 在導覽列上，選擇 **CloudShell** 圖示。

   1. 在**搜尋**方塊中，輸入「CloudShell」，然後選擇 **CloudShell**。

   1. 在**最近造訪的**小工具中，選擇 **CloudShell**。

   1. 在 主控台左Console Toolbar下角的 上選擇 **CloudShell**。
      + 您可以拖曳 來調整 CloudShell 工作階段的高度`=`。
      + 您可以按一下**新瀏覽器索引標籤中的開啟**，將 CloudShell 工作階段切換為全螢幕。

   出現命令提示時，表示 Shell 已準備好開始互動。
**注意**  
如果您遇到無法成功啟動或與 互動的問題 AWS CloudShell，請檢查相關資訊，以識別和解決 中的這些問題[故障診斷 AWS CloudShell](troubleshooting.md)。

1. 若要選擇要使用的預先安裝 Shell，請在命令列提示中輸入其程式名稱。

------
#### [ Bash ]

   `bash`

   如果您切換至 Bash，命令提示字元的 符號會更新為 `$`。

**注意**  
Bash 是啟動時執行的預設 Shell AWS CloudShell。

------
#### [ PowerShell ]

   `pwsh`

   如果切換至 PowerShell，則命令提示中的符號會更新為 `PS>`。

------
#### [ Z shell ]

   `zsh`

   如果您切換至 Z shell，命令提示字元的 符號會更新為 `%`。

------

   如需有關預先安裝在 shell 環境中的版本的資訊，請參閱 [AWS CloudShell 運算環境](vm-specs.md)區段中的 [shell 資料表](vm-specs.md#installed-shells)。

## 步驟 3：從 下載檔案 AWS CloudShell
<a name="download-file"></a>

**注意**  
此選項不適用於 VPC 環境。

此步驟會逐步引導您下載檔案。

1. 若要下載檔案，請前往**動作**，然後從功能表中選擇**下載檔案**。

   隨即顯示**下載檔案**對話方塊。

1. 在**下載檔案**對話方塊中，輸入要下載之檔案的路徑。
**注意**  
您可以在指定要下載的檔案時使用絕對或相對路徑。使用相對路徑名稱`/home/cloudshell-user/`時， 預設會自動新增至開頭。因此，若要下載名為 的檔案`mydownload-file`，下列兩項都是有效的路徑：  
**絕對路徑：** `/home/cloudshell-user/subfolder/mydownloadfile.txt`
**相對路徑：** `subfolder/mydownloadfile.txt`

1. 選擇 **Download** (下載)。

   如果檔案路徑正確，則會顯示對話方塊。您可以使用此對話方塊來開啟具有預設應用程式的檔案。或者，您可以將檔案儲存到本機電腦上的資料夾。

**注意**  
當您在 上啟動 CloudShell 時，無法使用下載選項Console Toolbar。您可以從 CloudShell 主控台或使用 Chrome Web 瀏覽器下載檔案。

## 步驟 4：將檔案上傳至 AWS CloudShell
<a name="folder-upload"></a>

**注意**  
此選項不適用於 VPC 環境。

此步驟說明如何上傳檔案，然後將其移至主目錄中的新目錄。<a name="create-folder-upload-file"></a>

1. 若要檢查您目前的工作目錄，請在提示中輸入下列命令：

   `pwd`

   當您按下 **Enter** 時， shell 會傳回您目前的工作目錄 （例如 `/home/cloudshell-user`)。

1. 若要將檔案上傳至此目錄，請前往**動作**，然後從功能表中選擇**上傳檔案**。

   **上傳檔案**對話方塊隨即顯示。

1. 選擇 **Browse (瀏覽)**。

1. 在系統**的檔案上傳**對話方塊中，選取您為此教學課程 (`add_prog.py`) 建立的文字檔案，然後選擇**開啟**。

1. 在**上傳檔案**對話方塊中，選擇**上傳**。

   進度列會追蹤上傳。如果上傳成功，訊息會確認`add_prog.py`已新增至主目錄的根目錄。

1. 若要建立 檔案的目錄，請輸入 make directoryies 命令：`mkdir mysub_dir`。

1. 若要將上傳的檔案從主目錄的根目錄移至新目錄，請使用 `mv`命令：

   `mv add_prog.py mysub_dir`.

1. 若要將工作目錄變更為新目錄，請輸入 `cd mysub_dir`。

   命令提示更新，表示您已變更工作目錄。

1. 若要檢視目前目錄的內容，`mysub_dir`請輸入 `ls`命令。

   工作目錄的內容會列出。這包括您剛上傳的檔案。

## 步驟 5：從 移除檔案 AWS CloudShell
<a name="remove-files"></a>

此步驟說明如何從中移除檔案 AWS CloudShell。<a name="remove-files-proc"></a>

1. 若要從 移除檔案 AWS CloudShell，請使用標準 shell 命令，例如 `rm`（移除）。

   `rm my-file-for-removal`

1. 若要移除符合指定條件的多個檔案，請執行 `find`命令。

   下列範例會移除名稱中包含尾碼 ".pdf" 的所有檔案。

   ```
   find -type f -name '*.pdf' -delete
   ```

**注意**  
假設您在特定 AWS CloudShell 中停止使用 AWS 區域。然後，該區域中的持久性儲存體中的資料會在指定的期間之後自動移除。如需詳細資訊，請參閱[持久性儲存](limits.md#persistent-storage-limitations)。

## 步驟 6：建立主目錄備份
<a name="home-directory-backup"></a>

此步驟說明如何建立主目錄備份。<a name="home-directory-backup-proc"></a>

1. **建立備份檔案**

   在主目錄外建立暫存資料夾。

   ```
   HOME_BACKUP_DIR=$(mktemp --directory)
   ```

   您可以使用下列其中一個選項來建立備份：

   1. **使用 tar 建立備份檔案**

      若要使用 tar 建立備份檔案，請輸入下列命令：

      ```
      tar \
          --create \
          --gzip \
          --verbose \
          --file=${HOME_BACKUP_DIR}/home.tar.gz \
          [--exclude ${HOME}/.cache] \ // Optional
          ${HOME}/
      echo "Home directory backed up to this file: ${HOME_BACKUP_DIR}/home.tar.gz"
      ```

   1. **使用 zip 建立備份檔案**

      若要使用 zip 建立備份檔案，請輸入下列命令：

      ```
      zip \
          --recurse-paths \
          ${HOME_BACKUP_DIR}/home.zip \
          ${HOME} \
          [--exclude ${HOME}/.cache/\*] // Optional
      echo "Home directory backed up to this file: ${HOME_BACKUP_DIR}/home.zip"
      ```

1. **將備份檔案傳輸至 CloudShell 外部** 

   您可以使用下列其中一個選項，將備份檔案傳輸至 CloudShell 外部：

   1. **在本機電腦上下載備份檔案**

      您可以下載在上一個步驟中建立的檔案。如需如何從 CloudShell 下載檔案的詳細資訊，請參閱[從 下載檔案 AWS CloudShell](#download-file)。

      在下載檔案對話方塊中，輸入要下載之檔案的路徑 （例如，`/tmp/tmp.iA99tD9L98/home.tar.gz`)。

   1. **將備份檔案傳輸至 S3**

      若要產生儲存貯體，請輸入下列命令：

      ```
      aws s3 mb s3://${BUCKET_NAME}
      ```

      使用 AWS CLI 將檔案複製到 S3 儲存貯體：

      ```
      aws s3 cp ${HOME_BACKUP_DIR}/home.tar.gz s3://${BUCKET_NAME}
      ```
**注意**  
可能需要支付資料傳輸費用。

1. **直接備份到 S3 儲存貯體**

   若要直接備份到 S3 儲存貯體，請輸入下列命令：

   ```
   aws s3 cp \
       ${HOME}/ \
       s3://${BUCKET_NAME} \
       --recursive \
       [--exclude .cache/\*] // Optional
   ```

## 步驟 7：重新啟動 shell 工作階段
<a name="restart-shell-session"></a>

此步驟說明如何重新啟動 shell 工作階段。

**注意**  
作為安全措施，如果您長時間不使用鍵盤或指標與 shell 互動，工作階段會自動停止。長時間執行的工作階段也會自動停止。如需詳細資訊，請參閱[Shell 工作階段](limits.md#session-lifecycle-limitations)。

1. 若要重新啟動 shell 工作階段，請選擇**動作**、**重新啟動**。

   您會收到重新啟動會 AWS CloudShell 停止目前 中所有作用中工作階段的通知 AWS 區域。

1. 若要確認，請選擇**重新啟動**。

   界面會顯示 CloudShell 運算環境正在停止的訊息。在環境停止並重新啟動後，您可以在新的工作階段中開始使用命令列。
**注意**  
在某些情況下，您的環境可能需要幾分鐘的時間才能重新啟動。

## 步驟 8：刪除 shell 工作階段主目錄
<a name="delete-shell-session"></a>

此步驟說明如何刪除 shell 工作階段。

**注意**  
此選項不適用於 VPC 環境。當您重新啟動 VPC 環境時，會刪除其主目錄。

**警告**  
刪除主目錄是不可復原的動作，其中儲存在主目錄中的所有資料都會永久刪除。不過，在下列情況下，您可能想要考慮此選項：  
您不正確地修改了檔案，且無法存取 AWS CloudShell 運算環境。刪除主目錄 AWS CloudShell 會返回其預設設定。
您想要 AWS CloudShell 立即從 移除所有資料。如果您在 AWS CloudShell AWS 區域中停止使用 ，除非您在 區域中 AWS CloudShell 再次啟動，否則持久性儲存會在[保留期間結束時自動刪除](limits.md#persistent-storage-limitations)。
如果您需要長期儲存檔案，請考慮使用 Amazon S3 等服務。

1. 若要刪除 Shell 工作階段，請選擇**動作**、**刪除**。

   系統會通知您，刪除 AWS CloudShell 主目錄會刪除目前存放在您 AWS CloudShell 環境中的所有資料。
**注意**  
您無法復原此動作。

1. 若要確認刪除，請在文字輸入欄位中輸入刪除，然後選擇**刪除**。

   AWS CloudShell 會停止目前 中的所有作用中工作階段 AWS 區域。您可以建立新的環境或設定 CloudShell VPC 環境。

1. 若要建立新的環境，請選擇**開啟標籤**。

1. 若要建立 CloudShell VPC 環境，請選擇**建立 VPC 環境**。

   **手動結束 shell 工作階段**

   使用命令列，您可以離開 shell 工作階段並使用 `exit`命令登出。然後，您可以按任何鍵重新連線並繼續使用 AWS CloudShell。

## 步驟 9：編輯檔案的程式碼，並使用命令列執行
<a name="edit-run"></a>

此步驟示範如何使用預先安裝的Vim編輯器來使用 檔案。然後，您可以從命令列將該檔案作為程式執行。

1. 若要編輯您在上一個步驟中上傳的檔案，請輸入下列命令：

   `vim add_prog.py`

   shell 界面會重新整理以顯示Vim編輯器。

1. 若要編輯 中的檔案Vim，請按 **I**鍵。現在編輯內容，讓程式相加三個數字，而不是兩個數字。

   ```
   import sys
   x=int(sys.argv[1])
   y=int(sys.argv[2])
   z=int(sys.argv[3])
   sum=x+y+z
   print("The sum is",sum)
   ```
**注意**  
如果您將文字貼入編輯器並啟用[安全貼上功能](customizing-cshell.md#safe-paste-enable)，則會顯示警告。複製的多行文字可能包含惡意指令碼。使用安全貼上功能，您可以在貼上前驗證完整文字。如果您確信文字是安全的，請選擇**貼上**。

1. 編輯程式後，按 **Esc** 進入Vim命令模式。然後，輸入 `:wq`命令來儲存檔案並結束編輯器。

   
**注意**  
如果您是初次使用Vim命令模式，一開始您可能會發現在命令模式和插入模式之間切換具有挑戰性。儲存檔案並結束應用程式時，會使用命令模式。插入新文字時會使用插入模式。若要進入插入模式，請按 **I**，若要進入命令模式，請按 **Esc**。如需 Vim 和其他 中可用工具的詳細資訊 AWS CloudShell，請參閱 [開發工具和 shell 公用程式](vm-specs.md#utilities-installed)。

1. 在主命令列界面上，執行下列程式，並指定三個數字進行輸入。語法如下。

   `python3 add_prog.py 4 5 6`

   命令列會顯示程式輸出：`The sum is 15`。

## 步驟 10：使用 將檔案 AWS CLI 新增為 Amazon S3 儲存貯體中的物件
<a name="s3-put"></a>

在此步驟中，您會建立 Amazon S3 儲存貯體，然後使用 **PutObject** 方法將程式碼檔案新增為該儲存貯體中的物件。

**注意**  
本教學課程說明如何在 AWS CLI 中使用 AWS CloudShell 與其他 AWS 服務互動。使用此方法，您不需要下載或安裝任何其他資源。此外，因為您已經在 Shell 中驗證身分，因此無需設定憑證即可呼叫。

1. 若要在指定的 中建立儲存貯體 AWS 區域，請輸入下列命令：

   ```
   aws s3api create-bucket --bucket insert-unique-bucket-name-here --region us-east-1
   ```
**注意**  
如果您要在 `us-east-1`區域之外建立儲存貯體，`create-bucket-configuration`請使用 `LocationConstraint` 參數新增 以指定區域。以下為範例語法。  

   ```
   $ aws s3api create-bucket --bucket my-bucket --region eu-west-1 --create-bucket-configuration LocationConstraint=eu-west-1
   ```

   如果呼叫成功，命令列會顯示來自 服務的回應，類似於下列輸出。

   ```
   {
       "Location": "/insert-unique-bucket-name-here"
   }
   ```
**注意**  
如果您未遵守[命名儲存貯體的規則](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html#bucketnamingrules)，則會顯示下列錯誤：呼叫 CreateBucket 操作時發生錯誤 (InvalidBucketName)：指定的儲存貯體無效。

1. 若要上傳檔案並將檔案新增為物件至您剛建立的儲存貯體，請呼叫 **PutObject**方法。

   ```
   aws s3api put-object --bucket insert-unique-bucket-name-here --key add_prog --body add_prog.py
   ```

   物件上傳到 Amazon S3 儲存貯體後，命令列會顯示來自服務的回應，類似於下列輸出：

   ```
   {"ETag": "\"ab123c1:w:wad4a567d8bfd9a1234ebeea56\""}
   ```

   `ETag` 是所存放物件的雜湊。您可以使用此雜湊來[檢查上傳至 Amazon S3 之物件的完整性](https://repost.aws/knowledge-center/data-integrity-s3)。

## 相關主題
<a name="related-topics-started"></a>
+ [在 CloudShell 中從 CLI 管理 AWS 服務](working-with-aws-cli.md)
+ [在本機電腦和 CloudShell 之間複製多個檔案](multiple-files-upload-download.md)
+ [AWS CloudShell 概念](working-with-aws-cloudshell.md)
+ [自訂您的 AWS CloudShell 體驗在 Amazon VPC AWS CloudShell 中使用](customizing-cshell.md)