2
1

CloudWatch LogsのログをKinesi経由でS3に転送する

Posted at

この記事でやること

CloudWatchLogsへ出力されたログをKinesis Data Firehoseを使用してS3へ転送する仕組みを構築する。

こちらの記事の続きでやっていきます。

前提

  • CloudWatch Logsへログは転送済み
  • Kinesis Data Firehoseを使用してログをS3に転送する
  • CloudWatchLogsのサブスクリプションフィルターを設定する

実施手順

  • ログ保管用バケットを作成
  • Kinesis用IAMロールを作成する
  • Kinesis Datafirehoseを作成
  • CloudWatch Logsのサブスクリプションフィルターを作成&設定する
  • S3にログが転送されているか確認する

S3バケットの作成

以下バケットを作成しました。
設定はデフォルト設定にしています

Screenshot 2023-09-24 at 17.21.44.png

IAMロールの作成

Kinesis用ロールの作成

  • 信頼ポリシー:Kinesis(Firehose)
  • 権限ポリシー:AmazonS3FullAccess

CloudWatch Logsサブスクリプションフィルター用ロールの作成

  • 信頼ポリシー
{
  "Statement": {
    "Effect": "Allow",
    "Principal": { "Service": "logs.ap-northeast-1.amazonaws.com" },
    "Action": "sts:AssumeRole",
    "Condition": { 
         "StringLike": { 
             "aws:SourceArn": "arn:aws:logs:ap-northeast-1:123456789012:*"
         } 
     }
  }
}
  • 権限ポリシー:AmazonKinesisFirehoseFullAccess

※本来であればカスタムポリシーを作成してアタッチするべきですが今回マネージドポリシーを使用します。

Kinesis Data Firehoseを作成

以下設定で作成します

  • ソース:Direct PUT
  • 送信先:Amazon S3
  • 送信先の設定:先ほど作成したS3を選択
  • 詳細設定
    • IAMロール:先ほど作成したKinesis用ロールを選択

サブスクリプションフィルターの設定

以下設定で作成します。

  • 送信先アカウント:現在のアカウント
  • 配信ストリーム:先ほど作成したFirehose
  • IAMロール:先ほど作成したサブスクリプションフィルター用のIAMロール
    その他設定はデフォルト

CloudWatch Logsにテストイベントを送信したいと思います。

$ aws logs put-log-events --log-group-name [log-group-name] --log-stream-name [log-stream-name] --log-events timestamp=$(node -e 'console.log(Date.now())'),message="test log message from AWS CLI"

Screenshot 2023-09-24 at 18.35.04.png

オブジェクトが登録されているのでS3にログ転送されていることが確認できました。

今日はここまで。ありがとうございました!!

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