Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
システムポリシーを使用して 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 アドレスを手動で解決する必要があります。
ファイルシステムのマウント中に問題が発生した場合は、「マウントに関する問題のトラブルシューティング」を参照してください。
関連情報
関連するコンテンツ
- 質問済み 1ヶ月前
