チュートリアル: EFS ファイルシステムを作成し、 を使用してEC2インスタンスにマウントする AWS CLI - Amazon Elastic File System

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

チュートリアル: EFS ファイルシステムを作成し、 を使用してEC2インスタンスにマウントする AWS CLI

暗号化されたEFSファイルシステムを作成し、 のEC2インスタンスにマウントしVPC、 を使用してセットアップをテストします AWS CLI。

注記

使用開始 チュートリアルでは、コンソールを使用して Amazon EC2と EFS リソースを作成します。このチュートリアルでは、 を使用して同じ AWS CLI ことを行います。主に Amazon EFS に慣れるために使用しますAPI。

このチュートリアルでは、 アカウントに次の AWS リソースを作成します。

  • Amazon EC2リソース:

    • 2 つのセキュリティグループ (EC2インスタンスとEFSファイルシステム用)。

      セキュリティグループにルールを追加して、適切なインバウンド/アウトバウンドアクセスを許可します。これにより、 EC2instanceは標準の NFSv4.1 TCP ポートを使用してマウントターゲットを介してファイルシステムに接続できます。

    • のEC2インスタンスVPC。

  • Amazon EFSリソース:

    • ファイルシステム。

    • ファイルシステムのマウントターゲット。

      EC2 インスタンスにファイルシステムをマウントするには、 にマウントターゲットを作成する必要がありますVPC。のアベイラビリティーゾーンごとに 1 つのマウントターゲットを作成できますVPC。詳細については、「Amazon EFSの仕組み」を参照してください。

次に、EC2インスタンスでファイルシステムをテストします。チュートリアルの最後にあるクリーンアップステップでは、これらのリソースを削除するための情報を提供します。

このチュートリアルでは、米国西部 (オレゴン) リージョン () にこれらのリソースをすべて作成しますus-west-2。どちら AWS リージョン を使用する場合でも、常に使用してください。、 リソースVPC、および EC2リソースを含むすべてのEFSリソースは、同じ に存在する必要があります AWS リージョン。

前提条件

  • のルート認証情報を使用してコンソールに AWS アカウント サインインし、開始方法の演習を試すことができます。ただし、 AWS Identity and Access Management (IAM) では、 のルート認証情報を使用しないことをお勧めします AWS アカウント。代わりに、アカウントに管理者ユーザーを作成し、それらの認証情報を使用してアカウントのリソースを管理します。代わりに、アカウントに管理者ユーザーを作成し、それらの認証情報を使用してアカウントのリソースを管理します。詳細については、「 ユーザーガイド」のIAM「Identity Center ユーザーに AWS アカウント アクセス権を割り当てるAWS IAM Identity Center 」を参照してください。

  • アカウントでVPC作成したデフォルトVPCまたはカスタムを使用できます。このチュートリアルでは、VPCデフォルト設定が機能します。ただし、カスタム を使用する場合はVPC、以下を確認します。

  • をセットアップ AWS CLI し、管理者ユーザープロファイルを追加する必要があります。

のセットアップ AWS CLI

以下の手順を使用して、 AWS CLI および ユーザープロファイルを設定します。

を設定するには AWS CLI
  1. AWS CLIをダウンロードして設定します。手順については、「 ユーザーガイド」の「 の開始 AWS CLI方法AWS Command Line Interface 」を参照してください。

  2. プロファイルを設定します。

    ユーザー認証情報は AWS CLI config ファイルに保存します。このチュートリアルのCLIコマンド例では、管理者ユーザープロファイルを指定します。configuser ファイルを config ファイルに作成します。以下のように、管理者ユーザープロファイルを config ファイルのデフォルトとして設定することもできます。

    [profile adminuser] aws_access_key_id = admin user access key ID aws_secret_access_key = admin user secret access key region = us-west-2 [default] aws_access_key_id = admin user access key ID aws_secret_access_key = admin user secret access key region = us-west-2

    前述のプロファイルでは、デフォルトの も設定されます AWS リージョン。CLI コマンドでリージョンを指定しない場合、us-west-2 リージョンが想定されます。

  3. コマンドプロンプトで以下のコマンドを入力して、セットアップを確認します。これらのコマンドの両方は、いずれも認証情報を明示的に提供しないため、デフォルトプロファイルの認証情報が使用されます。

    • help コマンドを試してみます。

      --profile パラメータを追加することで、明示的にユーザープロファイルを指定することもできます。

      aws help
      aws help \ --profile adminuser

