Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
如何使用系统策略来控制对我的 Amazon EFS 文件系统的访问?
我想要跨 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 无法解析位于另一个 VPC 中的 EFS 文件系统的 DNS。因此,您必须为您的客户端确定正确的挂载目标 IP 地址。然后,配置该客户端。要挂载 EFS 文件系统,请使用与 NFS 客户端位于同一可用区的挂载目标 IP 地址。可用区名称映射可能因账户而异。当在另一个账户中挂载 EFS 文件系统时,NFS 客户端和挂载目标必须位于同一个可用区中。
确定您的实例的可用区
完成以下步骤:
- 打开 Amazon EC2 控制台。
- 选择 Instances(实例)。
- 选择您的实例,然后选择 Networking(联网)。
- 在 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 地址
完成以下步骤:
- 打开 Amazon EFS 控制台。
- 选择 File Systems(文件系统)。
- 选择您的文件系统。
- 在 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 文件系统
完成以下步骤:
- 运行以下命令,将 hosts 条目添加到 NFS 客户端中的 /etc/hosts 文件:
**注意:**将 10.0.2.153 替换为您的挂载目标 IP 地址,将 fs-cee4feb7 替换为您的文件系统 ID,将 us-east-2 替换为您的 AWS 区域。echo "10.0.2.153 fs-cee4feb7.efs.us-east-2.amazonaws.com" | sudo tee -a /etc/hosts - 使用挂载助手挂载 EFS 文件系统。默认情况下,挂载助手使用 DNS 来解析挂载目标的 IP 地址。如果从其他账户或 Amazon VPC 挂载,则必须手动解析 Amazon EFS 挂载目标 IP 地址。
如果在挂载文件系统时遇到问题,请参阅对挂载问题进行故障排除。
