AWSのCloudTrailで思ったよりコストがかかったため調べてみた

こんにちは、テクノロジー本部の川上です。
AWSで稼働するシステムを運用するにあたり、CloudTrailを導入したところ、想定外に大きい請求が発生しました。
この辺、実際に運用してみないとわからない箇所でもあったため、ナレッジとして書き記します。

調査

まずは Management Console のBilling Dashboard の Billsで、ざっくり何が原因か確認してみます。

AWS CloudTrail APN1-PaidEventsRecorded : 43,008,255 Events

はい、とても人の操作で生成されるログレコード数じゃないですね。
原因を突き止めるために、とある期間だけ切り取ってCloudTrailのログをeventNameでグルーピングして集計してみました。

eventName count
DescribeAlarms 3
GetBucketReplication 8974
DescribeLogGroups 4
GetSampledRequests 20
GetWebACL 2
GetCommit 41
GetRule 4
DescribeInstances 15
CreateLogStream 1
PutEvaluations 1
GetBucketAcl 1

はい、「GetBucketReplication」が圧倒的に多いですね。
調べてみると、このイベントはS3のバケットにクロスリージョンレプリケーションを設定している場合、レプリケーション時に記録されるログのようです。
稼働するシステムにDR要件があり、ファイルをDR先にレプリケーションする目的で設定していたのですが、更新の多いバケットであったため、大量のログが出力されました。
結果として、CloudTrailの請求額が大きくなったようです。

今回のケースでは、CloudTrailの導入目的として、異常時の調査のために取得していたものであったため、参照系イベントを抑制する設定をすることで対処しました。

CloudTrailは低コストのイメージが強いと思いますが、クロスリージョンレプリケーションをハードに利用している場合は注意しましょう。

追記

CloudTrailの設定として、イベント毎に出力有無をできるようにならないかなあ。
※本記事執筆時点では「参照系」「更新系」のみのざっくりとしたログ出力定義しかできませんでした。