EC2にS3をマウントする

※追記 以下の記事が良くまとまっていてわかりやすい

qiita.com

 

以下は、EC2の構築初期に試したもので、不要な作業も混じっている

---------------------------------------

<前準備>

◆稼働中のEC2にIAMロールを割り当てる

既存のAmazon EC2インスタンスにIAM Roleがアタッチできるようになりました | Amazon Web Services ブログ

IAMロールなしで起動された既存のEC2インスタンスにIAMロールをアタッチ」を参照

 

qiita.com

blog.proudit.jp

しかし、その前に、aws-cliのバージョンを最新にあげる必要があります。

$aws --version
aws-cli/1.11.76 Python/2.7.12 Linux/4.9.20-10.30.amzn1.x86_64 botocore/1.5.39

 

アップグレードは以下のコマンド。

sudo pip install -U awscli

と書いてあったが、

sudo: pip: command not found

となる。

パスが通ってないぽいので、結局、

sudo /usr/local/bin/pip install -U awscli

でできた。

 

※1番目のブログで、
$aws ec2 associate-iam-instance-profile --instance-id インスタンスID --iam-instance-profile Name=インスタンスプロファイル名

と書いているが少しわかりにくい。以下の方がわかりやすい。

$aws ec2 associate-iam-instance-profile --instance-id インスタンスID --iam-instance-profile Name=ロール名

 

<作業本番>

1.S3バケットの準備

ここは簡単なので割愛

 

2.goofysのインストール

goofysインストール
sudo yum update -y
sudo yum install golang fuse -y
export GOPATH=/home/XXXX/go (←自分の場合は、/home/photoXXXX/go ここにインストされる) 
go get github.com/kahing/goofys
go install github.com/kahing/goofys

 

3.S3マウント

$ mkdir /var/www/html/XXXXX/mount    ←マウントさせるディレクト

$ /home/photoXXXX/go/bin/goofys S3バケット名 /var/www/html/XXXXX/mount

 

4.自動マウント設定

上記の2番目のブログを参照

 

※rootのアクセスキーを変更した時

コマンドで

sudo aws configure

をやり直す。

 名前付きのプロファイルを作成する場合は、

aws configure --profile user2

http://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-chap-getting-started.html

 

●アンマウントする時

fusermount -u [マウントしたディレクトリ]

 

●マウントするバケットに所有者とアクセス権を指定する場合は以下

sudo su photoXXXX
export GOPATH=$HOME/go
mkdir /var/www/html/photoxxx/mount
$GOPATH/bin/goofys --region ap-northeast-1 --uid=48 --gid=48 --dir-mode=0666 バケット名 /var/www/html/マウントする場所
マウント位置確認
df -h