AWS S3のアクセスログをEC2にマウントしてログをGrepして出力
基本調べながら出来るけど若干の注意点と備忘録を。
ちょっとメモ過ぎてまとまってないので暇な時整理したいかも。
やりたいこと
EC2とS3を連携してログを吐き出したい。
理由
一応AWS上でELBのアクセスログを有効にしていればログはAWS上で見れる。
ただファイルが膨大にあるのと全てGUIから一括ダウンロードする方法が分からなかったので。
やり方
基本ここでいける↓
注意
AWSでユーザを追加して権限付与が必要。
下記そのままでおk
ざっくりいうと。。
1.EC2のインスタンスをAmazon Linuxで新規作成。
※ほんとは別に新規作成しなくてもいいんだけど今本稼働しているサーバにアマゾンのコマンドインストールするのもいろいろ面倒とかトラブルも怖いので今回こんなことをしてる。
2.サーバにログイン
ユーザ名:ec2-user
パスなし
pemファイル選択してsshログイン
rootになる
$ sudo su -
mkdirで/mnt/s3とか適当な名前でディレクトリを作っておく。
ここにS3がマウントされるよ。
3.AmazonのコマンドでS3をEC2にマウント。
とおもったら何故か結局インストールする羽目に。
なぜインストールされてないのか。。調べるのも面倒なのでさっさとインストールする。
しかもログ見たらさっさとインスタンス自体も削除するのでガシガシインストールする。
ライブラリのインストール
yum -y install make automake gcc libstdc++-devel gcc-c++ fuse fuse-devel curl-devel curl-devel libxml2-devel openssl-devel mailcap
このままやればよし。
# cd /usr/local/src
# wget https://s3fs.googlecode.com/files/s3fs-1.74.tar.gz
# tar xvzf s3fs-1.74.tar.gz
# cd /usr/local/src/s3fs-1.74/
# ./configure –prefix=/usr
# make
# make install
アクセスキー準備
# echo “(AccessKey):(SecretAccessKey)” > /etc/passwd-s3fs
# chmod 640 /etc/passwd-s3fs
参考 awsのs3を操作する為のaccess keyとsecret keyを取得する(IAM)
マウントする
s3fs mybucket1 /mnt/s3
上手くいかないなら下記。どっちだったか忘れた。
# s3fs s3 /mnt/s3-bucket -o allow_other -o allow_other,default_acl=public-read
マウントされてるか確認
df -h
なぜかマウントに失敗するとおもうのでアンマウント
# fusermount -u /mnt/s3-bucket
fusermountコマンド無いなら下記
アンマウントしたら再度下記
s3fs s3 /mnt/s3 -o allow_other -o allow_other,default_acl=public-read