UNPKG

@aws-amplify/graphql-schema-generator

Version:
59 lines 2.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkHostInDBClusters = void 0; const client_rds_1 = require("@aws-sdk/client-rds"); const supported_db_engines_1 = require("./supported-db-engines"); const filter_subnet_availability_zones_1 = require("./filter-subnet-availability-zones"); const checkHostInDBClusters = async (hostname, region) => { const client = new client_rds_1.RDSClient({ region }); const params = { Filters: [ { Name: 'engine', Values: supported_db_engines_1.DB_ENGINES, }, ], }; const command = new client_rds_1.DescribeDBClustersCommand(params); const response = await client.send(command); if (!response.DBClusters) { throw new Error('Error in fetching DB Clusters'); } const cluster = response.DBClusters.find((dbCluster) => (dbCluster === null || dbCluster === void 0 ? void 0 : dbCluster.Endpoint) === hostname); if (!cluster) { return undefined; } const { subnetAvailabilityZoneConfig, vpcId } = await getSubnetAvailabilityZonesFromSubnetGroup(cluster.DBSubnetGroup, region); const securityGroupIds = cluster.VpcSecurityGroups.map((securityGroup) => securityGroup.VpcSecurityGroupId); return { vpcId, subnetAvailabilityZoneConfig, securityGroupIds, }; }; exports.checkHostInDBClusters = checkHostInDBClusters; const getSubnetAvailabilityZonesFromSubnetGroup = async (subnetGroupName, region) => { var _a; const client = new client_rds_1.RDSClient({ region }); const command = new client_rds_1.DescribeDBSubnetGroupsCommand({ DBSubnetGroupName: subnetGroupName, }); const response = await client.send(command); const subnetGroup = (_a = response.DBSubnetGroups) === null || _a === void 0 ? void 0 : _a.find((sg) => (sg === null || sg === void 0 ? void 0 : sg.DBSubnetGroupName) === subnetGroupName); if (!subnetGroup) { throw new Error(`DB Subnet Group ${subnetGroupName} not found in region ${region}`); } const subnetAvailabilityZones = subnetGroup === null || subnetGroup === void 0 ? void 0 : subnetGroup.Subnets.map((subnet) => { var _a; return { subnetId: subnet.SubnetIdentifier, availabilityZone: (_a = subnet.SubnetAvailabilityZone) === null || _a === void 0 ? void 0 : _a.Name, }; }); const filteredSubnetAvailabilityZones = (0, filter_subnet_availability_zones_1.filterSubnetAvailabilityZones)(subnetAvailabilityZones); return { vpcId: subnetGroup.VpcId, subnetAvailabilityZoneConfig: filteredSubnetAvailabilityZones, }; }; //# sourceMappingURL=vpc-helper-cluster.js.map