ステップ 1: EC2リソースを作成する

このステップでは、次の作業を行います。

  • 2 つのセキュリティグループを作成します。

  • セキュリティグループにルールを追加して、追加のアクセスを許可します。

  • EC2 インスタンスの起動 次のステップで、このインスタンスにEFSファイルシステムを作成してマウントします。

ステップ 1.1: 2 つのセキュリティグループを作成する

このセクションでは、EC2インスタンスとEFSマウントターゲットVPCのセキュリティグループを に作成します。このチュートリアルの後半では、これらのセキュリティグループをEC2インスタンスとEFSマウントターゲットに割り当てます。セキュリティグループの詳細については、「Linux インスタンス用の Amazon EC2 セキュリティグループ」を参照してください。

セキュリティグループを作成するには
  1. create-security-group CLI コマンドを使用して 2 つのセキュリティグループを作成します。

    1. EC2 インスタンスのセキュリティグループ (efs-walkthrough1-ec2-sg) を作成し、VPCID を指定します。

      $ aws ec2 create-security-group \ --region us-west-2 \ --group-name efs-walkthrough1-ec2-sg \ --description "Amazon EFS walkthrough 1, SG for EC2 instance" \ --vpc-id vpc-id-in-us-west-2 \ --profile adminuser

      セキュリティグループ ID を書き留めます。以下に、応答の例を示します。

      { "GroupId": "sg-aexample" }

      VPC ID は、次のコマンドを使用して確認できます。

      $ aws ec2 describe-vpcs

    2. EFS マウントターゲットのセキュリティグループ (efs-walkthrough1-mt-sg) を作成します。VPC ID を指定する必要があります。

      $ aws ec2 create-security-group \ --region us-west-2 \ --group-name efs-walkthrough1-mt-sg \ --description "Amazon EFS walkthrough 1, SG for mount target" \ --vpc-id vpc-id-in-us-west-2 \ --profile adminuser

      セキュリティグループ ID を書き留めます。以下に、応答の例を示します。

      { "GroupId": "sg-aexample" }
  2. セキュリティグループを確認します。

    aws ec2 describe-security-groups \ --group-ids list of security group IDs separated by space \ --profile adminuser \ --region us-west-2

    両方には、すべてのトラフィックを残すことができるアウトバウンドルールが 1 つだけ必要です。

    次のセクションでは、以下を可能にする追加アクセスを承認します。

    • EC2 インスタンスに接続できるようにします。

    • EC2 インスタンスとEFSマウントターゲット間のトラフィックを有効にします (このチュートリアルの後半でこれらのセキュリティグループを関連付けます)。

ステップ 1.2: セキュリティグループにルールを追加してインバウンド/アウトバウンドアクセスを承認する

このステップでは、セキュリティグループにルールを追加して、インバウンド/アウトバウンドアクセスを許可します。

