チュートリアル: 別の VPC からファイルシステムをマウントする
このチュートリアルでは、EC2 インスタンスを設定して、別の仮想プライベートクラウド (VPC) にある EFS ファイルシステムをマウントします。これは、EFS マウントヘルパーを使用して行います。マウントヘルパーは、amazon-efs-utils
というツールセットの一部です。amazon-efs-utils
の詳細については、「Amazon EFS クライアントの手動インストール」を参照してください。
クライアントの VPC と EFS ファイルシステムの VPC を接続するには、VPC ピアリング接続または VPC トランジットゲートウェイを使用する必要があります。VPC ピアリング接続またはトランジットゲートウェイを使用して VPC に接続すると、ある VPC 上の EC2 インスタンスから別の VPC の EFS ファイルシステムにアクセスすることができます。VPC 同士が異なるアカウントに属していても可能です。
注記
Microsoft Windows ベースのクライアントでの Amazon EFS の使用はサポートされていません。
トピック
前提条件
このチュートリアルを完了するには、以下が必要です。
-
この手順を使用する前に、
amazon-efs-utils
ツールセットが EC2 インスタンスにインストールされていること。amazon-efs-utils
のインストール手順については、「Amazon EFS クライアントの手動インストール」を参照してください。 -
次のいずれかです:
-
EFS ファイルシステムが存在する VPC と EC2 インスタンスが存在する VPC との間の VPC ピアリング接続。VPC ピアリング接続は、2 つの VPC 間のネットワーク接続です。このタイプの接続では、インターネットプロトコルバージョン 4 (IPv4) またはインターネットプロトコルバージョン 6 (IPv6) のプライベートアドレスを使用して、2 つの VPC 間でトラフィックをルーティングできます。VPC ピア接続を使用して、同じ AWS リージョン内または AWS リージョン間の VPC を接続できます。詳細については、Amazon VPC ピアリングガイドの「VPC ピア接続の作成と承認」を参照してください。
-
EFS ファイルシステムが存在する VPC と EC2 インスタンスが存在する VPC を接続するトランジットゲートウェイ。トランジットゲートウェイは、VPC とオンプレミスネットワークを相互接続するために使用できるネットワークの中継ハブです。詳細については、「Amazon VPC トランジットゲートウェイガイド」の「トランジットゲートウェイを開始する」を参照してください。
-
ステップ 1: マウントターゲットのアベイラビリティーゾーンの ID を特定する
ファイルシステムの高可用性を確保するために、NFS クライアントと同じアベイラビリティーゾーンにある EC2 マウントターゲットの IP アドレスを常に使用することをお勧めします。別のアカウントにある EFS ファイルシステムをマウントする場合は、NFS クライアントと EFS マウントターゲットが同じ アベイラビリティーゾーン ID にあることを確認します。この要件が適用されるのは、アベイラビリティーゾーン名がアカウントによって異なる可能性があるためです。
EC2 インスタンスのアベイラビリティーゾーン ID を決定するには
-
EC2 インスタンスに接続します。詳細については、「Amazon EC2 ユーザーガイド」の「EC2 インスタンスに接続する」を参照してください。
EC2 インスタンスがある アベイラビリティーアベイラビリティーゾーン ID を特定するには、次のように
describe-availability-zones
CLI コマンドを使用します。[ec2-user@ip-10.0.0.1] $
aws ec2 describe-availability-zones --zone-name
{ "AvailabilityZones": [ { "State": "available", "ZoneName": "us-east-2b", "Messages": [], "ZoneId": "use2-az2", "RegionName": "us-east-2" } ] }
このアベイラビリティーゾーン ID は、
ZoneId
プロパティ、use2-az2
に返されます。
ステップ 2: マウントターゲットの IP アドレスを特定する
EC2 インスタンスの アベイラビリティーゾーン ID を特定したら、同じ アベイラビリティーゾーン ID にあるマウントターゲットの IP アドレスを取得します。
同じ アベイラビリティーゾーン ID のマウントターゲットの IP アドレスを特定するには
-
次のように CLI コマンド
describe-mount-targets
を使用して、AZ IDuse2-az2
内のファイルシステムに対するマウントターゲットの 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" } ] }
アベイラビリティーゾーン ID
use2-az2
内のマウントターゲットの IP アドレスは 10.0.2.153 です。
ステップ 3: マウントターゲットにホストエントリを追加する
次は、EC2 インスタンスの /etc/hosts
ファイルに、マウントターゲット IP アドレスを EFS ファイルシステムのホスト名にマッピングするエントリを作成します。
マウントターゲットのホストエントリを追加するには
-
EC2 インスタンスの
/etc/hosts
ファイルに、マウントターゲットの IP アドレスの行を追加します。このエントリには、m
という形式を使用します。ファイルに行を追加するには、次のコマンドを使用します。ount-target-IP-Address
file-system-ID
.efs.region
.amazonaws.com.rproxy.goskope.comecho "10.0.2.153 fs-01234567.efs.us-east-2.amazonaws.com" | sudo tee -a /etc/hosts
EC2 インスタンスとマウントターゲットの VPC セキュリティグループに、必要に応じて EFS ファイルシステムへのアクセスを許可するルールがあることを確認してください。詳細については、「Amazon EC2インスタンスとマウントターゲットにVPCセキュリティグループを使用する」を参照してください。
ステップ 4: EFS マウントヘルパーを使用してファイルシステムをマウントする
EFS ファイルシステムをマウントするには、まず EC2 インスタンスにマウントディレクトリを作成します。その後、EFS マウントヘルパーを使用して、AWS Identity and Access Management (IAM) 認可と EFS アクセスポイントのいずれかによってファイルシステムをマウントできます。詳細については、「IAM を使用してファイルシステムのデータアクセスを制御する」および「Amazon EFS アクセスポイントの使用」を参照してください。
マウントのディレクトリを作成するには
-
次のコマンドを使用して、ファイルシステムをマウントするためのディレクトリを作成します。
$
sudo mkdir /mnt/efs/
IAM 認可を使用してファイルシステムをマウントするには
IAM 認可を使用してファイルシステムをマウントするには、次のコマンドを使用します。
$
sudo mount -t efs -o tls,iamfile-system-id
/mnt/efs/
EFS アクセスポイントを使用してファイルシステムをマウントするには
EFS アクセスポイントを使用してファイルシステムをマウントするには、次のコマンドを使用します。
$
sudo mount -t efs -o tls,accesspoint=access-point-id
file-system-id
/mnt/efs/
これで EFS ファイルシステムがマウントされたので、次の手順でテストすることができます。
EFS ファイルシステムの接続をテストするには
-
ディレクトリを、次のコマンドで、作成した新しいディレクトリに変更します。
$ cd ~/mnt/efs
-
サブディレクトリを作成し、そのサブディレクトリの所有権を EC2 インスタンスユーザーに変更します。次に、以下のコマンドを使用して、その新しいディレクトリに移動します。
$ sudo mkdir getting-started $ sudo chown ec2-user getting-started $ cd getting-started
-
次のコマンドを使用してテキストファイルを作成します。
$ touch test-file.txt
-
次のコマンドを使用して、ディレクトリの内容を一覧表示します。
$ ls -al
その結果、次のファイルが作成されます。
-rw-rw-r-- 1
username
username
0 Nov 15 15:32 test-file.txt
/etc/fstab
ファイルにエントリを追加することで、自動的にファイルシステムをマウントすることもできます。詳細については、「既存の EC2 Linux インスタンスでの自動マウントの有効化」を参照してください。
警告
ファイルシステムを自動的にマウントする場合、ネットワークファイルシステムを識別するために使用された _netdev
オプションを使用します。_netdev
が見つからない場合、EC2 インスタンスはレスポンスを停止する可能性があります。この結果は、コンピューティングインスタンスがネットワークを開始後、ネットワークファイルシステムを初期化する必要があるためです。詳細については、「自動マウントが失敗してインスタンスがレスポンスしない」を参照してください。
ステップ 5: リソースをクリーンアップして AWS アカウントを保護する
このチュートリアルが完了したら、次の手順を実行してリソースをクリーンアップし、AWS アカウントを保護します。
リソースをクリーンアップし、AWS アカウント を保護するには
-
次のコマンドで、EFS ファイルシステムをアンマウントします。
$ sudo umount ~/efs
Amazon Elastic File System コンソール (https://console.aws.amazon.com/efs/
) を開きます。 -
ファイルシステムのリストから削除する EFS ファイルシステムを選択します。
-
[Actions] (アクション) で、[Delete file system] (ファイルシステムの削除) を選択します。
-
[ファイルシステムを完全に削除] ダイアログボックスで、削除する EFS ファイルシステムのファイルシステム ID を入力して、[ファイルシステムの削除] を選択します。
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
ナビゲーションペインで、[Security Groups] を選択します。
-
このチュートリアルでルールを追加したセキュリティグループの名前を選択します。
警告
VPC のデフォルトのセキュリティグループを削除しないでください。
-
[アクション] メニューで、[Edit inbound rules] (インバウンドルールの編集) を選択します。
-
追加したインバウンドルールの最後に [X] を選択し、[Save (保存)] を選択します。