cloud-report
Version:
Collects and analyzes cloud resources
55 lines (54 loc) • 2.71 kB
JavaScript
;
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;