LoginSignup
2
2

More than 5 years have passed since last update.

CloudTrailログをElasticsearch Serviceへ投入する

Posted at

はじめに

CloudTrail→Elasticsearch Serviceへ投入する方法を調べてみると2つあるようなので、メモとしてまとめてみる。

1. CloudTrail→S3→Lambda→Elasticsearch Service

S3にgz形式で保存されてるファイルをLambdaで処理してElasticsearch Serviceに登録するパターン。
検索すればサンプルコードが見つかるが、Lambdaファンクションを1から作成する必要がある。

Lambda(NodeJS)ファンクション作成の参考

S3からElasticsearch Serviceに登録するLambdaのサンプルがawslabsのGithubで公開されている。
https://github.com/awslabs/amazon-elasticsearch-lambda-samples/blob/master/src/s3_lambda_es.js
上記をベースにして、gzファイルの解凍部分を下記サイトのコードを参考にすればOK。
Lambdaを使って、CloudTrailログをCloudSearchに入れて検索する

Lambdaの実行ロール設定

Elasticsearchのアクセスポリシーで全開放にしているなら特に気にしなくてもいいが、IAMやIPで制限している場合はLambda→Elasticsearch APIでアクセスできるように、Lambdaの実行ロールにes:*やes:ESHttpPostなどの許可を与えてあげる必要がある。
※未検証だが、Elasticsearch ServiceのアクセスポリシーにLambdaの実行ロールを追加でもいけるはず?

アクセスポリシーの設定についてやActionに設定できる値などは下記参照。
Creating and Configuring Amazon ES Domains

2. CloudTrail→CloudWatch Logs→Lambda→Elasticsearch Service

CloudTrailからCloudWatch Logsへ登録させ、それをLambdaで処理してElasticsearch Serviceに登録するパターン。
下記サイトに手順があるが、1.と異なり画面からポチポチやって設定することができる。
【運用】CloudTrailで取得した監査ログをElasticSearch Serviceで活用する【簡単設定】
簡単ですごく便利!!

これも結局はLambdaを使うので、作成されたコードやロール設定を見てみるといいと思う。
※こちらはElasticsearchへの登録にBulk APIを利用している

考察

画面から簡単に設定できるので、2.の構成で利用するのがとても簡単。
しかし、料金面でみると2.はS3とCloudWatch Logsの両方に保存してるので、その分お金かかる感じですね。

余談

次のLambdaのサポート言語は、Go言語 or Rubyのどっちがいい?というアンケートがあるらしいです。
私はRubyがいいなー。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2