aws-logs-comptroller
Version:
Set Log Retention and prune orphaned LogGroups on a schedule using Step Functions service integrations and intrinsic functions.
29 lines • 3.95 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.AwsLogsComptroller = void 0;
const aws_events_1 = require("aws-cdk-lib/aws-events");
const aws_events_targets_1 = require("aws-cdk-lib/aws-events-targets");
const constructs_1 = require("constructs");
const iterator_state_machine_1 = require("./iterator-state-machine");
const runner_state_machine_1 = require("./runner-state-machine");
class AwsLogsComptroller extends constructs_1.Construct {
constructor(scope, id, props = {}) {
super(scope, id);
const { eventBus, retentionDays, schedule } = props;
const runner = (0, runner_state_machine_1.getRunner)(scope, retentionDays);
const iterator = (0, iterator_state_machine_1.getIteratorStateMachine)(scope, runner);
if (schedule) {
new aws_events_1.Rule(this, 'LogsComptrollerScheduler', {
eventBus,
schedule: schedule === true
? aws_events_1.Schedule.cron({
hour: '4', minute: '0',
})
: schedule,
targets: [new aws_events_targets_1.SfnStateMachine(iterator)],
});
}
}
}
exports.AwsLogsComptroller = AwsLogsComptroller;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1REFBa0U7QUFDbEUsdUVBQWlFO0FBRWpFLDJDQUF1QztBQUN2QyxxRUFBbUU7QUFFbkUsaUVBQW1EO0FBUW5ELE1BQWEsa0JBQW1CLFNBQVEsc0JBQVM7SUFDL0MsWUFBYSxLQUFnQixFQUFFLEVBQVUsRUFBRSxRQUFpQyxFQUMzRTtRQUNDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRXBELE1BQU0sTUFBTSxHQUFHLElBQUEsZ0NBQVMsRUFBQyxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDL0MsTUFBTSxRQUFRLEdBQUcsSUFBQSxnREFBdUIsRUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFeEQsSUFBSSxRQUFRLEVBQUU7WUFDWixJQUFJLGlCQUFJLENBQUMsSUFBSSxFQUFFLDBCQUEwQixFQUFFO2dCQUN6QyxRQUFRO2dCQUNSLFFBQVEsRUFBRSxRQUFRLEtBQUssSUFBSTtvQkFDekIsQ0FBQyxDQUFDLHFCQUFRLENBQUMsSUFBSSxDQUFDO3dCQUNkLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUc7cUJBQ3ZCLENBQUM7b0JBQ0YsQ0FBQyxDQUFDLFFBQVE7Z0JBQ1osT0FBTyxFQUFFLENBQUMsSUFBSSxvQ0FBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3pDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztDQUNGO0FBdEJELGdEQXNCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50QnVzLCBSdWxlLCBTY2hlZHVsZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1ldmVudHMnO1xuaW1wb3J0IHsgU2ZuU3RhdGVNYWNoaW5lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWV2ZW50cy10YXJnZXRzJztcbmltcG9ydCB7IFJldGVudGlvbkRheXMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGdldEl0ZXJhdG9yU3RhdGVNYWNoaW5lIH0gZnJvbSAnLi9pdGVyYXRvci1zdGF0ZS1tYWNoaW5lJztcblxuaW1wb3J0IHsgZ2V0UnVubmVyIH0gZnJvbSAnLi9ydW5uZXItc3RhdGUtbWFjaGluZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzTG9nc0NvbXB0cm9sbGVyUHJvcHMge1xuICByZWFkb25seSBldmVudEJ1cz86IEV2ZW50QnVzXG4gIHJlYWRvbmx5IHJldGVudGlvbkRheXM/OiBSZXRlbnRpb25EYXlzXG4gIHJlYWRvbmx5IHNjaGVkdWxlPzogYm9vbGVhbiB8IFNjaGVkdWxlXG59XG5cbmV4cG9ydCBjbGFzcyBBd3NMb2dzQ29tcHRyb2xsZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvciAoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEF3c0xvZ3NDb21wdHJvbGxlclByb3BzID0ge1xuICB9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHsgZXZlbnRCdXMsIHJldGVudGlvbkRheXMsIHNjaGVkdWxlIH0gPSBwcm9wcztcblxuICAgIGNvbnN0IHJ1bm5lciA9IGdldFJ1bm5lcihzY29wZSwgcmV0ZW50aW9uRGF5cyk7XG4gICAgY29uc3QgaXRlcmF0b3IgPSBnZXRJdGVyYXRvclN0YXRlTWFjaGluZShzY29wZSwgcnVubmVyKTtcblxuICAgIGlmIChzY2hlZHVsZSkge1xuICAgICAgbmV3IFJ1bGUodGhpcywgJ0xvZ3NDb21wdHJvbGxlclNjaGVkdWxlcicsIHtcbiAgICAgICAgZXZlbnRCdXMsXG4gICAgICAgIHNjaGVkdWxlOiBzY2hlZHVsZSA9PT0gdHJ1ZVxuICAgICAgICAgID8gU2NoZWR1bGUuY3Jvbih7XG4gICAgICAgICAgICBob3VyOiAnNCcsIG1pbnV0ZTogJzAnLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgOiBzY2hlZHVsZSxcbiAgICAgICAgdGFyZ2V0czogW25ldyBTZm5TdGF0ZU1hY2hpbmUoaXRlcmF0b3IpXSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
;