ルールを追加するには
  1. 任意のホストSSHから を使用してEC2インスタンスに接続できるように、EC2インスタンス (SSH) のセキュリティグループへの受信 Secure Shell (efs-walkthrough1-ec2-sg) 接続を承認します。

    $ aws ec2 authorize-security-group-ingress \ --group-id id of the security group created for EC2 instance \ --protocol tcp \ --port 22 \ --cidr 0.0.0.0/0 \ --profile adminuser \ --region us-west-2

    セキュリティグループに追加したインバウンドおよびアウトバウンドのルールがあることを確認します。

    aws ec2 describe-security-groups \ --region us-west-2 \ --profile adminuser \ --group-id security-group-id
  2. EFS マウントターゲット () のセキュリティグループへのインバウンドアクセスを許可しますefs-walkthrough1-mt-sg

    コマンドプロンプトで、adminuser プロファイルを使用して次の AWS CLI authorize-security-group-ingressコマンドを実行し、インバウンドルールを追加します。

    $ aws ec2 authorize-security-group-ingress \ --group-id ID of the security group created for Amazon EFS mount target \ --protocol tcp \ --port 2049 \ --source-group ID of the security group created for EC2 instance \ --profile adminuser \ --region us-west-2
  3. 両方のセキュリティグループがインバウンドアクセスを許可することを確認します。

    aws ec2 describe-security-groups \ --group-names efs-walkthrough1-ec2-sg efs-walkthrough1-mt-sg \ --profile adminuser \ --region us-west-2

ステップ 1.3: EC2インスタンスを起動する

このステップでは、EC2インスタンスを起動します。

EC2 インスタンスを起動するには
  1. EC2 インスタンスの起動時に提供する必要がある以下の情報を収集します。

    • [キーペア名]。キーペアを作成する手順については、「Amazon ユーザーガイド」の「Amazon EC2インスタンスのキーペアを作成するEC2」を参照してください。

    • 起動する Amazon マシンイメージ (AMI) の ID。

      EC2 インスタンスの起動に使用する AWS CLI コマンドには、パラメータとしてデプロイする Amazon マシンイメージ (AMI) の ID が必要です。この演習では、Amazon Linux HVM を使用しますAMI。

      注記

      最も汎用的な Linux ベースの を使用できますAMIs。別の Linux を使用する場合はAMI、ディストリビューションのパッケージマネージャーを使用してインスタンスにNFSクライアントをインストールしてください。また、必要に応じてソフトウェアパッケージを追加する必要がある場合もあります。

      Amazon Linux の場合AMI、最新の HVM は Amazon Linux AMIIDsにあります。Amazon Linux AMIIDsテーブルから ID 値を次のように選択します。

      • [US West Oregon (米国西部オレゴン)] リージョンを選択します。このチュートリアルでは、米国西部 (オレゴン) リージョン (us-west-2) 内にすべてのリソースを作成していることを前提としています。

      • EBS-backed HVM 64 ビットタイプを選択します (CLIコマンドではt2.microインスタンスストアをサポートしていないインスタンスタイプを指定するため)。

    • EC2 インスタンス用に作成したセキュリティグループの ID。

    • AWS リージョン。このチュートリアルでは、us-west-2 リージョンを使用しています。

    • インスタンスを起動するVPCサブネット ID。サブネットのリストを取得するには、describe-subnets コマンドを使用します。

      $ aws ec2 describe-subnets \ --region us-west-2 \ --filters "Name=vpc-id,Values=vpc-id" \ --profile adminuser

      サブネット ID を選択した後、describe-subnets の結果から次の値を書き留めます。

      • サブネット ID – マウントターゲットを作成するときにこの値が必要です。この演習では、EC2インスタンスを起動するのと同じサブネットにマウントターゲットを作成します。

      • サブネットのアベイラビリティーゾーン — この値は、マウントターゲットDNS名を構築するのに必要です。この名前は、EC2インスタンスにファイルシステムをマウントするために使用します。

  2. インスタンスを起動するには、次の AWS CLI run-instancesコマンドを実行しますEC2。

    $ aws ec2 run-instances \ --image-id AMI ID \ --count 1 \ --instance-type t2.micro \ --associate-public-ip-address \ --key-name key-pair-name \ --security-group-ids ID of the security group created for EC2 instance \ --subnet-id VPC subnet ID \ --region us-west-2 \ --profile adminuser
  3. run-instances コマンドによって返されるインスタンス ID を書き留めます。

  4. 作成したEC2インスタンスには、EC2インスタンスに接続してファイルシステムをマウントするために使用するパブリックDNS名が必要です。パブリックDNS名は 形式です。

    ec2-xx-xx-xx-xxx.compute-1.amazonaws.com

    次のCLIコマンドを実行して、パブリックDNS名を書き留めます。

    aws ec2 describe-instances \ --instance-ids EC2 instance ID \ --region us-west-2 \ --profile adminuser

    パブリックDNS名がない場合は、EC2インスタンスを起動した VPC の設定を確認します。詳細については、「前提条件」を参照してください。

  5. (オプション) 作成したEC2インスタンスに名前を割り当てます。これを行うには、インスタンスに割り当てる名前にキー名と値を設定したタグを追加します。これを行うには、次の AWS CLI create-tagsコマンドを実行します。

    $  aws ec2 create-tags \ --resources EC2-instance-ID \ --tags Key=Name,Value=Provide-instance-name  \ --region us-west-2 \ --profile adminuser

