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

从另一个账户或 VPC 挂载 EFS 文件系统

您可以使用 EFS 挂载帮助程序,通过 NFS 客户端和 EFS 访问点的 IAM 授权来挂载您的 Amazon EFS 文件系统。默认情况下,EFS 挂载帮助程序使用域名服务 (DNS) 来解析您的 EFS 挂载目标的 IP 地址。如果要从其他账户或 Virtual Private Cloud (VPC) 挂载文件系统,必须手动解析 EFS 挂载目标。

下面,您可以找到确定要用于您的 NFS 客户端的正确 EFS 挂载目标 IP 地址的说明。您还可以找到有关配置客户端以使用该 IP 地址挂载 EFS 文件系统的说明。

使用 IAM 或访问点从其他 VPC 挂载

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

先决条件

在使用下面的过程之前,请执行以下步骤:

  • 在客户端上安装 amazon-efs-utils 工具集。可以使用 EFS 挂载帮助程序挂载文件系统,并且挂载帮助程序是 amazon-efs-utils 的一部分。有关安装 amazon-efs-utils 的说明,请参阅使用 amazon-efs-utils 工具

  • 设置 VPC 对等连接或 VPC 传输网关。

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

    中转网关 是网络中转中心,您可用它来互连 VPC 和本地网络。有关使用 VPC 中转网关的更多信息,请参阅 Amazon VPC 中转网关指南 中的中转网关入门

    VPC 对等连接 是两个 VPC 之间的网络连接。使用此类连接,您能够使用专用 Internet 协议版本 4 (IPv4) 或 Internet 协议版本 6 (IPv6) 地址,在它们之间路由流量。您可以使用 VPC 对等来连接位于相同 AWS 区域或不同 AWS 区域中的 VPC。有关 VPC 对等的更多信息,请参阅 Amazon VPC Peering Guide 中的什么是 VPC 对等?

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

使用 IAM 或访问点在其他 VPC 中挂载 EFS 文件系统

  1. 连接到 EC2 实例:

    • 要从运行 Mac OS 或 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 中返回。

  3. 按以下所示,使用 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。

  4. 按以下所示,使用 mount-target-IP-Address file-system-ID.efs.region.amazonaws.com 格式将挂载目标 IP 地址的行添加到客户端的 /etc/hosts 文件中。

    echo "10.0.2.153 fs-01234567.efs.us-east-2.amazonaws.com" | sudo tee -a /etc/hosts
  5. 使用以下命令创建用于挂载文件系统的目录。

    $ sudo mkdir /mnt/efs
  6. 要使用 IAM 授权来挂载文件系统,请使用以下命令:

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

    有关将 IAM 授权与 EFS 结合使用的更多信息,请参阅 使用 IAM 控制 NFS 对 Amazon EFS 的访问

    要使用 EFS 访问点挂载文件系统,请使用以下命令:

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

    有关 EFS 访问点的更多信息,请参阅使用 Amazon EFS 访问点

您不能对其他 VPC 中的 EFS 挂载点使用 DNS 名称解析。要挂载您的 EFS 文件系统,请使用对应可用区中挂载点的 IP 地址。或者,您可以使用 Amazon Route 53 作为您的 DNS 服务。在 Route 53 中,您可以通过创建私有托管区域和资源记录集解析其他 VPC 中的 EFS 挂载目标 IP 地址。有关执行此操作的更多信息,请参阅 Amazon Route 53 开发人员指南 中的使用私有托管区域使用记录

从相同 VPC 的另一个账户挂载

使用共享 VPC,您可以从由某个账户拥有的 Amazon EC2 实例,挂载由其他账户拥有的 Amazon EFS 文件系统。有关设置共享 VPC 的更多信息,请参阅 Amazon VPC Peering Guide 中的 使用共享 VPC

设置 VPC 共享之后,EC2 实例可以使用域名系统 (DNS) 名称解析或者 EFS 挂载帮助程序来挂载 EFS 文件系统。