UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

57 lines (56 loc) 2.73 kB
"use strict"; 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;