LoginSignup
0

More than 3 years have passed since last update.

AWS CLIを利用して、EFS をEC2 にマウントしてみた

Last updated at Posted at 2019-07-17

1.AWS CLIのセットアップ

default プロファイルを作成する。

aws configure --profile default
AWS Access Key ID [****************S3OI]:
AWS Secret Access Key [****************Hl/8]:
Default region name [ap-northeast-1]:
Default output format [json]:

2.EC2リソースの準備

2-1.セキュリティグループの作成

EC2用のセキュリティグループ (ec2-efs-sg) の作成

aws ec2 create-security-group --group-name ec2-efs-sg --description ec2-efs-sg --vpc-id <vpc-id>

{
    "GroupId": "sg-0477dba8701c82358"
}

EC2用のセキュリティグループ (efs-ec2-sg) の作成

aws ec2 create-security-group --group-name efs-ec2-sg --description efs-ec2-sg --vpc-id <vpc-id>

{
    "GroupId": "sg-077ebe172984f9ba6"
}

作成されたかセキュリティグループをそれぞれ確認する

aws ec2 describe-security-groups --group-ids <GroupId>

{
    "SecurityGroups": [
        {
            "IpPermissionsEgress": [
                {
                    "IpProtocol": "-1",
                    "PrefixListIds": [],
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ],
                    "UserIdGroupPairs": [],
                    "Ipv6Ranges": []
                }
            ],
            "Description": "ec2-efs-sg",
            "IpPermissions": [],
            "GroupName": "ec2-efs-sg",
            "VpcId": "<VpcId>",
            "OwnerId": "<OwnerId>",
            "GroupId": "<GroupId>"
        }
    ]
}

2-2.セキュリティグループにルールを追加する

EC2側のセキュリティグループにルールを追加する。(ec2-efs-sg)

aws ec2 authorize-security-group-ingress --group-id <group-id> --protocol tcp --port 22 --cidr 0.0.0.0/0

efs側のセキュリティグループにルールを追加する。(efs-ec2-sg)

aws ec2 authorize-security-group-ingress --group-id <group-id> --protocol tcp --port 2049 --source-group <source-group ID>

大きな反応はないので、ルールが追加されたかそれぞれ確認する。

aws ec2 describe-security-groups --group-id <group-id>

{
    "SecurityGroups": [
        {
            "IpPermissionsEgress": [
                {
                    "IpProtocol": "-1",
                    "PrefixListIds": [],
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ],
                    "UserIdGroupPairs": [],
                    "Ipv6Ranges": []
                }
            ],
            "Description": "ec2-efs-sg",
            "IpPermissions": [
                {
                    "PrefixListIds": [],
                    "FromPort": 22,
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ],
                    "ToPort": 22,
                    "IpProtocol": "tcp",
                    "UserIdGroupPairs": [],
                    "Ipv6Ranges": []
                }
            ],
            "GroupName": "efs-ec2-sg",
            "VpcId": "<VpcId>",
            "OwnerId": "<OwnerId>",
            "GroupId": "<GroupId>"
        }
    ]
}

2-3.EC2 インスタンスを起動する

EC2を配置するサブネットIDを確認しておきます。

aws ec2 describe-subnets

EC2 インスタンスを作成する。

aws ec2 run-instances --image-id <AMI ID> --count 1 --instance-type t2.micro --associate-public-ip-address --key-name <key-name> --security-group-ids <security-group-ids> --subnet-id <VPC subnet ID>

            "InstanceId": "i-0b74bccd242bbea63",

接続するための、パブリックIP、パブリックDNSを確認しておく。

aws ec2 describe-instances --instance-ids <InstanceId>

                                "PublicIp": "<PublicIp>",
                                "PublicDnsName": "<PublicDNS>",

3.EFSリソースの作成

3-1.EFSファイルシステムを作成する

aws efs create-file-system --creation-token FileSystemForWalkthrough1

    "FileSystemId": "fs-f25534d3",

3-2.ライフサイクル管理の有効化(オプション)

ライフサイクル管理を有効にします。
なお、AmazonLinux2を利用してやりましたが、最近リリースされた機能のため、CLIが最新でないとできません。

aws efs put-lifecycle-configuration --file-system-id fs-f25534d3 --lifecycle-policies TransitionToIA=AFTER_30_DAYS

3-3.マウントターゲットを作成する

aws efs create-mount-target --file-system-id <file-system-id> --subnet-id <subnet-id> --security-group <efs-ec2 security-group>

4.EFS ファイルシステムを EC2 インスタンスにマウントしてする

4-1.NFS クライアントのインストール

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

sudo yum -y install nfs-utils

4-2.EC2 インスタンスへのファイルシステムをマウント

ディレクトリを作成し、EC2インスタンスへファイルシステムをへマウントします。

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

5.テストする

ディレクトリを移動する。

cd ~/efs-mount-point  
ls -la
drwxr-xr-x 2 root     root     6144 Jul 17 05:59 .
drwx------ 4 ec2-user ec2-user  118 Jul 17 07:46 ..

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

sudo chmod go+rw .
ls -la
drwxrwxrwx 2 root     root     6144 Jul 17 05:59 .
drwx------ 4 ec2-user ec2-user  118 Jul 17 07:46 ..

ファイルを作成してみる。

touch test-file.txt
ls -l
-rw-rw-r-- 1 ec2-user ec2-user 0 Jul 17 07:55 test.txt

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0