演示 从不同的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。有关详细信息,请参阅 创建和接受VPC互联连接Amazon VPC Peering Guide.

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

步骤 1. 确定EFS装载目标的可用性区域ID

为确保文件系统的高可用性,建议始终使用EFS装载与您的NFS客户端中的可用性区域位于同一个可用性区域的IP地址。如果要安装另一个帐户中的EFS文件系统,请确保NFS客户端和EFS装载目标位于相同的可用性区域ID中。此要求适用,因为客户的可用性区域名称可能会有所不同。

确定EC2实例的可用性区域ID

  1. 连接到您的 EC2 实例。

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

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

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

  2. 确定EC2实例在使用 describe-availability-zones CLI命令如下。

    [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" } ] }

    可用区域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,然后选择保存