UNPKG

cloud-report

Version:

Collects and analyzes cloud resources

41 lines (40 loc) 1.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const kms_1 = require("../kms"); const _1 = require("."); const utils_1 = require("../../../utils"); const aws_1 = require("../../../utils/aws"); const base_1 = require("../../base"); class ClusterKeyAliasCollector extends base_1.BaseCollector { async collect() { const serviceName = "Redshift"; const redshiftRegions = this.getRegions(serviceName); const self = this; const cluster_with_key_manager = {}; const kmsCollector = new kms_1.KeyDescriptionCollector(); kmsCollector.setSession(self.getSession()); const redshiftCollector = new _1.RedshiftClustersCollector(); redshiftCollector.setSession(self.getSession()); try { const keyData = await utils_1.CollectorUtil.cachedCollect(kmsCollector); const redshiftData = await utils_1.CollectorUtil.cachedCollect(redshiftCollector); for (const region of redshiftRegions) { cluster_with_key_manager[region] = []; const regionClusters = redshiftData.clusters[region]; const regionKeys = keyData.keys_with_description[region] ? keyData.keys_with_description[region] : []; for (let cluster of regionClusters) { if (cluster.Encrypted && cluster.KmsKeyId) { const KmsKeyWithDescription = regionKeys.find(key => key.KeyArn === cluster.KmsKeyId); cluster.KmsKeyWithDescription = KmsKeyWithDescription; } cluster_with_key_manager[region].push(cluster); } } } catch (error) { aws_1.AWSErrorHandler.handle(error); } return { cluster_with_key_manager }; } } exports.ClusterKeyAliasCollector = ClusterKeyAliasCollector;