

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

# 在 Amazon EC2 上掛載 S3 檔案系統
<a name="s3-files-mounting"></a>

若要在 EC2 執行個體上掛載 S3 檔案系統，您必須使用 S3 檔案掛載協助程式。掛載協助程式可協助您在執行支援分佈的 EC2 執行個體上掛載 S3 檔案系統。掛載檔案系統時，掛載協助程式會定義稱為 的新網路檔案系統類型`s3files`，這與 Linux 中的標準`mount`命令完全相容。掛載協助程式也支援使用 EC2 Linux 執行個體上`/etc/fstab`組態檔案中的項目，在執行個體開機時間自動掛載 S3 檔案系統。掛載協助程式是開放原始碼工具集合的一部分，這些工具會在您安裝 S3 Files 用戶端 (amazon-efs-utils) 時安裝。

![圖表顯示 S3 儲存貯體、S3 檔案系統和 Amazon EC2 執行個體之間的資料流程。](http://docs.aws.amazon.com/zh_tw/AmazonS3/latest/userguide/images/S3Files_EC2_dataflow.png)


## 在 EC2 執行個體上掛載的先決條件
<a name="s3-files-mounting-prereqs"></a>
+ 您有一個 S3 檔案系統，至少有一個可用的掛載目標。
+ 您的 EC2 執行個體與您用來掛載檔案系統的掛載目標位於相同的可用區域。
+ IAM 執行個體描述檔會連接至具有 S3 檔案必要許可的 EC2 執行個體。如需詳細資訊，請參閱[將檔案系統連接至 AWS 運算資源的 IAM 角色](s3-files-prereq-policies.md#s3-files-prereq-iam-compute-role)。
+ 您已設定必要的 [Security groups (安全群組)](s3-files-prereq-policies.md#s3-files-prereq-security-groups)。
+ 您已在 EC2 執行個體上安裝 amazon-efs-utils 套件。如需詳細資訊，請參閱[S3 檔案用戶端](s3-files-prereq-policies.md#s3-files-prereq-client)。

## 掛載協助程式如何運作？
<a name="s3-files-mounting-how-it-works"></a>

當您發出掛載命令時，掛載協助程式會執行下列動作：
+ 從 EC2 執行個體設定檔擷取 IAM 憑證。
+ 初始化 efs-proxy 程序，以建立與掛載目標的 TLS 加密連線。
+ 啟動 amazon-efs-mount-watchdog 監控程序，以監控 TLS 掛載的運作狀態。此程序會在第一次掛載 S3 檔案系統時自動啟動。
+ 在指定的掛載點掛載檔案系統。

掛載協助程式使用 TLS 版本 1.2 來與檔案系統通訊。使用 TLS 需要憑證，而且這些憑證是由信任的 Amazon 憑證授權單位所簽署。如需加密運作方式的詳細資訊，請參閱 [S3 檔案的安全性](s3-files-security.md)。

掛載協助程式使用以下針對 S3 檔案最佳化的掛載選項：


| 選項 | Value | Description | 
| --- | --- | --- | 
| nfsvers | 4.2 | NFS 通訊協定版本。 | 
| rsize | 1048576 | 將 NFS 用戶端針對每個網路 READ 請求可接收的最大資料位元組數設定為最大可用的 1048576 (1 MB)，以避免效能降低。 | 
| wsize | 1048576 | 將 NFS 用戶端可為每個網路 WRITE 請求傳送的最大資料位元組數設定為最大可用數量 1048576 (1 MB)，以避免效能降低。 | 
| hard | — | 在 NFS 請求逾時後設定 NFS 用戶端的復原行為，以便在伺服器回應之前無限期重試 NFS 請求，以確保資料完整性。 | 
| timeo | 600 | 將 NFS 用戶端在重試 NFS 請求之前用來等待回應的逾時值設定為 600 分秒 (60 秒），以避免效能降低。 | 
| retrans | 2 | 將 NFS 用戶端在嘗試進一步復原動作之前重試請求的次數設定為 2。 | 
| noresvport | — | 告知 NFS 用戶端在重新建立網路連線時使用新的非特權 TCP 來源連接埠。使用 noresvport有助於確保您的檔案系統在重新連線或網路復原事件後有不間斷的可用性。 | 

此外，將 S3 檔案系統掛載為 S3 檔案時，掛載協助程式會自動使用 `tls`和`iam`掛載選項，需要這些選項才能建立連線。這是因為 S3 檔案一律使用 TLS 加密和 IAM 身分驗證掛載檔案系統，因此無法停用。

## 如何在 EC2 執行個體上掛載 S3 檔案系統？
<a name="s3-files-mounting-steps"></a>
+ 透過 Secure Shell (SSH) 或 EC2 主控台上的 EC2 Instance Connect 連線至 EC2 執行個體。 EC2 如需詳細資訊，請參閱[連線至 EC2 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect.html)。
+ 使用下列指令建立要用作檔案系統掛載點的目錄 `/mnt/s3files`：

  ```
  sudo mkdir /mnt/s3files
  ```
+ 掛載 S3 檔案系統：

  ```
  FS="{{{YOUR_FILE_SYSTEM_ID}}}"
  sudo mount -t s3files $FS:/ /mnt/s3files
  ```
+ 確認檔案系統已掛載。

  ```
  df -h /mnt/s3files
  ```

  您應該會看到類似以下的回應：

  ```
  Filesystem      Size  Used Avail Use% Mounted on
  {{{s3files-dns}}}    8.0E  129M  8.0E   1% {{{path/to/mount}}}
  ```

  您也可以透過列出本機掛載點的內容來驗證檔案系統掛載和檢查掛載選項。如果掛載成功，此命令會顯示特定目錄的掛載詳細資訊，包括您的掛載選項。

  ```
  findmnt -T /mnt/s3files
  ```

如需掛載命令的詳細資訊，請參閱 [GitHub 文件](https://github.com/aws/efs-utils/blob/master/README.md#mountefs)。

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

```
ls /mnt/s3files
```

您可以使用 [CloudWatch 指標](s3-files-monitoring-cloudwatch.md)監控檔案系統儲存、效能、用戶端連線和同步錯誤。

## 如何使用存取點在 EC2 執行個體上掛載 S3 檔案系統
<a name="s3-files-mounting-access-points-inline"></a>

當您使用存取點掛載檔案系統時，掛載命令會包含`access-point-id`掛載選項。

```
sudo mount -t s3files -o accesspoint={{access-point-id}} {{file-system-id}} /mnt/s3files
```

其中：
+ {{access-point-id}} 是您存取點的 ID。
+ {{file-system-id}} 是您 S3 檔案系統的 ID。

## 在 EC2 執行個體啟動時自動掛載 S3 檔案系統
<a name="s3-files-mounting-auto"></a>

您可以透過更新檔案，將 EC2 執行個體設定為在執行個體啟動或重新啟動時自動掛載 S3 `/etc/fstab` 檔案系統。`/etc/fstab` 檔案包含檔案系統的相關資訊，並供作業系統用來判斷在開機時要掛載的檔案系統。

**警告**  
使用 `_netdev` 選項，此選項用於在自動掛載檔案系統時識別網路檔案系統。若 `_netdev` 已遺失，EC2 執行個體可能會停止回應。此結果是因為網路檔案系統在運算執行個體開始聯網後需要初始化。如需詳細資訊，請參閱[自動掛載失敗且執行個體沒有回應](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/builtInFS-fstab-issues.html)。

您可以使用掛載協助程式來設定 Amazon EC2 執行個體，以在執行個體啟動時自動掛載 S3 檔案系統：
+ 使用 S3 `/etc/fstab` 檔案系統的 項目更新 EC2 檔案。
+ 當您使用 EC2 啟動執行個體精靈建立新的 EC2 執行個體時，連接 S3 檔案系統。

### 更新 /etc/fstab 檔案
<a name="s3-files-mounting-auto-fstab"></a>

執行下列步驟來更新 EC2 Linux 執行個體`/etc/fstab`上的 ，以便執行個體在執行個體重新啟動時，使用掛載協助程式自動重新掛載 S3 檔案系統。
+ [連線至 EC2 執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect.html)。
+ 在編輯器中開啟 `/etc/fstab` 檔案，並將以下行新增至 檔案：

  ```
  {{file-system-id}}:/ {{mount-directory}} s3files _netdev 0 0
  ```

  其中：
  + {{file-system-id}} 是 S3 檔案系統的 ID （例如 `fs-0123456789abcdef0`)。
  + {{mount-directory}} 是 EC2 執行個體上的掛載點目錄 （例如 `/mnt/s3files`)。
  + `_netdev` 指定檔案系統是網路檔案系統，確保執行個體在嘗試掛載之前等待網路可用性。
+ 儲存檔案並關閉編輯器。
+ 在 fstab 中掛載所有檔案系統，以測試 fstab 項目：

  ```
  sudo mount -a
  ```
+ 確認檔案系統已掛載：

  ```
  findmnt -T {{mount-directory}}
  ```

**使用 nofail 選項**

建議您將 `nofail`選項新增至生產環境中的 fstab 項目。此選項可讓執行個體開機，即使檔案系統無法掛載：

```
{{file-system-id}}:/ {{mount-directory}} s3files _netdev,nofail 0 0
```

**使用存取點自動掛載**

若要使用 S3 檔案存取點自動掛載，請包含 `accesspoint`選項：

```
{{file-system-id}}:/ {{mount-directory}} s3files _netdev,accesspoint={{access-point-id}} 0 0
```

**使用子目錄自動掛載**

若要自動掛載檔案系統的特定子目錄，請指定路徑：

```
{{file-system-id}}:/path/to/directory {{mount-directory}} s3files _netdev 0 0
```

### 使用 EC2 啟動執行個體精靈
<a name="s3-files-mounting-auto-wizard"></a>
+ 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。
+ 選擇**啟動執行個體**。
+ 請依照本文件，使用 AWS 主控台中的啟動執行個體精靈來啟動 EC2 執行個體。選擇**啟動執行個體**之前，請設定您的網路並新增 S3 檔案系統，如下列步驟所示。
+ 請務必在**網路設定**中選取子網路。
+ 選取預設安全群組，以確保您的 EC2 執行個體可以存取您的 S3 檔案系統。您無法使用此安全群組透過 Secure Shell (SSH) 存取您的 EC2 執行個體。若要透過 SSH 存取，您可以編輯預設安全性並新增規則，以允許 SSH 或允許 SSH 的新安全群組。您可以使用以下設定：
  + Type (類型)：SSH
  + Protocol (通訊協定)：TCP
  + Port Range (連接埠範圍)：22
  + Source (來源)：Anywhere (任何位置) 0.0.0.0/0
+ 在**儲存**區段下，選擇**檔案系統**，然後選擇 **S3 檔案**。
+ 在檔案系統下拉式清單下，會根據您先前在網路設定中選取的子網路，在可用區域中看到您的檔案系統。選擇您要掛載的 S3 檔案系統。如果您沒有任何檔案系統，請選擇建立新的檔案系統來建立新的檔案系統。
+ 在 EC2 執行個體上輸入要掛載檔案系統的本機掛載路徑 （例如 `/mnt/s3files`)。
+ 將產生命令來掛載檔案系統並將其新增至 fstab。您可以選擇將 命令新增至使用者資料，或在 EC2 執行個體啟動後手動執行。然後，您的 EC2 執行個體將設定為在啟動時以及重新啟動時掛載 S3 檔案系統。
+ 選擇**啟動執行個體**。

## 從另一個 VPC 掛載 S3 檔案系統
<a name="s3-files-mounting-cross-vpc"></a>

當您使用 VPC 對等互連或傳輸閘道來連接 VPCs 時，位於一個 VPC 中的 Amazon EC2 執行個體可以存取另一個 VPC 中的 S3 檔案系統。

傳輸閘道是網路傳輸中樞，您可以用於互相連接 VPC 和現場部署網路。如需使用 VPC 傳輸閘道的詳細資訊，請參閱《Amazon VPC 傳輸閘道指南》**中的[開始使用傳輸閘道](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-getting-started.html)。VPC 對等連接是在兩個 VPC 之間的網路連線。這種連線類型可讓您使用私有網際網路通訊協定第 4 版 (IPv4) 或網際網路通訊協定第 6 版 (IPv6) 地址，在兩者間路由流量。您可以使用 VPC 對等互連來連接相同 AWS 區域內或 AWS 區域之間的 VPCs。如需 VPC 對等互連的詳細資訊，請參閱[什麼是 VPC 對等互連？](https://docs.aws.amazon.com/vpc/latest/peering/what-is-vpc-peering.html) *Amazon VPC 使用者指南*中的 。

從不同的 VPC 掛載檔案系統時，您需要手動解析掛載目標。您應該使用對應可用區域中掛載目標的 IP 地址，如下所示，並將 {{mount-target-ip-address}}、{{file-system-id}} 和 {{mount-directory}} 取代為您的值。

```
sudo mount -t s3files -o mounttargetip={{mount-target-ip-address}} {{file-system-id}} {{mount-directory}}
```

為了確保檔案系統的高可用性，我們建議您一律使用與 NFS 用戶端位於相同可用區域的掛載目標 IP 地址。

或者，您可以使用 Amazon Route 53 做為 DNS 服務。在 Route 53 中，您可以透過建立私有託管區域和資源記錄集，從另一個 VPC 解析掛載目標 IP 地址。如需如何執行此操作的詳細資訊，請參閱《*Amazon Route 53 開發人員指南*》中的[使用私有託管區域](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/hosted-zones-private.html)。

如需從另一個 VPC 掛載的詳細資訊，請造訪 [GitHub ReadMe](https://github.com/aws/efs-utils/blob/master/README.md)。

## 從不同 AWS 區域掛載 S3 檔案系統
<a name="s3-files-mounting-cross-region"></a>

如果您要從與檔案系統位於不同 AWS 區域的另一個 VPC 掛載 S3 檔案系統，則需要編輯`s3files-utils.conf`檔案。在 `/etc/amazon/efs/s3files-utils.conf` 中找出下列各行：

```
#region = us-east-1
```

如果檔案系統所在的區域不在 us-east-1 中，請取消註解該行，並取代該區域的 ID 值。

然後，在組態中變更區域之後，您需要在掛載命令中指定掛載目標 IP：

```
sudo mount -t s3files -o mounttargetip={{mount-target-ip-address}} {{file-system-id}} {{mount-directory}}
```

## 卸載 S3 檔案系統
<a name="s3-files-mounting-unmount"></a>

若要卸載連線至執行 Linux 的 EC2 執行個體的 S3 檔案系統，請使用 `umount`命令，如下所示：

```
umount {{mount-directory}}
```

我們建議您不要指定任何其他 `umount` 選項。請避免設定任何其他與預設值不同的 `umount` 選項。您可以執行 `findmnt`命令來驗證 S3 檔案系統是否已卸載。如果卸載成功，掛載目錄上的 `findmnt`命令將不會產生任何輸出。