【EC2】定期的にCloudWatch ログストリームの削除手順
Tags
Amazon CloudWatch
Amazon EC2
AWS
AWS IAM
IAM Roles
Release Date
2020/6/7
ID
21
■ 目次
■ 目次1. 事前準備2. EC2インスタンスに対してロールアタッチ3. 環境構築編3.1. パッケージ更新3.2. AWS CLI バージョン 2 導入手順3.3. YAML用のプロファイル作成3.4. 作業ディレクトリとファイルの準備3.5. 実行ファイルの準備3.6. 削除希望のロググループを記述3.7. cron 設定3.8. cron 実行時の確認コマンド
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