跳至内容

如何使用系统策略来控制对我的 Amazon EFS 文件系统的访问?

2 分钟阅读
0

我想要跨 AWS 账户访问我的 Amazon Elastic File System (Amazon EFS) 文件系统,以便能够共享文件。我想要对网络文件系统 (NFS) 客户端和 Amazon EFS 接入点使用 AWS Identity and Access Management (IAM) 授权。

解决方案

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

连接 VPC

使用 VPC 对等连接将 NFS 客户端的虚拟私有云 (VPC) 和 EFS 文件系统连接起来。或者,使用 Amazon Virtual Private Cloud (Amazon VPC) Transit Gateway。凭借此连接,相同或不同账户中的 Amazon Elastic Compute Cloud (Amazon EC2) 实例可访问不同 VPC 中的 EFS 文件系统。

授予访问和挂载跨账户 EFS 文件系统的权限

要授予访问和挂载跨账户 EFS 文件系统的权限,请在您的 IAM 策略中添加以下语句:

{            "Sid": "EfsPermissions",
            "Effect": "Allow",
            "Action": [
                "elasticfilesystem:ClientMount",
                "elasticfilesystem:ClientWrite",
                "elasticfilesystem:ClientRootAccess"
            ],
            "Resource": "arn:aws:elasticfilesystem:region:account-id:file-system/file-system-id"
        }

**注意:**上述示例语句允许 IAM 角色在 EFS 文件系统上具有挂载、写入和根访问权限。如果 NFS 客户端是一个 EC2 实例,请将 IAM 角色附加到该实例

或者,使用 AWS CLI 代入 IAM 角色

**注意:**AWS CLI 无法解析位于另一个 VPC 中的 EFS 文件系统的 DNS。因此,您必须为您的客户端确定正确的挂载目标 IP 地址。然后,配置该客户端。要挂载 EFS 文件系统,请使用与 NFS 客户端位于同一可用区的挂载目标 IP 地址。可用区名称映射可能因账户而异。当在另一个账户中挂载 EFS 文件系统时,NFS 客户端和挂载目标必须位于同一个可用区中。

确定您的实例的可用区

完成以下步骤:

  1. 打开 Amazon EC2 控制台
  2. 选择 Instances(实例)。
  3. 选择您的实例,然后选择 Networking(联网)。
  4. Networking details(联网详细信息)下,找到可用区。

或者,从对 Amazon EC2 具有足够读取权限的 IAM 实体运行以下 describe-availability-zones AWS CLI 命令:

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

确定本地可用区的挂载目标 IP 地址

完成以下步骤:

  1. 打开 Amazon EFS 控制台
  2. 选择 File Systems(文件系统)。
  3. 选择您的文件系统。
  4. Network(网络)下,记下可用区的 IP 地址。

或者,从对 Amazon EC2 具有足够读取权限的 IAM 实体运行以下 describe-mount-targets 命令:

aws efs describe-mount-targets --file-system-id fs-cee4feb7

**注意:**将 fs-cee4feb7 替换为您的文件系统 ID。

在命令的输出中,记下与实例的可用区中的挂载目标对应的 IP 地址。输出示例:

aws efs describe-mount-targets --file-system-id fs-cee4feb7{
    "MountTargets": [
        {
            "MountTargetId": "fsmt-a9c3a1d0",
            "AvailabilityZoneId": "use2-az2",
            "NetworkInterfaceId": "eni-048c09a306023eeec",
            "AvailabilityZoneName": "us-east-2b",
            "FileSystemId": "fs-cee4feb7",
            "LifeCycleState": "available",
            "SubnetId": "subnet-06eb0da37ee82a64f",
            "OwnerId": "958322738406",
            "IpAddress": "10.0.2.153"
        },
...
        {
            "MountTargetId": "fsmt-b7c3a1ce",
            "AvailabilityZoneId": "use2-az3",
            "NetworkInterfaceId": "eni-0edb579d21ed39261",
            "AvailabilityZoneName": "us-east-2c",
            "FileSystemId": "fs-cee4feb7",
            "LifeCycleState": "available",
            "SubnetId": "subnet-0ee85556822c441af",
            "OwnerId": "958322738406",
            "IpAddress": "10.0.3.107"
        }
    ]
}

挂载 EFS 文件系统

完成以下步骤:

  1. 运行以下命令,将 hosts 条目添加到 NFS 客户端中的 /etc/hosts 文件:
    echo "10.0.2.153 fs-cee4feb7.efs.us-east-2.amazonaws.com" | sudo tee -a /etc/hosts
    **注意:**将 10.0.2.153 替换为您的挂载目标 IP 地址,将 fs-cee4feb7 替换为您的文件系统 ID,将 us-east-2 替换为您的 AWS 区域。
  2. 使用挂载助手挂载 EFS 文件系统。默认情况下,挂载助手使用 DNS 来解析挂载目标的 IP 地址。如果从其他账户或 Amazon VPC 挂载,则必须手动解析 Amazon EFS 挂载目标 IP 地址。

如果在挂载文件系统时遇到问题,请参阅对挂载问题进行故障排除

相关信息

Creating file system policies

AWS 官方已更新 6 个月前