【EC2】定期的にCloudWatch ログストリームの削除手順

Tags
Amazon CloudWatch
Amazon EC2
AWS
AWS IAM
IAM Roles
Release Date
2020/6/7
ID
21

■ 目次


 

1. 事前準備


 

2. EC2インスタンスに対してロールアタッチ

【EC2】 -> 【ステップ3:インスタンスの詳細の設定】 -> 【IAMロール】 にて作成したロールを選択

 

3. 環境構築編

ロールをアタッチ済みのインスタンスにSSHしている前提

3.1. パッケージ更新

$ sudo yum -y update
$ sudo reboot
Shell
 

3.2. AWS CLI バージョン 2 導入手順

 

3.3. YAML用のプロファイル作成

$ aws configure --profile output_yaml

AWS Access Key ID [None]:                   <- Enter
AWS Secret Access Key [None]:               <- Enter
Default region name [None]: ap-northeast-1  <- リージョン を入力
Default output format [None]: yaml          <- json/yaml を入力
Shell
 

3.4. 作業ディレクトリとファイルの準備

  • ディレクトリを作成
    • work
  • ファイルを作成
    • delete-log-test.sh
      • 実行ファイル
    • log_group_name.tmp
      • ロググループ
    • logs_stream_name.tmp
      • ログストリーム
$ mkdir /home/ec2-user/work
$ cd /home/ec2-user/work
$ touch delete-log-test.sh {log_group_name,logs_stream_name}.tmp
Shell
 

3.5. 実行ファイルの準備

好きなエディターで delete-log-test.sh を編集
#!/bin/bashLOG_GROUP_NAME=log_group_name.tmp
LOG_STREAM_NAME=logs_stream_name.tmp

# -------------------------------------------------------------------
while read line
do
  aws logs describe-log-streams --profile output_yaml --log-group-name "$line" | \
    grep "logStreamName:" | \
    awk '{print substr($0, 18)}' > ${LOG_STREAM_NAME}

  LOG_GROUP_LIST="$line"

  while read line
  do
    echo "start : `date '+%y/%m/%d %H:%M:%S'`"
    echo "$line"
    aws logs delete-log-stream --profile output_yaml \
          --log-group-name ${LOG_GROUP_LIST} \
          --log-stream-name $line
  done < ${LOG_STREAM_NAME}
done < ${LOG_GROUP_NAME}

cp /dev/null logs_stream_name.tmp
# -------------------------------------------------------------------
Shell
 

3.6. 削除希望のロググループを記述

好きなエディターで log_group_name.tmp にロググループを追記
注意点として最終行と改行を入れる
例↓
/aws/lambda/test
/aws/lambda/db-test
/aws/lambda/db-test1
<改行>
Plain Text
 

3.7. cron 設定

EC2 のデフォルトTimeZoneは UTC なので注意
指定対象指定範囲
0〜59
0〜23
1〜31
1〜12 または jan〜dec
曜日0〜7 または sun〜sat
cron を編集する為の専用コマンド
$ crontab -e
Shell
 
今回の起動条件は、毎日(JST)20:30に実行をしたい為、(UTC)11:30と登録
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:"
30 11 * * * cd /home/ec2-user/work/; sh delete-log-test.sh
Shell
 

3.8. cron 実行時の確認コマンド

起動ログ等を確認する場合
$ sudo tail -F /var/log/cron
Shell
 
実行ログを確認する場合
$ tail -F /var/spool/mail/ec2-user
Shell