cloud-report
Version:
Collects and analyzes cloud resources
49 lines (48 loc) • 2.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const types_1 = require("../../../types");
const utils_1 = require("../../../utils");
const base_1 = require("../../base");
class InstanceUntaggedAnalyzer extends base_1.BaseAnalyzer {
analyze(params, fullReport) {
const allInstances = params.instances;
if (!allInstances) {
return undefined;
}
const untagged_instances = { type: types_1.CheckAnalysisType.OperationalExcellence };
untagged_instances.what = "Are there EC2 any instances without tags?";
untagged_instances.why = "Tags help to follow security practices easily";
untagged_instances.recommendation = "Recommended to add tags to all instances";
untagged_instances.benchmark = ['all'];
const allRegionsAnalysis = {};
for (const region in allInstances) {
const regionInstances = allInstances[region];
allRegionsAnalysis[region] = [];
for (const instance of regionInstances) {
const instanceAnalysis = {};
instanceAnalysis.resource = {
instanceId: instance.InstanceId,
instanceName: utils_1.ResourceUtil.getNameByTags(instance),
security_groups: instance.SecurityGroups,
};
instanceAnalysis.resourceSummary = {
name: "Instance",
value: `${instanceAnalysis.resource.instanceName} | ${instance.InstanceId}`,
};
if (instance.Tags.length === 0) {
instanceAnalysis.severity = types_1.SeverityStatus.Failure;
instanceAnalysis.message = "No tags";
instanceAnalysis.action = "Add tags for the instance";
}
else {
instanceAnalysis.severity = types_1.SeverityStatus.Good;
instanceAnalysis.message = "Tags are present";
}
allRegionsAnalysis[region].push(instanceAnalysis);
}
}
untagged_instances.regions = allRegionsAnalysis;
return { untagged_instances };
}
}
exports.InstanceUntaggedAnalyzer = InstanceUntaggedAnalyzer;