システムポリシーを使用して Amazon EFS ファイルシステムへのアクセスを制御する方法を教えてください。
ファイルを共有するために、複数 AWS アカウントの Amazon Elastic File System (Amazon EFS) ファイルシステムにアクセスしたいと考えています。ネットワークファイルシステム (NFS) クライアントと 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 ファイルシステムへのマウント、書き込み権限および、root アクセスが付与されます。NFS クライアントが EC2 インスタンスの場合は、IAM ロールをインスタンスにアタッチするか、
注: AWS CLI は、別の VPC に配置された EFS ファイルシステムの DNS を解決できません。したがって、クライアントに適したマウントターゲットの IP アドレスを判断してから、クライアントを構成する必要があります。EFS ファイルシステムをマウントするには、NFS クライアントと同じアベイラビリティーゾーン内にあるマウントターゲットの IP アドレスを使用します。アベイラビリティーゾーンの名前マッピングは、アカウントごとに異なる場合があります。EFS ファイルシステムを別のアカウントにマウントする場合、NFS クライアントとマウントターゲットは同じアベイラビリティーゾーン内にある必要があります。
インスタンスのアベイラビリティーゾーンを判断する
次の手順を実行します。
- Amazon EC2 コンソールを開きます。
- [インスタンス] を選択します。
- 目的のインスタンスを選択し、[ネットワーキング] を選択します。
- [ネットワーキングの詳細] から目的のアベイラビリティーゾーンを探します。
または、Amazon EC2 に対する十分な読み取り権限を持つ IAM エンティティから、次の AWS CLI コマンド describe-availability-zones を実行します。
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 コンソールを開きます。
- [ファイルシステム] を選択します。
- 目的のファイルシステムを選択します。
- [ネットワーク] に表示されるアベイラビリティーゾーンの 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 ファイルシステムをマウントする
次の手順を実行します。
- 次のコマンドを実行して、NFS クライアントの /etc/hosts ファイルに 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 アドレスを手動で解決する必要があります。
ファイルシステムのマウント中に問題が発生した場合は、「マウントに関する問題のトラブルシューティング」を参照してください。
関連情報
関連するコンテンツ
質問済み 10ヶ月前
