MyController

WEB業界素人の僕がまた見返しそうなことのメモです。

AWS S3のアクセスログをEC2にマウントしてログをGrepして出力

基本調べながら出来るけど若干の注意点と備忘録を。
ちょっとメモ過ぎてまとまってないので暇な時整理したいかも。

やりたいこと
EC2とS3を連携してログを吐き出したい。

理由
一応AWS上でELBのアクセスログを有効にしていればログはAWS上で見れる。
ただファイルが膨大にあるのと全てGUIから一括ダウンロードする方法が分からなかったので。

やり方
基本ここでいける↓

hivecolor.com

注意
AWSでユーザを追加して権限付与が必要。
下記そのままでおk

curecode.jp

 

ざっくりいうと。。
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)

https://joppot.info/2014/06/14/1621


マウントする


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コマンド無いなら下記

# yum install -y fuse fuse-sshfs

アンマウントしたら再度下記

s3fs s3 /mnt/s3 -o allow_other -o allow_other,default_acl=public-read