@csermet/multiprovider
Version:
cloud-graph provider plugin for AWS used to fetch AWS cloud data.
56 lines (55 loc) • 2.2 kB
JavaScript
;
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;
};