Amazon S3編~S3バケットをファイルシステムとしてマウントしてみよう!~

こんにちは! Rookieです。

前回のレシピに引き続き、今回もAmazon S3編です!

今回は、Amazon S3をファイルシステムとしてマウントしてみたいと思いますが、その前にAmazon S3に関する情報をご紹介します。

最近では、Amazon S3と互換性をもつクラウドストレージ構築ソフトウェアが数多く登場しています。

各サーバの内蔵ディスクを仮想的に一つのストレージ領域として統合し、複数のユーザが同時にシステムを共有できるストレージシステムを生成するといったものです。

一般的な専用ストレージ装置は、データ容量がひっ迫してくると、新しい装置に買い替えたり、データを移行したりする必要がありますが、ソフトウェアで構築したストレージシステムは、容量に余裕がなくなった際もストレージではなくサーバを追加するだけで、システム全体の容量を拡張することができますので、コスト削減にもつながります。

また、アプリケーションとのインターフェースにAmazon S3に準拠したAPIを備えていますので、Amazon S3と連携するアプリケーションやアプライアンスは、接続先を変更するだけで、構築ソフトウェアシステム上で利用することができます。

前回のレシピでもAmazon S3と互換性のある製品をご紹介したかと思いますが、こうした製品が増えれば、よりAmazon S3が身近になり、より幅広く利用ができるようになりますね!

さて、ここから本題に入りまして、Amazon S3をEC2インスタンスのファイルシステムとしてマウントしてみたいと思います!

今回は、s3fsを利用して、Amazon S3をファイルシステムとしてマウントする方法を説明します。

s3fsとは、オープンソースで開発されているファイルシステムです。

これを用いると、LinuxからS3を通常のファイルシステムのようにマウントして利用することができます。

※なお、S3バケットの作成方法については、以前のレシピ

「 Amazon S3編~S3バケットを作成してみよう!~ 」を参照してください。

また、EC2インスタンスの立ち上げについても、同じく以前のレシピ

「 Amazon EC2インスタンスを立ちあげてみよう! 」を参照してください。

  1. まず、AWSのアクセスキーIDとシークレットアクセスキーを確認しておきましょう。

AWS管理コンソールにログインして以下の画面を開き、画面右上より「My Account」を選択します。

20130425_01_01
  1. 画面左メニューの「セキュリティ証明書」を選択します。

「アクセス証明書」の項目にアクセスキーIDとシークレットアクセスキーが記載されています。

20130425_01_02
これで、アクセスキーIDとシークレットアクセスキーの確認は完了です!

では実際に作業をおこなっていきます。

3.まずは、対象のEC2インスタンスにPuTTY等からログインし、以下のコマンドを入力して必要なソフトウェアをインストールします。

※なお、EC2インスタンスへのPuTTYでの接続については、以前のレシピ

「 Amazon EC2インスタンスにPuTTYで接続! 」を参照してください。

1#yum -y install gcc-c++ make openssl-devel curl-devel libxml2-devel libstdc++-devel fuse fuse-devel
  1. s3fsのインストールをおこないます。
1# cd /usr/local/src/23# wget http://s3fs.googlecode.com/files/s3fs-1.62.tar.gz45# tar xvzf s3fs-1.62.tar.gz67# cd s3fs-1.62/89# ./configure --prefix=/usr1011# make1213# make install
  1. インストールが完了したら、手順2までで確認したアクセスキーIDとシークレットアクセスキーをパスワードファイルに書き込みます。
1# vi /etc/passwd-s3fs2アクセスキー:シークレットアクセスキー34# chmod 640 /etc/passwd-s3fs

これで、s3fsのインストールは完了です!

次に、マウント操作をしてみます。

  1. s3fsを使って、S3バケットをマウントするには以下のコマンドを実行します。

※「kaji.aws-demo.net」の部分は、マウントするS3バケットの名前を入力してください。

なお、S3バケットのWeb公開をする際は上記のような名称ではなく、「http://mybucket.s3.amazonaws.com/myobject」等と言ったDNS要件に合った名前を付けましょう!

1# mkdir /mnt/s323# s3fs  kaji.aws-demo.net /mnt/s3 -o allow_other45# df -h67Filesystem            Size  Used Avail Use% Mounted on8/dev/xvda1            7.9G  1.1G  6.8G  14% /9tmpfs                 298M     0  298M   0% /dev/shm10s3fs                  256T     0  256T   0% /mnt/s3

通常にs3fsがシステムとしてマウントされていることが確認できるかと思います。

最後に、動作確認として、簡単な書き込みをおこなってみましょう!

  1. 正常に書き込まれていることが確認できると思います。
1# mkdir /mnt/s3/ kaji.aws-demo.net23# echo "this is s3fs kaji.aws-demo.net " > /mnt/s3/ kaji.aws-demo.net /test.txt45# ls -alh /mnt/s367drwxr-xr-x 1 root root    0 Apr 17 05:53 kaji.aws-demo.net89# ls -alh /mnt/s3/test1011-rw-r--r-- 1 root root 26 Apr 17 05:54 test.txt1213# cat /mnt/s3/ kaji.aws-demo.net /test.txt1415this is kaji.aws-demo.net
  1. また、AWS管理コンソールからも確認しておきます。

AWS管理コンソールにログインして下記画面を開き、サービスで「S3」を選択します。

20130425_01_03

1. 対象のS3バケットを選択すると、さきほどs3fsを使用して作成したフォルダと同名のゼロbyteの

ファイルが作成されているのが確認できるかと思います。

20130425_01_04
これで、すべての作業が完了です!なお、マウントしたS3バケットをアンマウントしたい場合ですが、s3fsには特段、アンマウントコマンドは用意されていません。

以下のようにpsコマンドでIDを確認して、killコマンドを実行することでアンマウントできます。

1# ps ax | grep s3fs2 9454 ?        Ssl    0:00 s3fs kaji.aws-demo.net /mnt/s3 -o allow_other3 9478 pts/1    S+     0:00 grep s3fs45# kill 9454

いかがでしたでしょうか?

次回は、「 Amazon S3編~s3cmdでS3を操作してみよう!~ 」と題して、Amazon S3をs3cmdというツールを使って操作してみたいと思いますので、お楽しみに!

この記事を書いた人

aws-recipe-user