EC2にポリシーをつけて、fluentdでログを飛ばす

概要

EC2のログをfluentdでCloudWatchに投げる - juve534のブログ

前回の実装時に、IAMでユーザを作って、設定ファイルに記載しました。 ただ、設定ファイルにユーザの情報が載ってしまうので、セキュリティが気になると思いました。
そこでロールを作成し、EC2に付与します。

# 対応 IAMでロールを作成します。 今回はCloudWatchにフルアクセスできるロールを新規に作成しました。

ロール作成画面
IAMロール作成

これを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にログを投げることができました。