1
1

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

前回CloudWatch Logsに蓄積させたログをS3に手動でエクスポートする手順を確認しました。

今回はこの続きで、EventBridgeを使用して自動でS3にエクスポートする手順をメモって行きたいと思います。
EventBridgeを使うことで、Linuxで言うcron、Windowsで言うTask Scheduler的なことがAWSで出来るので良い感じですね。

環境イメージ

以下のような形となります。
EC2からCloudWatch AgentでCloudWatch Logsにログを自動アップロード。アップロードされたものEventBridge Schedulerを使って1分間隔でS3にエクスポートしていきたいと思います。
島田様02-ページ4.drawio.png

構築

IAM Role作成

EventBridge SchedulerにアタッチするためのIAM Roleを作成していきます。
IAM Role作成画面でカスタム信頼ポリシーを選択し、ポリシーに以下の内容を書いていきます。
screencapture-us-east-1-console-aws-amazon-iam-home-2024-06-19-08_27_50 (1).png

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "scheduler.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

※scheduler.amazonaws.com(=EventBridge Scheduler)が今作っているIAM Roleを使用して定義されたアクション(IAMロールにアタッチされたアクセスポリシー。今回は後からCloudWatchLogsFullAccessをアタッチするのでそれのこと)を実行することが出来るようになる、という意味っぽいです。
許可を追加の画面でCloudWatchLogsFullAccessをアタッチします。
Untitled (45).png
Roleの名前はEventBridge-add-task-to-CloudWatchLogsとしました。
image.png

EventBridge Schedulerの作成

EventBridge Schedulerの画面からスケジュールを作成を押下します。
Untitled (46).png
Schedulerの名前はCloudWatchLogs-S3Exportとしました。
スケジュールパターンの頻度は定期的なスケジュールを選択。種類はrateベースとし、1 minutesとし1分間隔でスケジューリングしました。
screencapture-ap-northeast-1-console-aws-amazon-scheduler-home-2024-06-20-07_02_00.png
ターゲットを選択します。CloudWatch Logsを選択します。
screencapture-ap-northeast-1-console-aws-amazon-scheduler-home-2024-06-19-07_56_39 (2).png
その後CreateExportTaskを選択します。
Untitled (48).png
タスクの詳細を記入します。今回は以下としました。
LogGroupNameはCloudWatchLogsにあるロググループの名前です。
FromとToはエポック時間ミリ秒単位で開始時間と終了時間を記載します。AIに「エポック時間で2024年1月1日から12月31日までにしてください」みたいなことを聞いて出力してきたのをとりあえず入れています。
DestinationはS3バケットの名前を。Prefixはバケットの中のディレクトリを示しています。<aws.scheduler.scheduled-time>はタスク実行時間になり、実行ごとにフォルダを作るようにしています。
image.png

{
  "LogGroupName": "ApplicationEventLog",
  "From": 1704067200000,
  "To": 1735689599000,
  "Destination": "wineventlog-cloudwatchlogs",
  "DestinationPrefix": "ApplicationEventLog/<aws.scheduler.scheduled-time>"
}
参考 CloudWatch Logsのロググループ

image.png

S3バケットと内部のディレクトリ(プレフィックス)

image.png

アクセス許可に作成したIAM Roleをアタッチします。この後の画面で最終確認が表示されますので確認します。
screencapture-ap-northeast-1-console-aws-amazon-scheduler-home-2024-06-20-07_12_42.png
作成されたことを確認します。
image.png

S3に自動エクスポートされるか確認する

指定したS3バケット/プレフィックスに自動でエクスポートされているかを確認します。
image.png
image.png

CloudWatch LogsからS3にエクスポートしたことで、Logsにあるログを削除したいところです。
これに関しては今後・・・

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