1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Eventbridge Schedulerによる Cloudwatch LogsのS3への出力について考えてみる

Posted at

初めに結論

やってみると動くけど、実運用ではそのまま使うのは難しい。

Eventbridge Scheduler

Eventbridge の機能でAWSのAPIをターゲットにしてスケジュール実行ができる。

CLoudwatch logs

AWSのサービスやEC2などのログを集約できるサービス

S3

言わずとれしれたオブジェクトストレージ、なんでも保存できる

Cloudwatch logsをS3に保存したい

AWS上の種々のログはCloudwatch Logsに簡単に出力できる。なのでどんどん出力されたログは蓄積される。容量は制限がないので、蓄積したままでもよいが、Cloudwatch Logsに大量のログをずっとおいておくと費用がかかる。なので、蓄積したいログはなるべく安いところに移動して削除したい。

ということで、CloudwatchLogsからS3に移動して古いログはライフサイクルルールで安いストレージクラスに移動する、というのが常道。

Cloudwatch logsからS3への移動方法

実運用を考えると一回ではなく定期的に実行する必要があるが、いくつか方法がとれる

  • LambdaでCloudwatch LogsのAPI(Create Export Task)を呼ぶ処理をつくってEventBridge Schedulerとかで定期実行
  • Cloudwatch Logs Subscription FilterとKinesisFirehoseで随時転送
  • Eventbridge SchedulerからCloudwatch LogsのAPI(Create Export Task)を直実行

Lambdaは何でもかけるがコードを書かなくてはいけない。
Subscription FileterとKinesis Firehoseはコード書くのは不要だが別のサービスの設定を考えなくてはいけない。

それでは"Eventbridge SchedulerからCloudwatch LogsのAPI(Create Export Task)を直実行"だとどうなるだろうか。

Eventbridge Schedulerの設定画面をみてみる

Eventbridge SchedulerのCreate Scheduleから

image.png

スケジュール名は適当にして、スケジュールを考える、定期的に、と考えるととりあえず毎日0時に一回実行、と考えてみる

image.png

ターゲットにLogsを検索し
image.png

CreateExportTaskを選ぶ
image.png

さて、以下の画面になってAPIに与えるパラメータが必要
image.png

Desitinationは宛先のS3、LogGroupNameは対象のLogGroupName、ここまではよい
"From"と"to"がある。1日一回毎日実行、とすると、この枠に対象の日の時間枠を設定してあげないといけないはず

CreateExportTaskのリファレンスを確認する
https://docs.aws.amazon.com/cli/latest/reference/logs/create-export-task.html

image.png

どうもFrom,toは必須であり、

image.png

"1970 00:00:00"からのミリセカンドの経過時間でしか指定できない。。。

ということは、毎日異なる時間枠で実行するためには毎日分のスケジュールを個別につくって全部固定値を入れる必要がある、ということなので、やろうとすると実現性がなさそうである。
(CDKかなにかである程度の先まで毎日分のスケジュールをFromとto固定値で作成しておく?とかになってしまう)

ということでこの方法での定期Exportは実運用ではつかえなそうなので、"Cloudwatch Logs Subscription FilterとKinesisFirehoseで随時転送"が適していると考えている。

考察と期待

 
"やってみて機能としてできる"、と"実運用でも使える"はギャップがあるので、運用考えて設計しないといけないな、と思いました。

AWSさん、ぜひEventbridgeからの実行時に実行時間などから可変のパラメータを渡せるように(24時間前から実行時までとか)機能拡張をお願いします

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?