What's this~これは何~
こちらの記事 で、S3 API callを行う際に、IAMユーザーを作成し、Access key,Secret keyを設定ファイルにベタ書きしていたのですが、やはりこれはセキュアとは言えないなと感じておりました。
今回は、IAMロールを使ってS3 API callを行いました。
前回との相違点
IAM ロールのポリシー
GitHubに推奨のポリシーが置いてありました。
my-s3bucketはバケットの名前を記入。
作成後はEC2にロールをアタッチします。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::my-s3bucket"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject"
],
"Resource": "arn:aws:s3:::my-s3bucket/*"
}
]
}
設定ファイルの編集
今回、
aws_key_id
aws_sec_key
はコメントアウトしています。
vi /etc/td-agent/td-agent.conf
/match
で、該当の行を消去
最下行に以下追記
<source>
@type tail
path /var/log/httpd/access_log
tag td.messages.access
pos_file /var/log/td-agent/messages.pos
format syslog
</source>
<match td.messages.access>
@type s3
#aws_key_id
#aws_sec_key
s3_bucket バケットの名前
s3_region ap-northeast-1(利用リージョンに合わせて、任意)
time_slice_format %Y%m%d%H%M
</match>
<buffer>
@type file
path /var/log/td-agent/s3
timekey 3600 # 1 hour
timekey_wait 10m
chunk_limit_size 256m
</buffer>
参考
https://github.com/fluent/fluent-plugin-s3/blob/master/docs/howto.md#iam-policy
https://qiita.com/dz_/items/224607c84112ccafa2d6
参考にさせていただきました。ありがとうございます。