UNPKG

@csermet/multiprovider

Version:

cloud-graph provider plugin for AWS used to fetch AWS cloud data.

81 lines (80 loc) 3.37 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const services_1 = __importDefault(require("../../enums/services")); const generateArns_1 = require("../../utils/generateArns"); exports.default = ({ service: airflow, data, region, }) => { const { Arn: id, SourceBucketArn, NetworkConfiguration: { SecurityGroupIds = [] } = {}, LoggingConfiguration, KmsKey, } = airflow; const connections = []; /** * Find any S3 related data */ const buckets = data.find(({ name }) => name === services_1.default.s3); if (buckets?.data?.[region]) { const dataAtRegion = buckets.data[region].filter(({ Name: name }) => generateArns_1.s3BucketArn({ name }) === SourceBucketArn); for (const bucket of dataAtRegion) { connections.push({ id: bucket.Id, resourceType: services_1.default.s3, relation: 'child', field: 's3', }); } } /** * Find any securityGroups related data */ const securityGroups = data.find(({ name }) => name === services_1.default.sg); if (securityGroups?.data?.[region]) { const dataAtRegion = securityGroups.data[region].filter(({ GroupId }) => SecurityGroupIds.includes(GroupId)); for (const securityGroup of dataAtRegion) { connections.push({ id: securityGroup.GroupId, resourceType: services_1.default.sg, relation: 'child', field: 'securityGroups', }); } } /** * Find any cloudwatch log group related data */ const cloudwatchLogs = data.find(({ name }) => name === services_1.default.cloudwatchLog); if (cloudwatchLogs?.data?.[region]) { const dataAtRegion = cloudwatchLogs.data[region].filter(({ logGroupName }) => { return (LoggingConfiguration?.TaskLogs?.CloudWatchLogGroupArn?.includes(logGroupName) || LoggingConfiguration?.SchedulerLogs?.CloudWatchLogGroupArn?.includes(logGroupName) || LoggingConfiguration?.WorkerLogs?.CloudWatchLogGroupArn?.includes(logGroupName) || LoggingConfiguration?.WebserverLogs?.CloudWatchLogGroupArn?.includes(logGroupName) || LoggingConfiguration?.DagProcessingLogs?.CloudWatchLogGroupArn?.includes(logGroupName)); }); for (const logGroup of dataAtRegion) { connections.push({ id: logGroup.logGroupName, resourceType: services_1.default.cloudwatchLog, relation: 'child', field: 'cloudwatchLogs', }); } } /** * Find any kms related data */ const kms = data.find(({ name }) => name === services_1.default.kms); if (kms?.data?.[region]) { const dataAtRegion = kms.data[region].filter(({ Arn }) => Arn === KmsKey); for (const kmsKey of dataAtRegion) { connections.push({ id: kmsKey.KeyId, resourceType: services_1.default.kms, relation: 'child', field: 'kms', }); } } return { [id]: connections, }; };