【AWS】ECSのログをKinesis(Amazon Data Firehose)を利用してS3へ保存する

こんにちは、連休はヴィンランド・サガを読み返そうかなと思っています

 

さて、今回は ECSのログをkinesisを利用してS3へ長期保存する方法を書いていきます

※ECS周りは設定は記載しません

 

▼構成と流れ

ECS → CloudWatch Logs → サブスクリプションフィルター → Kinesis(Amazon Data Firehose) → S3 バケット

 

▼手順

1. ログ保存用S3バケットの作成

Amazon S3 > バケット > バケットを作成 を押下

→バケット名は全世界で被らないようにする必要があります

 

2. Kinesis(Amazon Data Firehose) の作成

Amazon Data Firehose > Firehose ストリーム > Firehose ストリームを作成 を押下

ソース:Direct Put

送信先:Amazon S3

Firehose ストリーム名:なんでもOK

レコードを変換および転換:すべてチェックなし

S3 バケット:1で作成したS3バケット

改行の区切り文字:有効ではありません

動的パーティショニング:有効ではありません

S3 バケットプレフィックス:なんでもOK

S3 バケットと S3 エラー出力プレフィックスタイムゾーン:Asia/Tokyo

バッファサイズ:5MiB (デフォルト)

バッファ間隔:300 (デフォルト)

データレコードの圧縮:有効ではありません

Amazon CloudWatch エラーのログ記録:有効

サービスアクセス:IAM ロールを作成または更新

 

3. CloudWatch Logs 用のIAMロールとポリシーを作成

3.1. IAMロールの作成

・カスタム信頼ポリシーを下記で作成する

{
  "Statement": {
    "Effect": "Allow",
    "Principal": { "Service": "logs.amazonaws.com" },
    "Action": "sts:AssumeRole",
    "Condition": { 
         "StringLike": { 
             "aws:SourceArn": "arn:aws:logs:${RESION}:${AWSアカウントID}:*"
         } 
     }
  }
}

 

・何も選択せずに次へを押下する

 

・下記でポリシーを作成する

ロール名:なんでもOK

説明:空白

信頼ポリシー:そのままでOK

許可ポリシー:一旦何も付与しない

 

3.2. IAMポリシーの作成

IAM > ロール > 作成したIAMロール > インラインポリシーの作成

 

・ポリシーエディタを選択し、下記で作成する

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "firehose:ListDeliveryStreams",
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole",
                "firehose:*"
            ],
            "Resource": [
                "arn:aws:iam::${AWSアカウントID}:先ほど作成したIAMロール名",
                "arn:aws:firehose:${RESION}:${AWSアカウントID}:先ほど作成したKinesis Data Firehose の配信ストリーム名"
            ]
        }
    ]
}

 

・下記で作成する

ポリシー名:なんでもOK

説明:空白

このポリシーで定義されている許可:Firehose と IAM

 

4. サブスクリプションフィルターの作成

CloudWatch > ロググループ > ECSのロググループ > サブスクリプションフィルター > 作成 > Amazon Data Firehose サブスクリプションフィルターを作成

 

・下記で作成する

送信先アカウント:現在のアカウント

Amazon Data Firehose ストリーム:2で作成したFirehose ストリーム

既存のロールを選択:3で作成したIAMロール

サブスクリプションフィルター名:なんでもOK

ログの形式:その他

 

・ストリーミングを作成

 

5. ログの確認

S3バケットの上にzip圧縮されたログが出力されたことを確認する

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA