UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

47 lines (46 loc) 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const utils_1 = require("../../../utils"); const aws_1 = require("../../../utils/aws"); const base_1 = require("../../base"); const instances_1 = require("./instances"); class TerminationProtectionCollector extends base_1.BaseCollector { collect() { return this.getTerminationProtectionStatus(); } async getTerminationProtectionStatus() { const serviceName = "EC2"; const ec2Regions = this.getRegions(serviceName); const termination_protection = {}; const ec2InstancesCollector = new instances_1.EC2InstancesCollector(); ec2InstancesCollector.setSession(this.getSession()); try { const instancesData = await utils_1.CollectorUtil.cachedCollect(ec2InstancesCollector); const instances = instancesData.instances; for (const region of ec2Regions) { try { const ec2 = this.getClient(serviceName, region); termination_protection[region] = {}; for (const instance of instances[region]) { const instanceAttributeResponse = await ec2.describeInstanceAttribute({ Attribute: "disableApiTermination", InstanceId: instance.InstanceId, }).promise(); termination_protection[region][instance.InstanceId] = instanceAttributeResponse.DisableApiTermination; await utils_1.CommonUtil.wait(200); } } catch (error) { aws_1.AWSErrorHandler.handle(error); continue; } } } catch (error) { aws_1.AWSErrorHandler.handle(error); } return { termination_protection }; } } exports.TerminationProtectionCollector = TerminationProtectionCollector;