From 219d89fbb53a56b1eb6c605cc2f447294f4ddc51 Mon Sep 17 00:00:00 2001 From: Nicholas Hodaly Date: Thu, 18 Sep 2025 21:47:48 -0700 Subject: [PATCH 1/2] Use rds cluster endpoint instead of instance endpoint --- src/server/services/deploy.ts | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/server/services/deploy.ts b/src/server/services/deploy.ts index c6ca34c..dc245fa 100644 --- a/src/server/services/deploy.ts +++ b/src/server/services/deploy.ts @@ -359,26 +359,25 @@ export default class DeployService extends BaseService { Values: [deploy.deployable.name], }, ], - ResourceTypeFilters: ['rds:db'], + ResourceTypeFilters: ['rds:cluster'], }) .promise(); - const dbArn = results.ResourceTagMappingList[0].ResourceARN; - const params = { - Filters: [ - { - Name: 'db-instance-id' /* required */, - Values: [dbArn], - }, - ], - }; - const instances = await rds.describeDBInstances(params, null).promise(); - if (instances.DBInstances.length === 1) { - const database = instances.DBInstances[0]; - const databaseAddress = database.Endpoint.Address; - await deploy.$query().patch({ - cname: databaseAddress, - }); + if (results.ResourceTagMappingList.length > 0) { + const clusterArn = results.ResourceTagMappingList[0].ResourceARN; + const clusterIdentifier = clusterArn.split(':').pop(); + + const clusters = await rds.describeDBClusters({ + DBClusterIdentifier: clusterIdentifier, + }).promise(); + + if (clusters.DBClusters.length === 1) { + const cluster = clusters.DBClusters[0]; + const clusterEndpoint = cluster.Endpoint; + await deploy.$query().patch({ + cname: clusterEndpoint, + }); + } } await deploy.reload(); if (deploy.buildLogs === uuid) { From e79f72ad1fed41f6b64bcb876505951fe203ca8e Mon Sep 17 00:00:00 2001 From: Nicholas Hodaly Date: Sun, 5 Oct 2025 10:44:12 -0700 Subject: [PATCH 2/2] Get cluster endpoint from instance --- src/server/services/deploy.ts | 51 ++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/src/server/services/deploy.ts b/src/server/services/deploy.ts index dc245fa..68bd252 100644 --- a/src/server/services/deploy.ts +++ b/src/server/services/deploy.ts @@ -359,26 +359,47 @@ export default class DeployService extends BaseService { Values: [deploy.deployable.name], }, ], - ResourceTypeFilters: ['rds:cluster'], + ResourceTypeFilters: ['rds:db'], }) .promise(); - if (results.ResourceTagMappingList.length > 0) { - const clusterArn = results.ResourceTagMappingList[0].ResourceARN; - const clusterIdentifier = clusterArn.split(':').pop(); - - const clusters = await rds.describeDBClusters({ - DBClusterIdentifier: clusterIdentifier, - }).promise(); - - if (clusters.DBClusters.length === 1) { - const cluster = clusters.DBClusters[0]; - const clusterEndpoint = cluster.Endpoint; - await deploy.$query().patch({ - cname: clusterEndpoint, - }); + const instanceArn = results.ResourceTagMappingList?.find((mapping) => + mapping.ResourceARN?.includes(':db:') + )?.ResourceARN; + + let databaseAddress: string | undefined; + + if (instanceArn) { + const instanceIdentifier = instanceArn.split(':').pop(); + if (instanceIdentifier) { + const instances = await rds + .describeDBInstances({ + DBInstanceIdentifier: instanceIdentifier, + }) + .promise(); + const database = instances.DBInstances?.[0]; + if (database) { + databaseAddress = database.Endpoint?.Address; + if (database.DBClusterIdentifier) { + const clusters = await rds + .describeDBClusters({ + DBClusterIdentifier: database.DBClusterIdentifier, + }) + .promise(); + const clusterEndpoint = clusters.DBClusters?.[0]?.Endpoint; + if (clusterEndpoint) { + databaseAddress = clusterEndpoint; + } + } + } } } + + if (databaseAddress) { + await deploy.$query().patch({ + cname: databaseAddress, + }); + } await deploy.reload(); if (deploy.buildLogs === uuid) { await deploy.$query().patch({