cloud-report
Version:
Collects and analyzes cloud resources
40 lines (39 loc) • 2.16 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = require("../../../types");
const base_1 = require("../../base");
class BucketLifeCycleRulesAnalyzer extends base_1.BaseAnalyzer {
analyze(params) {
const allBucketLifeCycleRules = params.bucket_life_cycle_rules;
if (!allBucketLifeCycleRules) {
return undefined;
}
const bucket_life_cycle_rules_used = { type: types_1.CheckAnalysisType.CostOptimization };
bucket_life_cycle_rules_used.what = "Are S3 Bucket Life Cycle rules used?";
bucket_life_cycle_rules_used.why = `Bucket life cycle rules helps us to manage the S3 object storage by either
transferring objects to cheaper storage class or deleting them.`;
bucket_life_cycle_rules_used.recommendation = "Recommended to configure life cycle rules for all buckets";
bucket_life_cycle_rules_used.benchmark = ['all'];
const allBucketsAnalysis = [];
for (const bucketName in allBucketLifeCycleRules) {
const bucket_analysis = {};
bucket_analysis.resource = { bucketName, bucketLifeCycleRules: allBucketLifeCycleRules[bucketName] };
bucket_analysis.resourceSummary = {
name: "Bucket", value: bucketName,
};
if (allBucketLifeCycleRules[bucketName] && allBucketLifeCycleRules[bucketName].length > 0) {
bucket_analysis.severity = types_1.SeverityStatus.Good;
bucket_analysis.message = "Bucket Life cycle rules are configured";
}
else {
bucket_analysis.severity = types_1.SeverityStatus.Warning;
bucket_analysis.message = "Bucket Life cycle rules are not configured";
bucket_analysis.action = "Configure life cycle rules";
}
allBucketsAnalysis.push(bucket_analysis);
}
bucket_life_cycle_rules_used.regions = { global: allBucketsAnalysis };
return { bucket_life_cycle_rules_used };
}
}
exports.BucketLifeCycleRulesAnalyzer = BucketLifeCycleRulesAnalyzer;