cloud-report
Version:
Collects and analyzes cloud resources
57 lines (56 loc) • 2.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = require("../../../types");
const base_1 = require("../../base");
class LambdaFunctionAliasesUsageAnalyzer extends base_1.BaseAnalyzer {
analyze(params, fullReport) {
const allFunctionAliases = params.function_aliases;
if (!allFunctionAliases) {
return undefined;
}
const function_aliases_used = { type: types_1.CheckAnalysisType.Reliability };
function_aliases_used.what = "Are you using aliasing for Lambda functions?";
function_aliases_used.why = `We need to use aliasing for Lambda functions;
when every we make major updates to the function,
it is important that we use alias with traffic shaping between
multiple aliases so that we can perform A/B testing and smoothly migrate applications.`;
function_aliases_used.recommendation = `Recommended to use aliasing while
deploying major changes to the Lambda functions`;
function_aliases_used.benchmark = ['all'];
const allRegionsAnalysis = {};
for (const region in allFunctionAliases) {
const regionFunctionAliases = allFunctionAliases[region];
allRegionsAnalysis[region] = [];
for (const functionName in regionFunctionAliases) {
const functionAnalysis = {};
const functionAliases = this.getNonDefaultAlias(regionFunctionAliases[functionName]);
functionAnalysis.resource = { functionName, aliases: functionAliases };
functionAnalysis.resourceSummary = {
name: "Function",
value: functionName,
};
if (functionAliases.length) {
functionAnalysis.severity = types_1.SeverityStatus.Good;
functionAnalysis.message = "Aliasing is used";
}
else {
functionAnalysis.severity = types_1.SeverityStatus.Warning;
functionAnalysis.message = "Aliasing is not used";
functionAnalysis.action = "Start using Aliasing";
}
allRegionsAnalysis[region].push(functionAnalysis);
}
}
function_aliases_used.regions = allRegionsAnalysis;
return { function_aliases_used };
}
getNonDefaultAlias(aliases) {
if (!aliases) {
return [];
}
return aliases.filter((alias) => {
return alias.Name !== "current";
});
}
}
exports.LambdaFunctionAliasesUsageAnalyzer = LambdaFunctionAliasesUsageAnalyzer;