UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

55 lines (54 loc) 2.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const types_1 = require("../../../types"); const base_1 = require("../../base"); class LambdaFunctionVersioningUsageAnalyzer extends base_1.BaseAnalyzer { analyze(params, fullReport) { const allFunctionVersions = params.function_versions; if (!allFunctionVersions) { return undefined; } const function_versions_used = { type: types_1.CheckAnalysisType.Reliability }; function_versions_used.what = "Are you using versioning for Lambda functions?"; function_versions_used.why = `We need to use versioning for Lambda functions; when every we update the function, it is important that we create a new version and make changes there so that if required we can roll back to previous version.`; function_versions_used.recommendation = "Recommended to use versioning while deploying the Lambda functions"; function_versions_used.benchmark = ['all']; const allRegionsAnalysis = {}; for (const region in allFunctionVersions) { const regionFunctionVersions = allFunctionVersions[region]; allRegionsAnalysis[region] = []; for (const functionName in regionFunctionVersions) { const functionAnalysis = {}; const functionVersions = this.getNonDefaultVersions(regionFunctionVersions[functionName]); functionAnalysis.resource = { functionName, versions: functionVersions }; functionAnalysis.resourceSummary = { name: "Function", value: functionName, }; if (functionVersions.length) { functionAnalysis.severity = types_1.SeverityStatus.Good; functionAnalysis.message = "Versioning is used"; } else { functionAnalysis.severity = types_1.SeverityStatus.Warning; functionAnalysis.message = "Versioning is not used"; functionAnalysis.action = "Start using versioning"; } allRegionsAnalysis[region].push(functionAnalysis); } } function_versions_used.regions = allRegionsAnalysis; return { function_versions_used }; } getNonDefaultVersions(functions) { if (!functions) { return []; } return functions.filter((fn) => { return fn.Version !== "$LATEST"; }); } } exports.LambdaFunctionVersioningUsageAnalyzer = LambdaFunctionVersioningUsageAnalyzer;