AWS の CloudWatch ロググループの保持期限を一括で設定するメモ。

AWS の CloudWatch ロググループの保持期限を一括で設定するメモ。 コンソールからたくさんのロググループの保持期限を手で変更していくのが面倒くさかったので AWS CLI で一括設定。

やったこと

aws logs describe-log-groups コマンドで全ロググループを取得できるので取得したロググループに対して aws logs put-retention-policy コマンドで保持期限を設定するだけ。 たとえば以下のコマンドでロググループの保持期限を30日に一括設定できる。

$ aws logs describe-log-groups |
    grep 'logGroupName' |
    sed -e 's/.*logGroupName": "//' -e 's/",.*//' |
    xargs -n1 -I{} aws logs put-retention-policy --log-group-name {} --retention-in-days 30

jq を使うと上のコマンドと同じことをもう少し簡潔に書ける。

$ aws logs describe-log-groups |
    jq -r '.logGroups[].logGroupName' |
    xargs -n1 -I{} aws logs put-retention-policy --log-group-name {} --retention-in-days 30

AWS CLI 便利。

参考ページ

put-retention-policy — AWS CLI 1.16.193 Command Reference