こんにちは、テクノロジー本部の川上です。
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の設定として、イベント毎に出力有無をできるようにならないかなあ。
※本記事執筆時点では「参照系」「更新系」のみのざっくりとしたログ出力定義しかできませんでした。