ステップ2:EFSリソースを作成する

このステップでは、次の作業を行います。

  • 暗号化されたEFSファイルシステムを作成します。

  • ライフサイクル管理を有効にします。

  • EFS インスタンスを起動したアベイラビリティーゾーンにマウントターゲットを作成します。

ステップ 2.1: EFS ファイルシステムを作成する

このステップでは、EFSファイルシステムを作成します。次のステップで、ファイルシステムのマウントターゲットを作成するときに使用する FileSystemId を書き留めます。

ファイルシステムを作成するには
  • オプションの Name タグを使用してファイルシステムを作成します。

    1. コマンドプロンプトで、次の AWS CLIcreate-file-systemコマンドを実行します。

      $ aws efs create-file-system \ --encrypted \ --creation-token FileSystemForWalkthrough1 \ --tags Key=Name,Value=SomeExampleNameValue \ --region us-west-2 \ --profile adminuser

      次のレスポンスが返されます。

      { "OwnerId": "111122223333", "CreationToken": "FileSystemForWalkthrough1", "FileSystemId": "fs-c657c8bf", "CreationTime": 1548950706.0, "LifeCycleState": "creating", "NumberOfMountTargets": 0, "SizeInBytes": { "Value": 0, "ValueInIA": 0, "ValueInStandard": 0 }, "PerformanceMode": "generalPurpose", "Encrypted": true, "KmsKeyId": "arn:aws:kms:us-west-2:111122223333:a5c11222-7a99-43c8-9dcc-abcdef123456", "ThroughputMode": "bursting", "Tags": [ { "Key": "Name", "Value": "SomeExampleNameValue" } ] }
    2. [FileSystemId] の値を書き留めます。「ステップ2.3: マウントターゲットを作成する」でこのファイルシステムのマウントターゲットを作成するときに、この値が必要になります。

ステップ 2.2:ライフサイクル管理を有効にする

このステップでは、低頻度アクセス (IA) EFS ストレージクラスを使用するために、ファイルシステムでライフサイクル管理を有効にします。詳細については、「EFS ファイルシステムのストレージライフサイクルの管理」および「EFS ストレージクラス」を参照してください。

ライフサイクル管理を有効にするには
  • コマンドプロンプトで、次の AWS CLI put-lifecycle-configurationコマンドを実行します。

    $ aws efs put-lifecycle-configuration \ --file-system-id fs-c657c8bf \ --lifecycle-policies TransitionToIA=AFTER_30_DAYS \ --region us-west-2 \ --profile adminuser

    次のレスポンスが返されます。

    { "LifecyclePolicies": [ { "TransitionToIA": "AFTER_30_DAYS" } ] }

ステップ2.3: マウントターゲットを作成する

