この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
渡辺です。
CloudWatch Logsは便利なのです。 しかし、開発や検証を行っている時、不要なログがずっと残ってしまい、無駄なコストになりがちです。 デフォルトではログは残り続けるので、都度失効時間を設定しなければなりません。
というわけで、全てのロググループの失効期間を一括設定するスクリプトを作成しました。 Node.js 8.x 以上でお試しください。 また、AWS-SDKを利用しているので、モジュールの追加を忘れずに。
なお、ローカルで実行するよりも、Lambdaで実行する方が確実で簡単でしょう。
const AWS = require('aws-sdk');
const cwl = new AWS.CloudWatchLogs();
// 1, 3, 5, 7, 14, 30, 60, 90, 120, 150, 180, 365, 400, 545, 731, 1827, and 3653.
const RETENTION_IN_DAYS = 7;
const setRetentions = async (retentionInDays) => {
let params = {};
let groups = await cwl.describeLogGroups(params).promise();
let groupNames = groups['logGroups'].map(e => {
return e['logGroupName'];
});
for (let i = 0, len = groupNames.length; i < len; i++) {
putRetentionPolicy(groupNames[i], retentionInDays);
}
};
const putRetentionPolicy = async (groupName, retentionInDays) => {
console.log(groupName);
let params = {
logGroupName: groupName,
retentionInDays: retentionInDays
};
await cwl.putRetentionPolicy(params).promise();
};
setRetentions(RETENTION_IN_DAYS);
スッキリw