AWSのEC2インスタンス(Amazon Linux 2)にS3バケットをマウントする手順のメモ。
当方の環境は以下のとおり。
・EC2インスタンス: 1台。t2.micro (amzn2-ami-hvm-2.0.20180622.1-x86_64-gp2)
・S3バケット: 1台。
・IAMロール: hogeとする
・リージョン: ap-northeast-1a
S3バケットに用が有る時だけマウントする為、EC2インスタンス起動時の自動マウントはしない。
s3fsとs3fs-fuse-1.77の導入はGoogleで検索すると多くヒットするので割愛。
EC2にS3バケットをマウントする手順
1. S3バケットのマウントポイントの作成。
$ sudo mkdir /mnt/s3
2. 上記1.で作成した/mnt/s3のパーミッションの設定。
$ sudo chmod 777 /mnt/s3
3. このままだとrootしか使えない為、他のユーザが使えるようfuse.confを修正。
user_allow_otherの頭から#を削除。
$ sudo vi /etc/fuse.conf # mount_max = 1000 user_allow_other
4. マウントコマンドで必要なuidとgidの値を確認。
id ec2-user uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal)
5. EC2インスタンスのコンソールのIAMロールの指定。
EC2インスタンスのコンソール画面上側のアクションから「インスタンスの設定」「IAMロールの割り当て/置換」の順に進み、予め作成していたIAMロールを指定し、適用をクリック。
6. S3バケットxxxxxxxを/mnt/s3にマウント。IAMロールhogeと上記4.で確認したuidとgidを指定。
$ sudo /usr/local/bin/s3fs xxxxxxx /mnt/s3 -o rw,allow_other,uid=1000,gid=1000,default_acl=public-read,iam_role="hoge"
7. df -hを叩き、マウント出来ている事を確認。
最終行にて、s3fsで/mnt/s3がマウントされている事が確認出来た。
$ df Filesystem Size Used Avail Use% Mounted on devtmpfs 476M 0 476M 0% /dev tmpfs 493M 0 493M 0% /dev/shm tmpfs 493M 304K 493M 1% /run tmpfs 493M 0 493M 0% /sys/fs/cgroup /dev/xvda1 8.0G 2.7G 5.4G 34% / tmpfs 99M 0 99M 0% /run/user/1000 s3fs 256T 0 256T 0% /mnt/s3
Amazon S3について
https://aws.amazon.com/jp/s3/ Amazon S3
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/Welcome.html Amazon S3とは