EC2にポリシーをつけて、fluentdでログを飛ばす
概要
EC2のログをfluentdでCloudWatchに投げる - juve534のブログ
前回の実装時に、IAMでユーザを作って、設定ファイルに記載しました。
ただ、設定ファイルにユーザの情報が載ってしまうので、セキュリティが気になると思いました。
そこでロールを作成し、EC2に付与します。
# 対応 IAMでロールを作成します。 今回はCloudWatchにフルアクセスできるロールを新規に作成しました。
これをEC2にアタッチします。 アクション>インスタンスの設定 からIAMロールの割当を行ってください。
これで準備はOKです。 あとは前回の設定ファイルを修正します。
変更点は設定ファイルからキーとシークレットキーの削除になります。
# アクセスログ <source> @type tail format apache path /var/log/httpd/access_log pos_file /var/log/td-agent/httpd.access.log.pos tag td.apache.access </source> # logsへログを転送 <match td.apache.**> @type cloudwatch_logs region ap-northeast-1 log_group_name apache auto_create_stream true use_tag_as_stream true </match>
設定を変更したら、fluentdを再起動して、Apacheにアクセスしてみました。
systemctl restart td-agent
curl http://127.0.0.1
CloudWatchをみると正常にログが吐き出されていることが確認できました。
まとめ
ユーザを作成しなくても、EC2にロールを付与することで、CloudWatchにログを投げることができました。