cost-monitoring-construct
Version:
A CDK construct that helps track applications' costs separately and receive alerts in case of unpredicted resource usage
44 lines • 5.9 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AccountCostMonitoring = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const budget_1 = require("./budget");
const budget_strategy_1 = require("./budget-strategy");
const utils_1 = require("./utils");
class AccountCostMonitoring extends budget_strategy_1.IBudgetStrategy {
createDailyBudgets(dailyLimit, subscribers) {
new budget_1.Budget(this.stack, `account_daily_${dailyLimit}_%80_alert`, {
limit: dailyLimit,
subscribers: subscribers,
alertContdition: {
threshold: 80,
period: utils_1.TimeUnit.DAILY,
},
}).clone(`account_daily_${dailyLimit}_%100_alert`, {
alertContdition: { threshold: 100 },
});
}
createMonthlyBudgets(monthlyLimit, subscribers) {
new budget_1.Budget(this.stack, `account_monthly_${monthlyLimit}`, {
limit: monthlyLimit,
subscribers: subscribers,
alertContdition: {
period: utils_1.TimeUnit.MONTHLY,
threshold: 100,
},
})
.clone(`account_monthly_${monthlyLimit * 2}`, { limit: monthlyLimit * 2 })
.clone(`account_monthly_${monthlyLimit * 3}`, { limit: monthlyLimit * 3 })
.clone(`account_monthly_${monthlyLimit * 4}`, { limit: monthlyLimit * 4 })
.clone(`account_monthly_${monthlyLimit * 10}`, {
limit: monthlyLimit * 10,
});
}
createQuarterlyBudgets(_quarterlyLimit, _subscribers) { }
createYearlyBudgets(_yearlyLimit, _subscribers) { }
}
exports.AccountCostMonitoring = AccountCostMonitoring;
_a = JSII_RTTI_SYMBOL_1;
AccountCostMonitoring[_a] = { fqn: "cost-monitoring-construct.AccountCostMonitoring", version: "1.2.3" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1jb3N0LW1vbml0b3JpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWNjb3VudC1jb3N0LW1vbml0b3JpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxxQ0FBa0M7QUFDbEMsdURBQW9EO0FBQ3BELG1DQUFtQztBQUVuQyxNQUFhLHFCQUFzQixTQUFRLGlDQUFlO0lBQzlDLGtCQUFrQixDQUMxQixVQUFrQixFQUNsQixXQUF3RDtRQUV4RCxJQUFJLGVBQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLGlCQUFpQixVQUFVLFlBQVksRUFBRTtZQUM5RCxLQUFLLEVBQUUsVUFBVTtZQUNqQixXQUFXLEVBQUUsV0FBVztZQUN4QixlQUFlLEVBQUU7Z0JBQ2YsU0FBUyxFQUFFLEVBQUU7Z0JBQ2IsTUFBTSxFQUFFLGdCQUFRLENBQUMsS0FBSzthQUN2QjtTQUNGLENBQUMsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLFVBQVUsYUFBYSxFQUFFO1lBQ2pELGVBQWUsRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUU7U0FDcEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLG9CQUFvQixDQUM1QixZQUFvQixFQUNwQixXQUF3RDtRQUV4RCxJQUFJLGVBQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLG1CQUFtQixZQUFZLEVBQUUsRUFBRTtZQUN4RCxLQUFLLEVBQUUsWUFBWTtZQUNuQixXQUFXLEVBQUUsV0FBVztZQUN4QixlQUFlLEVBQUU7Z0JBQ2YsTUFBTSxFQUFFLGdCQUFRLENBQUMsT0FBTztnQkFDeEIsU0FBUyxFQUFFLEdBQUc7YUFDZjtTQUNGLENBQUM7YUFDQyxLQUFLLENBQUMsbUJBQW1CLFlBQVksR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7YUFDekUsS0FBSyxDQUFDLG1CQUFtQixZQUFZLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxHQUFHLENBQUMsRUFBRSxDQUFDO2FBQ3pFLEtBQUssQ0FBQyxtQkFBbUIsWUFBWSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQzthQUN6RSxLQUFLLENBQUMsbUJBQW1CLFlBQVksR0FBRyxFQUFFLEVBQUUsRUFBRTtZQUM3QyxLQUFLLEVBQUUsWUFBWSxHQUFHLEVBQUU7U0FDekIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVTLHNCQUFzQixDQUM5QixlQUF1QixFQUN2QixZQUFvRCxJQUM3QyxDQUFDO0lBQ0EsbUJBQW1CLENBQzNCLFlBQW9CLEVBQ3BCLFlBQW9ELElBQzdDLENBQUM7O0FBNUNaLHNEQTZDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGF3c19idWRnZXRzIGFzIGJ1ZGdldHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEJ1ZGdldCB9IGZyb20gXCIuL2J1ZGdldFwiO1xuaW1wb3J0IHsgSUJ1ZGdldFN0cmF0ZWd5IH0gZnJvbSBcIi4vYnVkZ2V0LXN0cmF0ZWd5XCI7XG5pbXBvcnQgeyBUaW1lVW5pdCB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBjbGFzcyBBY2NvdW50Q29zdE1vbml0b3JpbmcgZXh0ZW5kcyBJQnVkZ2V0U3RyYXRlZ3kge1xuICBwcm90ZWN0ZWQgY3JlYXRlRGFpbHlCdWRnZXRzKFxuICAgIGRhaWx5TGltaXQ6IG51bWJlcixcbiAgICBzdWJzY3JpYmVyczogQXJyYXk8YnVkZ2V0cy5DZm5CdWRnZXQuU3Vic2NyaWJlclByb3BlcnR5PlxuICApOiB2b2lkIHtcbiAgICBuZXcgQnVkZ2V0KHRoaXMuc3RhY2ssIGBhY2NvdW50X2RhaWx5XyR7ZGFpbHlMaW1pdH1fJTgwX2FsZXJ0YCwge1xuICAgICAgbGltaXQ6IGRhaWx5TGltaXQsXG4gICAgICBzdWJzY3JpYmVyczogc3Vic2NyaWJlcnMsXG4gICAgICBhbGVydENvbnRkaXRpb246IHtcbiAgICAgICAgdGhyZXNob2xkOiA4MCxcbiAgICAgICAgcGVyaW9kOiBUaW1lVW5pdC5EQUlMWSxcbiAgICAgIH0sXG4gICAgfSkuY2xvbmUoYGFjY291bnRfZGFpbHlfJHtkYWlseUxpbWl0fV8lMTAwX2FsZXJ0YCwge1xuICAgICAgYWxlcnRDb250ZGl0aW9uOiB7IHRocmVzaG9sZDogMTAwIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlTW9udGhseUJ1ZGdldHMoXG4gICAgbW9udGhseUxpbWl0OiBudW1iZXIsXG4gICAgc3Vic2NyaWJlcnM6IEFycmF5PGJ1ZGdldHMuQ2ZuQnVkZ2V0LlN1YnNjcmliZXJQcm9wZXJ0eT5cbiAgKTogdm9pZCB7XG4gICAgbmV3IEJ1ZGdldCh0aGlzLnN0YWNrLCBgYWNjb3VudF9tb250aGx5XyR7bW9udGhseUxpbWl0fWAsIHtcbiAgICAgIGxpbWl0OiBtb250aGx5TGltaXQsXG4gICAgICBzdWJzY3JpYmVyczogc3Vic2NyaWJlcnMsXG4gICAgICBhbGVydENvbnRkaXRpb246IHtcbiAgICAgICAgcGVyaW9kOiBUaW1lVW5pdC5NT05USExZLFxuICAgICAgICB0aHJlc2hvbGQ6IDEwMCxcbiAgICAgIH0sXG4gICAgfSlcbiAgICAgIC5jbG9uZShgYWNjb3VudF9tb250aGx5XyR7bW9udGhseUxpbWl0ICogMn1gLCB7IGxpbWl0OiBtb250aGx5TGltaXQgKiAyIH0pXG4gICAgICAuY2xvbmUoYGFjY291bnRfbW9udGhseV8ke21vbnRobHlMaW1pdCAqIDN9YCwgeyBsaW1pdDogbW9udGhseUxpbWl0ICogMyB9KVxuICAgICAgLmNsb25lKGBhY2NvdW50X21vbnRobHlfJHttb250aGx5TGltaXQgKiA0fWAsIHsgbGltaXQ6IG1vbnRobHlMaW1pdCAqIDQgfSlcbiAgICAgIC5jbG9uZShgYWNjb3VudF9tb250aGx5XyR7bW9udGhseUxpbWl0ICogMTB9YCwge1xuICAgICAgICBsaW1pdDogbW9udGhseUxpbWl0ICogMTAsXG4gICAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVRdWFydGVybHlCdWRnZXRzKFxuICAgIF9xdWFydGVybHlMaW1pdDogbnVtYmVyLFxuICAgIF9zdWJzY3JpYmVyczogYnVkZ2V0cy5DZm5CdWRnZXQuU3Vic2NyaWJlclByb3BlcnR5W11cbiAgKTogdm9pZCB7fVxuICBwcm90ZWN0ZWQgY3JlYXRlWWVhcmx5QnVkZ2V0cyhcbiAgICBfeWVhcmx5TGltaXQ6IG51bWJlcixcbiAgICBfc3Vic2NyaWJlcnM6IGJ1ZGdldHMuQ2ZuQnVkZ2V0LlN1YnNjcmliZXJQcm9wZXJ0eVtdXG4gICk6IHZvaWQge31cbn1cbiJdfQ==