takaokaです。前回S3にアクセス可能なIAMのユーザを作成しました。 今回はCentOS6.5のEC2インスタンスにs3fsを導入しバケットをマウントしてみたいと思います。
s3fsの最新版はhttps://github.com/s3fs-fuse/s3fs-fuseからダウンロード可能です。 現時点で最新版であるバージョン1.78を使用しました。
■1. 依存パッケージ導入(その1) READMEを見るとs3fs導入にはいくつかのパッケージ必要であることがわかります。 下記のパッケージを事前に導入しておきます。 kernel-devel libxml2-devel curl-devel gcc gcc-c++ pkgconfig openssl-devel gnutls nss git
■2. 依存パッケージの導入(その2) バージョン2.8.4以降のFUSEも必要ですが、CentOS6.5の最新版は2.8.3であるため、別途最新版tarボールをダウンロードしてインストールしておきます。現時点で最新版であるバージョン2.9.3を使用しました。
■3. s3fsの導入 早速冒頭でダウンロードしたs3fsを導入します。
※export行はconfigure時、PKG_CONFIG_PATHが見つからないエラーとなるため実行しています。
■4. s3fs用パスワードファイルの設定 導入後manページもインストールされます。 manページを見るとマウント方法、コマンドオプションや認証に関する設定について記載されています。
認証にはLinuxOSが持っているパスワードファイルとは別にs3fs用のパスワードファイルが必要で、1つもしくは複数のアクセスキー(及びシークレットキー)を使用する場合のパスワードファイル記述例が記載されています。
前回作成したIAMユーザのアクセスキーとシークレットキーを使って、パスワードファイルを作成します。 ホームディレクトリもしくは/etc配下に作成可能ですが、今回は/etc配下に作成しました。
※"accessKeyIdとsecretAccessKey" は前回メモしたものを入れます。
manに従ってパーミッションを変更します。
■5. S3バケットをマウントする 今回はシステムログのローテート先をS3にするので、下記のようにマウントポイントを作成しマウントします。
s3fsマウントコマンドを発行するにあたり、fuseを使用するための共有ライブラリを登録しておきます。
そしてマウント。
※"XXXXXXXX" はバケット名。
マウント確認
■6. fstabの設定 /bin直下でs3fsコマンドが使えるようにシンボリックリンクを貼っておきます。
サーバ起動時に自動マウントされるよう/etc/fstabに下記1行を追記設定していきます。
※netdevを指定することでネットワークが開始されるまでマウントを待ってくれます。 初めnetdevを指定しないでサーバ再起動後したところ下記エラーでマウントできませんでした。READMEに書いてあるのを見逃していました。
_netdev無しの/var/log/boot.log ounting filesystems: s3fs: unable to access MOUNTPOINT /var/log/archive: Transport endpoint is not connected [FAILED]
_netdev有りの/var/log/boot.log Checking network-attached filesystems [ OK ]
次回は/etc/logrotate.d/syslogを対象とし、マウントしたS3ディレクトリにローテートする設定について書いてみたいと思います。