

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

# 使用 Amazon S3 搭配 Amazon EC2 執行個體
<a name="AmazonS3"></a>

Amazon Simple Storage Service (Amazon S3) 是一項物件儲存服務，提供領先業界的可擴展性、資料可用性、安全性和效能。您可以使用 Amazon S3，從 Amazon EC2 執行個體或透過網路從任何位置，存放和擷取各種使用案例的任何資料量，例如資料湖、網站、備份和大數據分析。如需詳細資訊，請參閱[什麼是 Amazon S3？](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)

有兩種方式可從 Amazon EC2 執行個體存取 Amazon S3 資料： Amazon EC2 
+ **檔案存取** – 使用 [Amazon S3 檔案](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files.html)將 S3 儲存貯體掛載為執行個體上的高效能檔案系統。
+ **物件存取** – 使用 [Amazon S3 API](https://docs.aws.amazon.com/AmazonS3/latest/API/)、 AWS CLI、 AWS SDKs 或 wget 等工具來複製物件往返 S3。

## 使用 Amazon S3 檔案存取檔案
<a name="S3FilesAccess"></a>

Amazon S3 Files 是一種無伺服器檔案系統，可讓您將 S3 一般用途儲存貯體掛載為運算執行個體上的高效能檔案系統。透過 S3 檔案，您可以使用本機掛載路徑上的讀取和寫入等標準檔案系統操作，以檔案形式存取 S3 物件。

您可以在啟動時或在執行中的執行個體上啟動後，將 S3 檔案系統掛載到 EC2 執行個體。

**先決條件**

使用 EC2 執行個體設定 S3 檔案之前，請確定您有下列項目：
+ S3 檔案系統和至少一個處於可用狀態的掛載目標。如需有關建立 S3 檔案系統的資訊，請參閱《[Amazon S3 使用者指南》中的使用 Amazon S3 檔案](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files.html)。 *Amazon S3 *
+ 連接執行個體描述檔的 EC2 Linux 執行個體。如需掛載檔案系統所需許可的相關資訊，請參閱《*Amazon S3 使用者指南*》中的 [IAM 角色和政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files-prereq-policies.html#s3-files-prereq-iam)。
+ 允許執行個體與檔案系統掛載目標之間 NFS 流量 （連接埠 2049) 的安全群組。如需所需安全群組設定的資訊，請參閱《*Amazon S3 使用者指南*》中的[安全群組](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files-prereq-policies.html#s3-files-prereq-security-groups)。

**使用 EC2 主控台在啟動時將檔案系統掛載至 EC2 執行個體**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 選擇**啟動執行個體**。

1. 在**Network settings** (網路設定) 中，執行下列操作：

   1. 選擇**編輯**。

   1. 針對**子網路**，選取子網路。

   1. 選取預設安全群組，以確保您的 EC2 執行個體可以存取 S3 檔案系統。您無法使用此安全群組透過 Secure Shell (SSH) 存取您的 EC2 執行個體。若要透過 SSH 存取，您可以稍後編輯預設安全群組並新增規則以允許 SSH，或新增允許 SSH 的新安全群組。您可以使用以下設定：

      1. **Type (類型)**：SSH 

      1. **Protocol (通訊協定)**：TCP 

      1. **Port Range (連接埠範圍)**：22 

      1. **Source (來源)**：Anywhere (任何位置) 0.0.0.0/0

1. 在**設定儲存**體下，執行下列動作：

   1. 在**檔案系統**下，選擇 **S3 檔案**。

   1. 選擇 **Add shared file system (新增共用檔案系統)**。

   1. 對於 **S3 檔案系統**，您的檔案系統會根據您在網路設定中選取的子網路顯示在可用區域中。選擇您要掛載的 S3 檔案系統。如果您沒有任何檔案系統，請選擇**建立新的檔案系統來建立新的檔案系統**。

   1. 在 EC2 執行個體上輸入要掛載檔案系統的本機掛載路徑 （例如 `/mnt/s3files`)。

   1. 將產生命令來掛載檔案系統並將其新增至 fstab。您可以將此命令新增至**進階詳細資訊**下的**使用者資料**欄位。然後，您的 EC2 執行個體將設定為在啟動時以及重新啟動時掛載 S3 檔案系統。您也可以在 EC2 執行個體啟動後執行這些命令。

1. 在**進階詳細資訊**下，將執行個體描述檔連接至您的執行個體。您的 IAM 角色必須具有掛載檔案系統和存取 S3 儲存貯體的許可。如需所需許可的詳細資訊，請參閱《*Amazon S3 使用者指南*》中的 [IAM 角色和政策](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files-prereq-policies.html#s3-files-prereq-iam)。

1. 選擇**啟動執行個體**。

   執行個體啟動後，會安裝所需的軟體公用程式，並掛載檔案系統。您可以透過導覽至本機掛載路徑來檢視檔案系統。

**在啟動後將檔案系統掛載至 EC2 執行個體**

1. 透過 Secure Shell (SSH) 或使用[ EC2 ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect.html) 主控台中的 EC2 Instance Connect 連線至 EC2 執行個體。

1. 若要掛載 S3 檔案系統，請使用掛載協助程式公用程式 `amazon-efs-utils`。根據您的 Linux 發行版本，使用下列其中一個命令來安裝`amazon-efs-utils`套件：

   1. 如果您使用的是 Amazon Linux，請執行下列命令，從 Amazon 的儲存庫安裝 efs-utils：

      ```
      sudo yum -y install amazon-efs-utils
      ```

   1. 如果您使用其他[支援的 Linux 發行版本](https://github.com/aws/efs-utils/?tab=readme-ov-file#efs-utils)，請執行下列命令：

      ```
      curl https://amazon-efs-utils.aws.com/efs-utils-installer.sh | sudo sh -s -- --install
      ```

   1. 如需其他 Linux 發行版本，請參閱 *GitHub* 上的 [efs-utils](https://github.com/aws/efs-utils/?tab=readme-ov-file#on-other-linux-distributions) 儲存庫。

1. 使用下列命令建立檔案系統掛載點的目錄：

   ```
   sudo mkdir {path/to/mount}
   ```

1. 掛載 S3 檔案系統：

   ```
   FS="{YOUR_FILE_SYSTEM_ID}"
   sudo mount -t s3files $FS:/ {path/to/mount}
   ```

1. 確認檔案系統已掛載：

   ```
   df -h {path/to/mount}
   ```

**以檔案形式檢視 S3 儲存貯體中的物件**  
完成上述程序後，您現在可以使用標準檔案系統操作，在本機掛載路徑上讀取和寫入 S3 物件做為檔案。如果您的 S3 儲存貯體中有物件，您可以使用下列命令將其檢視為檔案：

```
ls {path/to/mount}
```

## 物件型存取
<a name="objectaccess"></a>

您可以使用 Amazon S3 S3 之間複製檔案。 AWS CLI AWS SDKs 如果您有必要的許可，您可以使用下列其中一種方法，在 Amazon S3 和執行個體之間複製檔案。

------
#### [ wget ]

**注意**  
此方法僅適用於公有物件。如果物件非公有，您會收到 `ERROR 403: Forbidden` 訊息。如果您收到此錯誤，您必須使用 Amazon S3 主控台 AWS CLI、 AWS API、 AWS SDK 或 AWS Tools for Windows PowerShell，而且您必須擁有必要的許可。如需詳細資訊，請參閱《Amazon S3 使用者指南》**中的 [Amazon S3 中的身分和存取管理](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html)及[下載物件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html)。

**wget** 公用程式是 HTTP 和 FTP 用戶端，可用來從 Amazon S3 下載公有物件。其預設安裝在 Amazon Linux 和多數其他的發行版本上，也可供 Windows 下載。若要下載 Amazon S3 物件，請用下列命令並更換要下載之物件的 URL。

```
[ec2-user ~]$ wget https://amzn-s3-demo-bucket.s3.amazonaws.com/path-to-file
```

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

可以使用 [AWS Tools for Windows PowerShell](https://aws.amazon.com/powershell/)，將物件移入和移出 Amazon S3。

使用 [Copy-S3Object](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-S3Object.html) cmdlet，將 Amazon S3 物件複製至 Windows 執行個體，如下所示。

```
Copy-S3Object `
    -BucketName amzn-s3-demo-bucket `
    -Key path-to-file `
    -LocalFile my_copied_file.ext
```

或者，可以在 Windows 執行個體上使用 Web 瀏覽器來開啟 Amazon S3 主控台。

------
#### [ AWS CLI ]

您可以使用 AWS Command Line Interface (AWS CLI) 從 Amazon S3 下載限制項目，以及上傳項目。如需詳細資訊，包括如何安裝與設定工具，請參閱 [AWS Command Line Interface 詳細資訊頁面](https://aws.amazon.com/cli/)。

[aws s3 cp](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html) 命令類似於 Unix **cp** 命令。可讓您從 Amazon S3 複製檔案到執行個體，從執行個體複製檔案到 Amazon S3，以及從某一 Amazon S3 位置複製檔案到其他位置。

使用下列命令，將物件從 Amazon S3 複製到執行個體：

```
aws s3 cp s3://amzn-s3-demo-bucket/my_folder/my_file.ext my_copied_file.ext
```

使用下列命令將物件從執行個體複製回 Amazon S3：

```
aws s3 cp my_copied_file.ext s3://amzn-s3-demo-bucket/my_folder/my_file.ext
```

[aws s3 sync](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html) 命令可將整個 Amazon S3 儲存貯體同步至本機目錄位置。此功能在下載資料集，以及讓本機複本與遠端資料集保持同步時很有幫助。如果您擁有 Amazon S3 儲存貯體的適當許可，還能將命令中的來源與目的地位置對調，於完成後將本機目錄備份推送至雲端。

使用下列命令，將整個 Amazon S3 儲存貯體下載到執行個體上的本機目錄：

```
aws s3 sync s3://amzn-s3-demo-source-bucket local_directory
```

------
#### [ Amazon S3 API ]

您可以使用 API 來存取 Amazon S3 中的資料。您可使用此 API 來協助開發應用程式，並將其與其他 API 和軟體開發套件整合。如需詳細資訊，請參閱《[Amazon Simple Storage Service API 參考》中的使用 SDK 的 Amazon S3 程式碼範例 AWS SDKs](https://docs.aws.amazon.com/AmazonS3/latest/API/service_code_examples.html)。 **

------