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上で確認。