Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
71
Help us understand the problem. What is going on with this article?
@shicky1121

EC2インスタンスにS3をマウントする

More than 3 years have passed since last update.

機械学習に使うデータをS3にまとめて保存しておき、インスタンスのストレージを使わない様にしたかったので、S3をマウントして使う事にしました。
安定性を考えてs3fsを使っていますが、goofysの方が早いらしいです。

条件

  • Ubuntu 16.04
  • s3fs-fuseを利用(goofysは安定性が微妙らしいため)
  • IAM Role を利用(Key情報をEC2インスタンス内に保持する必要がないため) ※Roleを使用すればEC2 インスタンス起動時に IAM Role 選択するのみ

手順

1.S3 Bucket の準備
2.IAMロールの準備
3.s3fs-fuse のインストールと設定
4.マウントの自動化

※ 1と2はAWSコンソール画面での操作
※ 3と4はインスタンスにSSH接続してから操作

1.S3 bucketの準備

  • バケット名:s3-bucket1-gpu
  • リージョン:米国東部(バージニア北部)※マウントしたいEC2と同じリージョンにすること

※ひとまず上記以外の設定はデフォルトにしておく

2. IAMロールの準備

① 信頼関係
・ロールを利用するサービス:EC2
・ユースケースの選択:EC2

② アクセス制限
・ポリシー名:AmazonS3FullAccessを選択

③確認
・ロール名:access-s3-role
・ロールの説明:access to S3 FullAccess

そして作成したロールをインスタンスに割り当てる

IAMロール1.png

S3をマウントしたいインスタンスが選択されていることを確認して作成したIAMロール「access-s3-role」を選択して適用する

IAMロール2.png

3.s3fs-fuse のインストール

まずgitなど必要なものをインストールする

$ sudo apt-get install automake autotools-dev g++ git libcurl4-gnutls-dev libfuse-dev libssl-dev libxml2-dev make pkg-config

そしてs3fsをgitからインストールする

$ git clone https://github.com/s3fs-fuse/s3fs-fuse.git

もろもろの設定(これでs3fsが /usr/local/bin 下におかれる)

$ cd s3fs-fuse
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

マウントポイントの作成
※root権限のディレクトリとして作成されるがマウント時にownerを設定するのでOK

$ sudo mkdir /mnt/s3

マウント時のownerのuid, gidを確認する

$ id ubuntu
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),109(netdev),110(lxd)

マウントする

$ sudo s3fs s3-bucket1-gpu /mnt/s3 -o rw,allow_other,uid=1000,gid=1000,default_acl=public-read,iam_role=access-s3-role
# allow_other: root 以外(マウントしたユーザー以外)も利用可能とする

これでS3のbucketをインスタンスにマウントできた。しかし再起動するとマウントは解除されてしまうので、再起動しても自動マウントされるように設定しておく。

4.マウントの自動化

インスタンスを再起動しても自動でマウントされるように設定を行う。
/etc/rc.local にマウントコマンドを書き込んでおけば起動時に自動で実行してくれる。

$ sudo vi /etc/rc.local

以下の内容をrc.localに追記する

# s3fs mount
# umount /mnt/s3
s3fs s3-bucket1-gpu /mnt/s3 -o rw,allow_other,uid=1000,gid=1000,default_acl=public-read,iam_role=access-s3-role

これでインスタンスを再起動しても自動でマウントされる。

71
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
shicky1121
数学をかじっていたWeb系のエンジニアです。時々思い出した様に更新します。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
71
Help us understand the problem. What is going on with this article?