s3fsを使う
s3fsを使ってEC2にS3のバケットをマウントしようと思う。
事前準備
S3 Bucketを作成しておく
IAMでS3へのアクセス権限を持つユーザーを作成してAccess KeyとSecret Keyを取得しておく
ちなみに権限は以下で動いた
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmtxxxxxxxx",
"Effect": "Allow",
"Action": [
"s3:GetBucketAcl",
"s3:GetBucketLocation",
"s3:GetBucketLogging",
"s3:GetBucketNotification",
"s3:GetBucketPolicy",
"s3:GetBucketRequestPayment",
"s3:GetBucketTagging",
"s3:GetBucketVersioning",
"s3:GetBucketWebsite",
"s3:GetLifecycleConfiguration",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:PutBucketAcl",
"s3:PutBucketRequestPayment",
"s3:PutBucketWebsite",
"s3:PutLifecycleConfiguration",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectVersionAcl"
],
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
fuseを入れる
sudo yum install -y fuse fuse-devel curl-devel
sudo ldconfig
sudo modprobe fuse
s3fsを入れる
cd /usr/local/src
sudo wget --no-check-certificate https://s3fs.googlecode.com/files/s3fs-1.74.tar.gz
./configure --prefix=/usr
make
make isntall
つづいてpasswdファイル作成。事前に作成したAMSのS3アクセス権限を持ったIAMのAccess keyとSecret Keyを入力しておく
/etc/passwd-s3fsに記載しておこう。
mnt/s3にS3をマウントする
sudo chmod 600 /etc/passwd-s3fs
sudo mkdir /mnt/s3
sudo s3fs for-ec2-xx-xx-xx-xx /mnt/s3 -o default_acl=public-read
$ sudo df -h
Filesystem Size Used Avail Use% マウント位置
/dev/xvda1 7.9G 3.1G 4.9G 39% /
tmpfs 298M 0 298M 0% /dev/shm
s3fs 256T 0 256T 0% /mnt/s3
256TB!!!!
自動マウントの設定
sudo vim /etc/fstab
s3fs /mnt/s3 fuse allow_other,default_acl=public-read 0 0
付け方間違えたので再度つける。
まずプロセスを確認
$ ps ax | grep s3fs
xxxxx ? Ssl 0:00 s3fs for-ec2-xx-xx-xx-xx /mnt/s3 -o default_acl=public-read
xxxxx pts/0 S+ 0:00 grep s3fs
プロセスやっつける
$ sudo kill xxxxx
マウントが解除されたか確認
$ sudo df -h
Filesystem Size Used Avail Use% マウント位置
/dev/xvda1 7.9G 3.1G 4.9G 39% /
tmpfs 298M 0 298M 0% /dev/shm
オプションを付けて再度マウント
$ sudo s3fs for-ec2-xx-xx-xx-xx /mnt/s3 -o allow_other,default_acl=public-read
マウントぶりを確認
$ sudo df -h
Filesystem Size Used Avail Use% マウント位置
/dev/xvda1 7.9G 3.1G 4.9G 39% /
tmpfs 298M 0 298M 0% /dev/shm
s3fs 256T 0 256T 0% /mnt/s3
S3上に保存されるかのテスト
sudo echo "test" > /mnt/s3/test.txt
無事S3上で確認。