cloud-report
Version:
Collects and analyzes cloud resources
51 lines (50 loc) • 2.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = require("../../../types");
const base_1 = require("../../base");
class LambdaFunctionVersionsCountAnalyzer extends base_1.BaseAnalyzer {
analyze(params, fullReport) {
const allFunctionVersions = params.function_versions;
if (!allFunctionVersions) {
return undefined;
}
const function_versions_count = { type: types_1.CheckAnalysisType.OperationalExcellence };
function_versions_count.what = "Are there too many versions for any Lambda function?";
function_versions_count.why = `We need to use versioning for Lambda functions but keeping too many versions
will be confusing and also there is chance of exceed Lambda
service limits so we need to keep deleting the old versions.`;
function_versions_count.recommendation = "Recommended to keep maximum of 5 versions per Lambda function";
function_versions_count.benchmark = ['all'];
const allRegionsAnalysis = {};
for (const region in allFunctionVersions) {
const regionFunctionVersions = allFunctionVersions[region];
allRegionsAnalysis[region] = [];
for (const functionName in regionFunctionVersions) {
const functionAnalysis = {};
functionAnalysis.resource = { functionName, versions: regionFunctionVersions[functionName] };
functionAnalysis.resourceSummary = {
name: "Function",
value: functionName,
};
if (regionFunctionVersions[functionName].length === 1) {
functionAnalysis.severity = types_1.SeverityStatus.Warning;
functionAnalysis.message = "Versioning is not used";
functionAnalysis.action = "Start using versioning";
}
else if (regionFunctionVersions[functionName].length <= 5) {
functionAnalysis.severity = types_1.SeverityStatus.Good;
functionAnalysis.message = `Function has ${regionFunctionVersions[functionName].length} versions`;
}
else {
functionAnalysis.severity = types_1.SeverityStatus.Warning;
functionAnalysis.message = `Function has ${regionFunctionVersions[functionName].length} versions`;
functionAnalysis.action = "Keep deleting the old versions";
}
allRegionsAnalysis[region].push(functionAnalysis);
}
}
function_versions_count.regions = allRegionsAnalysis;
return { function_versions_count };
}
}
exports.LambdaFunctionVersionsCountAnalyzer = LambdaFunctionVersionsCountAnalyzer;