前回の記事でEC2にインストールしたownCloud からS3に接続ができなかったので、直接EC2からS3へマウントできないか試したいと思います。
EC2からS3のバケットをファイルシステムとしてマウントできる仕組みの「s3fs」をインストールします。
今回は下記のサイトを参考にしています。
s3fsのインストール
<span style="line-height: 24px;">$ sudo yum update</span>
$ sudo yum -y install gcc-c++ fuse fuse-devel libcurl-devel libxml2-devel openssl-devel
$ curl -O http://s3fs.googlecode.com/files/s3fs-1.74.tar.gz
$ tar xzf s3fs-1.74.tar.gz
$ cd s3fs-1.74
$ ./configure --prefix=/usr/local
$ make
$ sudo make install
$ find /usr/local -type f
/usr/local/bin/s3fs
/usr/local/share/man/man1/s3fs.1
設定・マウント
まず、アクセスキーとシークレットアクセスキーを設定します。キーを設定する方法は4つあるようですが、今回は/etc/passwd-s3fs にパスワードファイルを作成する方式にします。
$ sudo echo "{Access Key ID}:{Secret Access Key}" | sudo tee -a /etc/passwd-s3fs
$ sudo chmod 640 /etc/passwd-s3fs
{Access Key ID}と{Secret Access Key}は、別途IAMで作成したユーザー情報です。
次に、ownCloud のユーザで共有フォルダを作成しておきます。(ここでは「share」)以下では、share をS3にマウントします。
ownCloud からマウントしたS3バケットにアクセスするので、マウントの際 apache ユーザに権限を与えないといけませんので、apacheのuidとgidを調べます。
$ id apache
uid=48(apache) gid=48(apache) groups=48(apache)
apacheに権限を与える形でS3のバケットにマウントします。
$ sudo ls -ld /home/data/{ownCloud User}/files/share
drwxr-xr-x 2 apache apache 4096 Sep 5 11:41 /home/data/{ownCloud User}/files/share
$ sudo /usr/local/bin/s3fs {bucket_name} /home/data/{ownCloud User}/files/share -o rw,allow_other,use_cache=/tmp,uid=48,gid=48
$ sudo ls -ld /home/data/{ownCloud User}/files/share
drwxrwxrwx 1 apache apache 0 Jan 1 1970 /home/data/{ownCloud User}/files/share
{ownCloud User}はownCloudのユーザID、{bucket_name}はEC2からマウントしたいバケット名です。
確認
マウントの確認
$ sudo df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.8G 3.4G 4.4G 44% /
devtmpfs 281M 12K 281M 1% /dev
tmpfs 297M 0 297M 0% /dev/shm
s3fs 256T 0 256T 0% /home/data/{ownCloud User}/files/share
マウントされています。(256Tってすごいですね)
ownCloud からファイルをアップロードしてみます。
S3のマネジメントコンソールから確認
これで、ownCloudからS3のバケットにアップされていることが確認できました。
ownCloud の管理画面からうなく接続できない原因は解りませんでしたが、とりあえず共有フォルダ固定ですが、容量無制限のストレージサービスを独自ドメインで立てることができました。