@aws-amplify/graphql-schema-generator
Version:
Amplify GraphQL schema generator
59 lines • 2.75 kB
JavaScript
;
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