@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
88 lines (87 loc) • 3.13 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const aws_sdk_1 = require("aws-sdk");
const sdk_1 = __importDefault(require("@cloudgraph/sdk"));
const lodash_1 = require("lodash");
const logger_1 = __importDefault(require("../../properties/logger"));
const format_1 = require("../../utils/format");
const errorLog_1 = __importDefault(require("../../utils/errorLog"));
const utils_1 = require("../../utils");
const lt = { ...logger_1.default };
const { logger } = sdk_1.default;
const serviceName = 'ASG';
const errorLog = new errorLog_1.default(serviceName);
const endpoint = utils_1.initTestEndpoint(serviceName);
/**
* Kinesis Firehose
*/
const Limit = 60;
const LIST_TAGS_LIMIT = 50;
const listDeliveryStreamData = async (kinesis) => {
try {
const fullResources = [];
const deliveryStreamNames = await kinesis
.listDeliveryStreams({ Limit })
.promise();
for (const deliveryStreamName of deliveryStreamNames.DeliveryStreamNames) {
const deliveryStreams = await kinesis
.describeDeliveryStream({ DeliveryStreamName: deliveryStreamName })
.promise();
fullResources.push(deliveryStreams.DeliveryStreamDescription);
}
logger.debug(lt.fetchedKinesisFirehose(fullResources.length));
return fullResources;
}
catch (err) {
errorLog.generateAwsErrorLog({
functionName: 'kinesisFirehose:describeDeliveryStream',
err,
});
}
return [];
};
const listTagsForDeliveryStream = async (kinesis, deliveryStreamName) => {
try {
const tags = await kinesis
.listTagsForDeliveryStream({
DeliveryStreamName: deliveryStreamName,
Limit: LIST_TAGS_LIMIT,
})
.promise();
const awsTags = tags.Tags.map(({ Key, Value }) => {
return {
Key,
Value,
};
}) || [];
return format_1.convertAwsTagsToTagMap(awsTags);
}
catch (err) {
errorLog.generateAwsErrorLog({
functionName: 'kinesisFirehose:listTagsForDeliveryStream',
err,
});
}
return null;
};
exports.default = async ({ regions, config, }) => {
const streamDescriptionsData = [];
for (const region of regions.split(',')) {
const kinesis = new aws_sdk_1.Firehose({ ...config, region, endpoint });
const streamDescriptions = await listDeliveryStreamData(kinesis);
for (const streamDescription of streamDescriptions) {
const Tags = await listTagsForDeliveryStream(kinesis, streamDescription.DeliveryStreamName);
const description = {
...streamDescription,
region,
Tags,
};
streamDescriptionsData.push(description);
}
}
errorLog.reset();
return lodash_1.groupBy(streamDescriptionsData, 'region');
};