UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

51 lines (50 loc) 2.86 kB
"use strict"; 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;