>   >  痴山紘史の日本CG見聞録:第18回:クラウド環境構築[ローカル環境とクラウド環境のファイルの同期]
第18回:クラウド環境構築[ローカル環境とクラウド環境のファイルの同期]

第18回:クラウド環境構築[ローカル環境とクラウド環境のファイルの同期]

S3バケットの準備

まずは、データを格納する先(S3ではバケットと言います)を用意します。

AWSマネージメントコンソールからS3サービスを選び、"バケットを作成する"をクリックします。


バケット名をcondorannexdata、リージョンを米国東部(EC2インスタンスを立ち上げるのと同じ場所)に指定します。 それ以外はデフォルトのまま作成します。

s3fsのインストール

LinuxのインスタンスからS3バケットにアクセスするにはs3fsが便利です。

インスタンスの立ち上げ後、SSHでログインしてインストールします。

$ sudo yum update
$ sudo yum install automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel


$ git clone https://github.com/s3fs-fuse/s3fs-fuse.git
$ cd s3fs-fuse/
$ ./autogen.sh
$ ./configure -prefix=/usr -with-openssl
$ make
$ sudo make install

アクセスキーの設定

s3fsでS3バケットにアクセスするためにはアクセスキーの設定が必要です。

$ sudo vi /etc/passwd-s3fs

AWS_ACCESS_KEY_ID:AWS_SECRET_ACCESS_KEY

S3バケットのマウント

準備ができたのでS3バケットをマウントします。

$ sudo mkdir /var/s3fs
$ sudo s3fs condorannexdata /var/s3fs -o passwd_file=/etc/passwd-s3fs

マウントされたか確認します。

$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)

(中略)

s3fs on /var/s3fs type fuse.s3fs (rw,nosuid,nodev,relatime,user_id=0,group_id=0)

$ sudo touch /var/s3fs/foobar
$ sudo ls /var/s3fs
foobar
$

S3 Management Console上で、バケットにファイルが作成されたことも確認します。


このままでは毎回手動でマウントする必要があるので、自動的にマウントされるようにします。

$ sudo umount /var/s3fs
$ sudo mkdir /tmp/cache
$ sudo chmod 777 /tmp/cache /var/s3fs
$ sudo vi /etc/fstab
$ sudo mount -a
$ ls /var/s3fs/
foobar
$

これでインスタンス側の設定は一通り終わったので、イメージを保存します。

ローカル環境からのマウント

S3バケットへの接続はEC2インスタンスに限らず、ローカル環境からも行うことができます。これは先ほど行なったのと同じく、s3fsを使用します。

AWSのインスタンスと同様、ローカル環境で/var/s3fsにマウントして確認します。

[chiyama@docker s3fs-fuse]$ ls /var/s3fs
foobar
[chiyama@docker s3fs-fuse]$

先ほど作成したfoobarが見えています。

これで、ローカル環境からAWS環境にファイルをアップロードして、AWS上でファイルを共有する手段ができました。

s3fsを使用してファイルをアップロードする方法が遅いと感じた場合はAWS DataSyncAWS Transfer for SFTPといったソリューションがあるので、こちらを検討してみるのもいいかもしれません。

実際のところどうなのか確認してみましょう。PIXAR USDのサンプルデータ、Kitchen_setをローカル環境からs3fsでマウントしたS3 バケットに転送してみます。

$ du -sm Kitchen_set
12      Kitchen_set
$ time cp -Rp Kitchen_set /var/s3fs

real    35m23.298s
user    0m0.024s
sys     0m0.188s
$

ほほう(; ・`д・´)。12MBのファイルで35分とはなかなかシブい結果が出ましたね。これはこのままだと辛いので、別の手段を考える必要がありそうです。今回は、先ほどのAWS Transfer for SFTPを使用してみます。

次ページ:
AWS SFTPサーバの構築

その他の連載