このステップでは、EC2インスタンスを起動したアベイラビリティーゾーンにファイルシステムのマウントターゲットを作成します。

  1. 以下の情報があることを確認してください。

    • マウント対象を作成するファイルシステムの ID (例: fs-example)。

    • VPC でEC2インスタンスを起動したサブネット IDステップ 1: EC2リソースを作成する

      このチュートリアルでは、EC2インスタンスを起動したのと同じサブネットにマウントターゲットを作成するため、サブネット ID (例: ) が必要ですsubnet-example

    • 前のステップでマウントターゲット用に作成したセキュリティグループの ID。

  2. コマンドプロンプトで、次の AWS CLI create-mount-targetコマンドを実行します。

    $ aws efs create-mount-target \ --file-system-id file-system-id \ --subnet-id subnet-id \ --security-group ID-of-the security-group-created-for-mount-target \ --region us-west-2 \ --profile adminuser

    次のレスポンスが返されます。

    { "MountTargetId": "fsmt-example", "NetworkInterfaceId": "eni-example", "FileSystemId": "fs-example", "PerformanceMode" : "generalPurpose", "LifeCycleState": "available", "SubnetId": "fs-subnet-example", "OwnerId": "account-id", "IpAddress": "xxx.xx.xx.xxx" }
  3. また、describe-mount-targets コマンドを使用して、ファイルシステムで作成したマウントターゲットの説明を取得することもできます。

    $ aws efs describe-mount-targets \ --file-system-id file-system-id \ --region us-west-2 \ --profile adminuser

ステップ 3: ファイルシステムをEC2インスタンスにマウントしてテストする

このステップでは、次の作業を行います。

  • 必要な情報を収集します。

  • EC2 インスタンスに NFSクライアントをインストールします。

  • ファイルシステムをEC2インスタンスにマウントしてテストします。

ステップ 3.1: 情報を収集する

このセクションの手順に従って、次の情報を確認してください。

  • 次の形式のEC2インスタンスのパブリックDNS名。

    ec2-xx-xxx-xxx-xx.aws-region.compute.amazonaws.com
  • DNS ファイルシステムの名前。このDNS名前は、次の汎用形式を使用して作成できます。

    file-system-id.efs.aws-region.amazonaws.com

    マウントターゲットを使用してファイルシステムをマウントするEC2インスタンスは、ファイルシステムDNSの名前をマウントターゲットの IP アドレスに解決できます。

注記

Amazon EFSでは、EC2インスタンスにパブリック IP アドレスまたはパブリックDNS名を含める必要はありません。前述の要件は、 を の外部からSSHインスタンスに接続できるように、このウォークスルー例専用ですVPC。

ステップ 3.2: EC2インスタンスにNFSクライアントをインストールする

Windows、Linux、macOS X、またはその他の Unix バリアントを実行しているコンピュータからEC2インスタンスに接続できます。

NFS クライアントをインストールするには
  1. EC2 インスタンスに接続します。詳細については、「Amazon ユーザーガイド」のEC2「インスタンスに接続する」を参照してください。 EC2

  2. SSH セッションを使用して、EC2インスタンスで次のコマンドを実行します。

    1. (オプション) アップデートを入手して再起動します。

      $ sudo yum -y update $ sudo reboot

      再起動後、EC2インスタンスに再接続します。

    2. NFS クライアントをインストールします。

      $ sudo yum -y install nfs-utils
      注記

      EC2 インスタンスの起動AMI時に Amazon Linux AMI 2016.03.0 Amazon Linux を選択した場合は、AMIデフォルトで に既に含まれnfs-utilsているため、 をインストールする必要はありません。

ステップ 3.3: ファイルシステムをEC2インスタンスにマウントしてテストする

