【AWS ECS】コンテナログをS3に直接出力手順

■ 目次


 

1. はじめに

この記事を投稿する10日前にいつも通り朝活として、YouTube のサバワチャンネルで動画を見ていたら、『コンテナログを S3 に直接出力!』というパワーワードを知ってしまって・・・これはやらなきゃ!!!っという事で実際にやって書きました。
CloudWatch のログに書き込みを行うと0.76USD/GB掛かって辛いですよね・・・

 

2. 【IAM ロール】編

  1. IAMロールのコンソールにアクセスして【ecsTaskExecutionRole】を検索して選択
      • 別のタスクロールの場合は、そちらを指定
  1. 【ecsTaskExecutionRole】のロールにて、【インラインポリシー】を選択して下記コードを追加
 
内容としては、「S3に書き込み」です。
 
実際に追加された際の画面

 

3. 【ECS タスク定義】編

  1. ECS のコンソールページにアクセス
  1. 【タスク定義】を選択
  1. 既存のタスク定義を選択
  1. 【新しいリビジョンの作成】を選択
 

3.1. 【ログルーターの統合】 にて

ログルーターの統合にて【FireLens の統合を有効にする】にチェックを入れて、編集せずに【適用】を選択

3.2. 【コンテナの定義】 にて

項目
LogS3-lxcMyサービスコンテナ側
log_routerAWS for Fluent Bit コンテナ側
 

3.3. 【LogS3-lxc】 コンテナ側

『ストレージとログ』の所にて下記の用に変更を実施
  1. ログドライバー :【awslogs】から【awsfirelens】切り替え
  1. ログオプション : 下記テーブルを参考
      • region : ECS サービスを動かすリージョンを指定
      • bucket : 自分で作成したバケット名を記述
      • total_file_size : 1M だと動かなった模様
KEYVALUE
Names3
regionap-northeast-1
buckettabiya-logs
total_file_size250M
 

3.4. 【log_router】 コンテナ側

『ストレージとログ』の所にて下記の用に変更を実施
  1. ログドライバー :【awsfirelens】から【awslogs】切り替え
  1. ログオプション : 下記テーブルを参考
KEYVALUE
awslogs-groupfirelens-container
awslogs-regionap-northeast-1
awslogs-stream-prefixfirelens
awslogs-create-grouptrue

3.5. サンプル json

  • 上の群 : log_router コンテナ
  • 下の群 : ogS3-lxc コンテナ

 

4. 実際の画面

S3の該当バケットにアクセスすると下記の階層で表示されます。
基本的には10分に一度バケットに書き込まれる

 

5. 参考記事