UNPKG

@csermet/multiprovider

Version:

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

56 lines (55 loc) 2.2 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const lodash_1 = require("lodash"); const services_1 = __importDefault(require("../../enums/services")); exports.default = ({ service, data, region, }) => { const connections = []; const { ARN: id, KmsKeyId: kmsKeyId, RotationLambdaARN: rotationLambdaARN, ReplicationStatus: replicationStatus, } = service; /** * Find KMS * related to this Secrets Manager */ const kmsKeyIds = replicationStatus?.map(rs => rs.KmsKeyId); const kmsKeys = data.find(({ name }) => name === services_1.default.kms); if (kmsKeys?.data?.[region]) { const kmsKeyInRegion = kmsKeys.data[region].filter(({ Arn: arn, KeyId: keyId, Aliases: aliases = [] }) => kmsKeyId === arn || kmsKeyIds?.includes(arn) || kmsKeyIds?.includes(keyId) || aliases?.some(a => kmsKeyIds?.includes(a.AliasName))); if (!lodash_1.isEmpty(kmsKeyInRegion)) { for (const kms of kmsKeyInRegion) { const { KeyId: keyId } = kms; connections.push({ id: keyId, resourceType: services_1.default.kms, relation: 'child', field: 'kms', }); } } } /** * Find Lambda Functions * related to this Secrets Manager */ const lambdas = data.find(({ name }) => name === services_1.default.lambda); if (rotationLambdaARN && lambdas?.data?.[region]) { const lambdaInRegion = lambdas.data[region].find(({ FunctionArn: functionArn }) => rotationLambdaARN === functionArn); if (lambdaInRegion) { const { FunctionArn: functionArn } = lambdaInRegion; connections.push({ id: functionArn, resourceType: services_1.default.lambda, relation: 'child', field: 'lambda', }); } } const snsResult = { [id]: connections, }; return snsResult; };