次に、ファイルシステムをEC2インスタンスにマウントします。

  1. ディレクトリを作成します (efs-mount-point「」)。

    $ mkdir ~/efs-mount-point
  2. EFS ファイルシステムをマウントします。

    $ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-DNS:/ ~/efs-mount-point

    EC2 インスタンスは、マウントターゲットDNS名を IP アドレスに解決できます。オプションでマウントターゲットの IP アドレスを直接指定することもできます。

    $ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-ip:/  ~/efs-mount-point
  3. ファイルEFSシステムをEC2インスタンスにマウントしたので、ファイルを作成できます。

    1. ディレクトリを変更します。

      $ cd ~/efs-mount-point
    2. ディレクトリの内容を一覧表示します。

      $ ls -al

      これは空である必要があります。

      drwxr-xr-x 2 root root 4096 Dec 29 22:33 . drwx------ 4 ec2-user ec2-user 4096 Dec 29 22:54 ..

    3. ファイルシステムのルートディレクトリは、作成時に root ユーザーが所有し、root ユーザーによって書き込みが可能なため、ファイルを追加する権限を変更する必要があります。

      $ sudo chmod go+rw .

      ls -al コマンドを実行すると、権限が変更されたことがわかります。

      drwxrwxrwx 2 root root 4096 Dec 29 22:33 . drwx------ 4 ec2-user ec2-user 4096 Dec 29 22:54 ..
    4. テキストファイルを作成します。

      $ touch test-file.txt
    5. ディレクトリのコンテンツを一覧表示します。

      $ ls -l

これで、 のEC2インスタンスにEFSファイルシステムが正常に作成され、マウントされましたVPC。

マウントしたファイルシステムは、再起動後も保持されません。ディレクトリを自動的に再マウントするには、fstab ファイルを使用します。Auto Scaling グループを使用してEC2インスタンスを起動する場合は、起動設定でスクリプトを設定することもできます。

ステップ 4: クリーンアップする

作成したリソースが不要になった場合は、削除する必要があります。これを行うには、 を使用しますCLI。

  • EC2 リソース (EC2インスタンスと 2 つのセキュリティグループ) を削除します。マウントターゲットEFSを削除すると、Amazon はネットワークインターフェイスを削除します。

  • EFS リソース (ファイルシステム、マウントターゲット) を削除します。

このチュートリアルで作成した AWS リソースを削除するには
  1. このチュートリアル用に作成したEC2インスタンスを終了します。

    $ aws ec2 terminate-instances \ --instance-ids instance-id \ --profile adminuser

    コンソールを使用してEC2リソースを削除することもできます。手順については、「インスタンスの終了」を参照してください。

  2. マウントターゲットを削除します。

    ファイルシステムを削除する前に、そのファイルシステム用に作成されたマウントターゲットを削除する必要があります。describe-mount-targets CLI コマンドを使用してマウントターゲットのリストを取得できます。

    $ aws efs describe-mount-targets \ --file-system-id file-system-ID \ --profile adminuser \ --region aws-region

    次に、 delete-mount-target CLI コマンドを使用してマウントターゲットを削除します。

    $ aws efs delete-mount-target \ --mount-target-id ID-of-mount-target-to-delete \ --profile adminuser \ --region aws-region
  3. (オプション) 作成した 2 つのセキュリティグループを削除します。セキュリティグループを作成するための料金はかかりません。

    EC2 インスタンスのセキュリティグループを削除する前に、マウントターゲットのセキュリティグループを削除する必要があります。マウントターゲットのセキュリティグループには、EC2セキュリティグループを参照するルールがあります。したがって、まずEC2インスタンスのセキュリティグループを削除することはできません。

    手順については、「Amazon ユーザーガイド」の「セキュリティグループの削除」を参照してください。 EC2

  4. delete-file-system CLI コマンドを使用してファイルシステムを削除します。describe-file-systems CLI コマンドを使用してファイルシステムのリストを取得できます。レスポンスからファイルシステム ID を取得できます。

    aws efs describe-file-systems \ --profile adminuser \ --region aws-region

    ファイルシステム ID を指定してファイルシステムを削除します。

    $ aws efs delete-file-system \ --file-system-id ID-of-file-system-to-delete \ --region aws-region \ --profile adminuser