

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

# 教學課程：從不同的 VPC 掛載檔案系統
<a name="efs-different-vpc"></a>

在本教學課程中，您會設定 EC2 執行個體來掛載位於不同虛擬私有雲端 (VPC) 中的 EFS 檔案系統。您可以使用 EFS 掛載協助程式來執行此操作。掛載協助程式是 `amazon-efs-utils` 工具組的一部分。如需 `amazon-efs-utils` 的相關資訊，請參閱 [安裝 Amazon EFS 用戶端](using-amazon-efs-utils.md)。

請務必使用 VPC 對等連接或 VPC 傳輸閘道來連接用戶端的 VPC 和 EFS 檔案系統的 VPC。當您使用 VPC 對等互連或傳輸閘道來連接 VPCs 時，一個 VPC 中的 EC2 執行個體可以存取另一個 VPC 中的 EFS 檔案系統，即使 VPCs屬於不同的帳戶。

**注意**  
不支援使用 Amazon EFS 搭配以 Microsoft Windows 爲基礎的用戶端。

**Topics**
+ [先決條件](#wt6-prepare)
+ [步驟 1：判斷掛載目標可用區域的 ID](#wt6-efs-utils-step1)
+ [步驟 2：判斷掛載目標 IP 地址](#wt6-efs-utils-step2)
+ [步驟 3：新增掛載目標的主機項目](#wt6-efs-utils-step3)
+ [步驟 4：使用 EFS 掛載協助程式掛載檔案系統](#wt6-efs-utils-step4)
+ [步驟 5：清理資源並保護您的 AWS 帳戶](#wt6-step5-cleanup)

## 先決條件
<a name="wt6-prepare"></a>

若要完成本教學課程，您必須具備下列項目：
+ 使用此程序之前，EC2 執行個體上已安裝 `amazon-efs-utils` 工具組。如需安裝 `amazon-efs-utils` 的指示，請參閱[安裝 Amazon EFS 用戶端](using-amazon-efs-utils.md)。
+ 下列其中一項：
  + EFS 檔案系統所在的 VPC 與 EC2 執行個體所在的 VPC 之間的 VPC 對等連接。*VPC 對等連接*是在兩個 VPC 之間的網路連線。這種連線類型可讓您使用私有網際網路通訊協定第 4 版 (IPv4) 或網際網路通訊協定第 6 版 (IPv6) 地址，在兩者間路由流量。您可以使用 VPC 對等互連來連接相同 AWS 區域 或之間的 VPCs AWS 區域。如需詳細資訊，請參閱《Amazon VPC 對等互連指南》**中的[建立和接受 Amazon VPC 對等互連連線](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html)。
  + EFS 檔案系統所在的 VPC 與 EC2 執行個體所在之 VPC 之間的傳輸閘道連接。*傳輸閘道*是網路傳輸中樞，您可以用於互相連接 VPC 和現場部署網路。如需詳細資訊，請參閱《[Amazon VPC Transit Gateways 指南》中的使用 Amazon VPC Transit Gateways 的入門](https://docs.aws.amazon.com/vpc/latest/tgw/tgw-getting-started.html)。 **

## 步驟 1：判斷掛載目標可用區域的 ID
<a name="wt6-efs-utils-step1"></a>

為了確保檔案系統的高可用性，我們建議您一律使用與 NFS 用戶端位於相同可用區域的 EC2 掛載目標 IP 地址。如果要掛載另一個帳戶中的 EFS 檔案系統，請確保 NFS 用戶端和 EFS 掛載目標位於相同的可用區域 ID。此要求適用的原因是，可用區域名稱在各個帳戶間可能會有不同。

**決定 EC2 執行個體的可用區域。**

1. 連線至 EC2 執行個體。如需詳細資訊，請參閱 *Amazon EC2 User Guide* 中的 [Connect to your EC2 instance](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect.html)。

1. 您可以使用 `describe-availability-zones` CLI 命令來判斷 EC2 執行個體所在的可用區域ID，如下所示。

   ```
   [ec2-user@ip-10.0.0.1] $ aws ec2 describe-availability-zones --zone-name
   {
       "AvailabilityZones": [
           {
               "State": "available", 
               "ZoneName": "us-east-2b", 
               "Messages": [], 
               "ZoneId": "use2-az2", 
               "RegionName": "us-east-2"
           }
       ]
   }
   ```

   可用區域 ID 會在 `ZoneId` 屬性 `use2-az2` 中傳回。

## 步驟 2：判斷掛載目標 IP 地址
<a name="wt6-efs-utils-step2"></a>

既然您已知道 EC2 執行個體的可用區域ID，就可以開始擷取位於相同可用區域ID 的掛載目標 IP 地址。

**判斷同一個可用區域ID 中的掛載目標 IP 地址**
+ 您可以使用 `describe-mount-targets` CLI 命令來擷取 `use2-az2` AZ ID 中的檔案系統掛載目標 IP 地址，如下所示。

  ```
  $ aws efs describe-mount-targets --file-system-id file_system_id
  {
      "MountTargets": [
          {
              "OwnerId": "111122223333",
              "MountTargetId": "fsmt-11223344", 
    =====>    "AvailabilityZoneId": "use2-az2",
              "NetworkInterfaceId": "eni-048c09a306023eeec", 
              "AvailabilityZoneName": "us-east-2b", 
              "FileSystemId": "fs-01234567", 
              "LifeCycleState": "available", 
              "SubnetId": "subnet-06eb0da37ee82a64f", 
              "OwnerId": "958322738406", 
    =====>    "IpAddress": "10.0.2.153"
          }, 
  ...
          {
              "OwnerId": "111122223333",
              "MountTargetId": "fsmt-667788aa", 
              "AvailabilityZoneId": "use2-az3", 
              "NetworkInterfaceId": "eni-0edb579d21ed39261", 
              "AvailabilityZoneName": "us-east-2c", 
              "FileSystemId": "fs-01234567", 
              "LifeCycleState": "available", 
              "SubnetId": "subnet-0ee85556822c441af", 
              "OwnerId": "958322738406", 
              "IpAddress": "10.0.3.107"
          }
      ]
  }
  ```

  `use2-az2`可用區域ID 中的掛載目標 IP 地址為 10.0.2.153。

## 步驟 3：新增掛載目標的主機項目
<a name="wt6-efs-utils-step3"></a>

您現在可以在 EC2 執行個體的 `/etc/hosts` 檔案中建立一個項目，以便將掛載目標 IP 地址對應至 EFS 檔案系統的主機名稱。

**新增掛載目標的主機項目**

1. 請在 EC2 執行個體的 `/etc/hosts` 檔案中新增一行掛載目標 IP 地址。該項目使用的格式為 `mount-target-IP-Address file-system-ID.efs.region.amazonaws.com`。您可以利用下列命令來將該行新增至檔案。

   ```
   echo "10.0.2.153 fs-01234567.efs.us-east-2.amazonaws.com" | sudo tee -a /etc/hosts
   ```

1. 請確定 EC2 執行個體和掛載目標的 VPC 安全群組具有允許視需要存取 EFS 檔案系統的規則。如需詳細資訊，請參閱[使用 VPC 安全群組](network-access.md)。

## 步驟 4：使用 EFS 掛載協助程式掛載檔案系統
<a name="wt6-efs-utils-step4"></a>

若要掛載 EFS 檔案系統，首先您必須在 EC2 執行個體上建立掛載目錄。然後，使用 EFS 掛載協助程式，您可以使用 AWS Identity and Access Management (IAM) 授權或 EFS 存取點掛載檔案系統。如需詳細資訊，請參閱[使用 IAM 控制檔案系統的存取](iam-access-control-nfs-efs.md)及[使用存取點](efs-access-points.md)。

**建立掛載目錄**
+ 您可以使用下列命令來建立掛載檔案系統的目錄。

  ```
  $ sudo mkdir /mnt/efs/
  ```

**使用 IAM 授權掛載檔案系統**
+ 您可以使用下列命令來透過 IAM 授權掛載檔案系統。

  ```
  $ sudo mount -t efs -o tls,iam file-system-id /mnt/efs/
  ```

**使用 EFS 存取點掛載檔案系統**
+ 您可以使用下列命令來透過 EFS 存取點掛載檔案系統。

  ```
  $ sudo mount -t efs -o tls,accesspoint=access-point-id file-system-id /mnt/efs/
  ```

現在您已掛載 EFS 檔案系統，您可以使用下列程序進行測試。

**測試 EFS 檔案系統連線**

1. 使用下列命令，將目錄變更為您建立的新目錄。

   ```
   $ cd ~/mnt/efs
   ```

1. 建立子目錄，並將子目錄的擁有權變更為 EC2 執行個體使用者。接著，使用下列命令導覽至新目錄。

   ```
   $ sudo mkdir getting-started
   $ sudo chown ec2-user getting-started
   $ cd getting-started
   ```

1. 透過下列命令建立文字檔。

   ```
   $ touch test-file.txt
   ```

1. 透過以下命令列出目錄內容。

   ```
   $ ls -al
   ```

因此，會建立以下檔案。

```
-rw-rw-r-- 1 username username 0 Nov 15 15:32 test-file.txt
```

您也可以透過將項目新增至 `/etc/fstab` 檔案以自動掛載檔案系統。如需詳細資訊，請參閱[在現有的 EC2 Linux 執行個體上啟用自動掛載](mount-fs-auto-mount-update-fstab.md)。

**警告**  
使用 `_netdev` 選項，此選項用於在自動掛載檔案系統時識別網路檔案系統。若 `_netdev` 已遺失，EC2 執行個體可能會停止回應。此結果是因為網路檔案系統在運算執行個體開始聯網後需要初始化。如需詳細資訊，請參閱[自動掛載失敗且執行個體沒有回應](troubleshooting-efs-mounting.md#automount-fails)。

## 步驟 5：清理資源並保護您的 AWS 帳戶
<a name="wt6-step5-cleanup"></a>

完成本教學課程後，請執行下列步驟來清理您的 資源並保護您的 AWS 帳戶。

**清除資源並保護您的 AWS 帳戶**

1. 使用下列命令卸載 EFS 檔案系統。

   ```
   $ sudo umount ~/efs
   ```

1. 前往 [https://console.aws.amazon.com/efs/](https://console.aws.amazon.com/efs/) 開啟 Amazon Elastic File System 主控台。

1. 選擇您要從檔案系統清單刪除的 EFS 檔案系統。

1. 針對 **Actions (動作)**，選擇 **Delete file system (刪除檔案系統)**。

1. 在**永久刪除檔案系統**對話方塊中，輸入要刪除 EFS 檔案系統的檔案系統 ID，然後選擇**刪除檔案系統**。

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

1. 在導覽窗格中，選擇**安全群組**。

1. 選取您在此教學課程中新增規則的安全群組名稱。
**警告**  
無法刪除 VPC 的預設安全群組。

1. 在 **Actions (動作)** 中，選擇 **Edit inbound rules (編輯傳入規則)**。

1. 選擇在您新增之傳入規則結尾的 X 並選擇 **Save (儲存)**。