EC2にS3をマウントする

・はじめに

EC2で環境を用意したはいいが、インスタンスのストレージはあまり使いたくない…(無料期間中はいいけど)
「じゃあ、せっかくだしS3を使ってみるか」っと思いたった今日この頃です。
やってみた感触やユーザーガイドを読んでわかったことを記録していきました。

・事前学習

基本的なことをおさらいしました。

マウント

コンピューターに接続した周辺機器や外部記憶装置等をOSに認識させ、利用可能な状態にすることを指します。
OSがファイルシステムを介することで、そう言ったストレージデバイス上のファイルやディレクトリを利用できるようになります。

パーティション

ストレージ内の区切られた領域のこと。パーティションを分割することでシステムとデータを分けて管理できるなどの利点があります。
バックアップ対象の削減やシステム更新時の危険性の低下などが挙げられます。

ファイルシステム

バイナリシーケンスであるデータを、ファイル単位のオブジェクトとしてユーザーに提供するシステムです。
今回はFUSE(Filesystem in Userspace)を利用することで、仮想的にファイルシステムを構築しているので後ほどインストールします。

goofys

S3のバケットをLinuxのファイルシステムにマウントするソフトウェアです。
マウントするソフトウェアは他にもありますが、現状、有名なs3fsよりもパフォーマンスがいいとの評判なので深く考えずこちらを選択しました。
goofysのREADMEに、ベンチマークが載っているそうです。

・実行したこと

1. S3でバケット作成

名前決めた以外、特に何もしてません。AWSにログイン後、「S3 Management Console」に移動すると、すぐに「Create bucket」があります。
最終的に「v-s3storage」という名前でS3バケットを作りました。

2. IAMでロール作成

次に、AWSで「IAM Management Console」を開きます。(自分のアイコンの「My Security Credentials」から行けます)
サイドバーにある「Roles」を選択後、「Create role」で作成画面へ移動します。
最初の[Choose a use case]画面では、「EC2」を選択し、「Next:Permissions」をクリックし次へ遷移します。
次の画面の[Attach permissions policies]選択では、「s3」で検索後、「AmazonS3FullAccess」を選択します。
※[Set permissions boundary]選択は特にしなくて平気です。あとはタグや名前を決めて完了です。

3. EC2でインスタンス作成

2で作成したロールを適用し、「t2.micro」作成しました。
インスタンスの作成時の設定は、ロールの適用以外は特にいじってないです。
短くて簡単だったので、手順は省略させて頂きます。

4. EC2コンソールで仮想インスタンスの起動

キーペアを聞かれるので、インスタンス作成時に作ったものを選択し、パスワードを発行します。

5. 仮想インスタンスに接続

今回はSSHクライアントで接続するために、「PuTTY」なるツールを利用するようなのでインストールしました。
詳細は公式ドキュメント「PuTTY を使用した接続」を参照してください。
また、「WinSCP」が入っていない人はインストールをおすすめします。
先ほどの「PuTTY を使用した接続」の設定でセッションを保存していると、「WinSCP」にインポートして取り込むことができます。

6. 諸々のインストール

仮想インスタンスに接続できたので、必要なものをインストールしました。
■Git
■golang
■goofys
以下は実行するコマンドになります
$ sudo yum -y install golang fuse git
$ export GOPATH=$HOME/go
$ go get github.com/kahing/goofys
$ go install github.com/kahing/goofys

7. マウントするためのディレクトリを作成

以下は実行するコマンドになります
$ cd ~
$ sudo mkdir ./mount/S3
$ sudo chown [username]:[username] /mount/S3
※[username]は、「Amazon Linux 2 または Amazon Linux AMI の場合は、ユーザー名は ec2-userです。」と公式ホームページに掲載されております。

8. マウントコマンド実行します

以下は実行するコマンドになります
$ cd ~
$ ./go/bin/goofys v-s3storage ~/mount/S3
ここで先ほど「S3」で作ったバケット君をマウントします。

9. 確認

以下は実行するコマンドになります
$ df -h
上記コマンドでディスクの使用状況を確認できます。
「S3」で作ったv-s3storageバケットがあります。
あとはファイル作成したり、S3コンソールの方でアップロードしたりして色々試してみてください。

・おわりに

公式のドキュメントやネットの情報に助けられ、なんとか実装できました。というのが正直なところです。
必要なソフトや認証周りの設定などわかっていないと、戸惑う部分もありますが、操作自体は簡単なので利用していけば絶対役立つと感じました。
興味ある人はぜひ試してみてください!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です