Amazon EC2からS3をファイルシステムとしてマウントする

JAWS DAYS 2014が近くなってきたので、AWSを弄って遊んでます。
今回は、Amazon EC2インスタンスから、Amazon S3のバケットをファイルシステムとしてマウントしてみます。

aws


はじめに

Amazon EC2インスタンスから、S3のバケットをファイルシステムとしてマウントするためには、
s3fs-fuseというツールを使います。

s3fs-fuseとは、S3のバケットをローカルのファイルシステムとしてマウントする、FUSEファイルシステムです。
FUSE(Filesystem in Userspace)は、Unix系OSのカーネルモジュールで、
ユーザーが独自のファイルシステムを作成できる機能を提供するOSSです。
(詳しい説明は公式サイトWikipediaに譲ります。。)
これを使って、ローカルに存在しないS3バケットのデータをファイルシステムとしてOSに扱わせているわけです。

ちなみに、s3fsで扱える最大ファイルサイズは64GBです。(これはAmazon側の制約ではありません。)


環境

今回試した環境は以下です。

  • Amazon Linux AMI 2013.09.2 (x86_64)
  • s3fs-fuse v1.76 (2014/3/6時点の最新版)

手順

インストール

Installation Noteを参考にs3fs-fuseをインストールします。
(注:GitHubのREADMEは2014/3/6時点で記述が古いので、Wikiを参照すべし)

まずは、依存するツールをインストールします。

$ sudo yum install gcc-c++ fuse fuse-devel libcurl-devel libxml2-devel openssl-devel

パッケージをダウンロードします。2014/3/6時点の最新版はv1.76です。

$ wget https://github.com/s3fs-fuse/s3fs-fuse/archive/v1.76.tar.gz -O s3fs-fuse-1.76.tar.gz

make installします。

$ tar xzvf s3fs-fuse-1.76.tar.gz
$ cd s3fs-fuse-1.76
$ ./autogen.sh
$ ./configure --prefix=/usr/local/
$ make
$ sudo make install

これでインストールは完了です。

認証

S3バケットにアクセスするためには認証が必要になります。
認証の方法は下記の4種類です。

  • コマンドラインオプション”passwd_file”を指定する
  • 環境変数”AWSACCESSKEYID”と”AWSSECRETACCESSKEY”を指定する
  • ユーザのホームディレクトリに”.passwd-s3fs”というファイルを作成する
  • “/etc/passwd-s3fs”というファイルを作成する

今回は、最後の”/etc/passwd-s3fs”を用意する方法で進めます。

$ echo accessKeyId:secretAccessKey | sudo tee /etc/passwd-s3fs

パーミッションを変更します。

$ sudo chmod 640 /etc/passwd-s3fs

マウント

では、早速マウントしてみましょう。

$ sudo s3fs mybucket /mnt

Amazon EC2からのs3のマウントが完了しました。
これで、EC2インスタンスからはファイルシステムとして操作できるようになってるはず。

試しに、ファイルを作成してみます。

$ sudo touch /mnt/test
$ sudo ls /mnt
test

マネジメントコンソールからも確認できました。
s3fs

広告
  1. 2014年 9月 6日

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。