演练:从不同的 VPC 挂载文件系统 - Amazon Elastic File System
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

演练:从不同的 VPC 挂载文件系统

在此演练中,您将设置一个 Amazon EC2 实例来挂载位于不同 Virtual Private Cloud (VPC) 中的 Amazon EFS 文件系统。您可以使用 EFS 挂载帮助程序执行该操作。挂载帮助程序是 amazon-efs-utils 工具集的一部分。有关 amazon-efs-utils 的更多信息,请参阅 使用 amazon-efs-utils 工具

必须使用 VPC 对等连接或 VPC 传输网关连接客户端的 VPC 和 EFS 文件系统的 VPC。使用 VPC 对等连接或中转网关连接 VPC 时,即使 VPC 属于不同的账户,一个 VPC 中的 Amazon EC2 实例也可以访问另一个 VPC 中的 EFS 文件系统。

注意

不支持将 Amazon EFS 与基于 Microsoft Windows 的客户端一起使用。

开始前的准备工作

在此演练中,我们假定您已具有:

  • 在使用此过程之前,将在 EC2 实例上安装 amazon-efs-utils 工具集。有关安装 amazon-efs-utils 的说明,请参阅使用 amazon-efs-utils 工具

  • 下列情况之一:

    • EFS 文件系统所在的 VPC 与 EC2 实例所在的 VPC 之间的 VPC 对等连接。VPC 对等连接 是两个 VPC 之间的网络连接。使用此类连接,您能够使用专用 Internet 协议版本 4 (IPv4) 或 Internet 协议版本 6 (IPv6) 地址,在它们之间路由流量。您可以使用 VPC 对等来连接位于相同 AWS 区域或不同 AWS 区域中的 VPC。有关更多信息,请参阅 Amazon VPC Peering Guide 中的创建并接受 VPC 对等连接

    • EFS 文件系统所在的 VPC 与 EC2 实例所在的 VPC 之间的中转网关连接。中转网关 是网络中转中心,您可用它来互连 VPC 和本地网络。有关更多信息,请参阅 Amazon VPC 中转网关 指南 中的中转网关入门

步骤 1:确定 EFS 挂载目标的可用区 ID

为了确保您的文件系统的高可用性,我们建议您始终使用与 NFS 客户端位于相同可用区 (AZ) 的 EFS 挂载目标 IP 地址。如果要挂载其他账户中的 EFS 文件系统,请确保 NFS 客户端和 EFS 挂载目标位于相同的可用区 ID 中。此要求适用,因为可用区名称在账户之间可能会有所不同。

确定 EC2 实例的可用区 ID

  1. 连接到 EC2 实例:

    • 要从运行 macOS 或 Linux 的计算机连接到您的实例,请为 SSH 命令指定 .pem 文件。要执行该操作,请使用 -i 选项和私有密钥路径。

    • 要从运行 Windows 的计算机连接到您的实例,可以使用 MindTerm 或 PuTTY。要使用 PuTTY,您需要安装它并将 .pem 文件转换为 .ppk 文件。

    有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的以下主题:

  2. 按以下所示,使用 describe-availability-zones CLI 命令确定 EC2 实例所在的可用区 ID。

    [ec2-user@ip-10.0.0.1] $ aws ec2 describe-availability-zones --zone-name `curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone` { "AvailabilityZones": [ { "State": "available", "ZoneName": "us-east-2b", "Messages": [], "ZoneId": "use2-az2", "RegionName": "us-east-2" } ] }

    AZ ID 将在 ZoneId 属性 use2-az2 中返回。

步骤 2:确定挂载目标 IP 地址

您已知道 EC2 实例的可用区 ID,现在可以检索位于同一可用区 ID 中的挂载目标的 IP 地址。

在同一可用区 ID 中确定挂载目标 IP 地址

  • 按以下所示,使用 describe-mount-targets CLI 命令在 use2-az2 可用区 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:为挂载目标添加主机条目

您现在可以在 EC2 实例上的 /etc/hosts 文件中生成一个条目,将挂载目标 IP 地址映射到您的 EFS 文件系统的主机名。

为挂载目标添加主机条目

  • 将挂载目标 IP 地址行添加到 EC2 实例的 /etc/hosts 文件中。该条目使用 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

步骤 4:使用 EFS 挂载帮助程序挂载您的文件系统

要挂载 EFS 文件系统,必须先在 EC2 实例上创建挂载目录。然后,您可以使用 EFS 挂载帮助程序,通过 IAM 授权或 EFS 访问点挂载文件系统。有关更多信息,请参阅 使用 IAM 控制 NFS 对 Amazon EFS 的访问使用 Amazon EFS 访问点

创建挂载目录

  • 使用以下命令创建用于挂载文件系统的目录。

    $ 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/

现已挂载 Amazon EFS 文件系统,您可以使用以下过程对其进行测试。

测试 Amazon EFS 文件系统连接

  1. 使用以下命令将目录更改为您创建的新目录。

    $ cd ~/mnt/efs
  2. 创建一个子目录,并将该子目录的所有权更改为您的 EC2 实例用户。接下来,使用以下命令导航到该新目录。

    $ sudo mkdir getting-started $ sudo chown ec2-user getting-started $ cd getting-started
  3. 使用以下命令创建一个文本文件。

    $ touch test-file.txt
  4. 使用以下命令列出目录内容。

    $ ls -al

这样,将会创建以下文件。

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

您也可以在 /etc/fstab 文件中添加条目以自动挂载文件系统。有关更多信息,请参阅使用 /etc/fstab 自动挂载

警告

请在自动挂载文件系统时使用 _netdev 选项,它用于指定网络文件系统。如果缺少 _netdev,您的 EC2 实例可能会停止响应。出现该结果是因为,需要在计算实例启动其网络后初始化网络文件系统。有关更多信息,请参阅 自动挂载失败,并且实例没有响应

步骤 5:清理资源并保护您的 AWS 账户

完成本演练后,或者如果您不希望浏览本演练,请务必执行以下步骤。清理您的资源并保护您的 AWS 账户。

清理资源并保护您的 AWS 账户

  1. 使用以下命令卸载 Amazon EFS 文件系统。

    $ sudo umount ~/efs
  2. 通过以下网址打开 Amazon EFS 控制台:https://console.amazonaws.cn/efs/

  3. 选择要从文件系统列表中删除的 Amazon EFS 文件系统。

  4. 对于 Actions,选择 Delete file system

  5. Permanently delete file system (永久删除文件系统) 对话框中,键入要删除的 Amazon EFS 文件系统的文件系统 ID,然后选择 Delete File System (删除文件系统)

  6. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  7. 在导航窗格中,选择 Security Groups

  8. 选择您针对本演练向其中添加了规则的安全组的名称。

    警告

    不要删除您的 VPC 的默认安全组。

  9. 对于操作,请选择编辑入站规则

  10. 选择在添加的入站规则末尾的 X,然后选择保存