@go-to-k/cdkd 0.302.1 → 0.302.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/{asg-provider-BpRcm_UB.js → asg-provider-DCrwgSCZ.js} +27 -9
  2. package/dist/asg-provider-DCrwgSCZ.js.map +1 -0
  3. package/dist/cli.js +2 -2
  4. package/dist/{deploy-engine-CYVt2NQR.js → deploy-engine-D9SDE-Pj.js} +359 -4269
  5. package/dist/deploy-engine-D9SDE-Pj.js.map +1 -0
  6. package/dist/{iam-policy-targets-CmHNH1DY.js → iam-policy-targets-OtGPguLH.js} +3 -2
  7. package/dist/{iam-policy-targets-CmHNH1DY.js.map → iam-policy-targets-OtGPguLH.js.map} +1 -1
  8. package/dist/{iam-role-provider-R1GC6KcT.js → iam-role-provider-Q1sv3tF1.js} +9 -5
  9. package/dist/iam-role-provider-Q1sv3tF1.js.map +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -3
  12. package/dist/{neptune-provider-DzTl6-74.js → neptune-provider-DjVgEWGf.js} +121 -11
  13. package/dist/neptune-provider-DjVgEWGf.js.map +1 -0
  14. package/dist/{program-CvRs5pV_.js → program-DSbJoNKe.js} +559 -305
  15. package/dist/program-DSbJoNKe.js.map +1 -0
  16. package/dist/{provider-classes-B2_u4Fg0.js → provider-classes-CDtquwkU.js} +673 -131
  17. package/dist/provider-classes-CDtquwkU.js.map +1 -0
  18. package/dist/{rds-provider-CmKbYAvr.js → rds-provider-ByCpdpUq.js} +208 -42
  19. package/dist/rds-provider-ByCpdpUq.js.map +1 -0
  20. package/dist/secret-redaction-BHWS-PZK.js +3937 -0
  21. package/dist/secret-redaction-BHWS-PZK.js.map +1 -0
  22. package/dist/{version-CaejipV3.js → version-DDpKuzTw.js} +2 -2
  23. package/dist/{version-CaejipV3.js.map → version-DDpKuzTw.js.map} +1 -1
  24. package/package.json +2 -2
  25. package/dist/asg-provider-BpRcm_UB.js.map +0 -1
  26. package/dist/deploy-engine-CYVt2NQR.js.map +0 -1
  27. package/dist/iam-role-provider-R1GC6KcT.js.map +0 -1
  28. package/dist/neptune-provider-DzTl6-74.js.map +0 -1
  29. package/dist/program-CvRs5pV_.js.map +0 -1
  30. package/dist/provider-classes-B2_u4Fg0.js.map +0 -1
  31. package/dist/rds-provider-CmKbYAvr.js.map +0 -1
@@ -1,10 +1,32 @@
1
1
  import { Q as safeMsg, T as generatedNameFor, n as describeAwsFailure, s as getLogger } from "./aws-failure-text-e_ddrDDo.js";
2
- import { E as assertRegionMatch, F as resolveExplicitPhysicalId, H as observeThenDisableProtection, L as ProtectionFlipRegistry, Mt as markCreatedBeforeFailure, Q as pasteableAwsCommand, Qt as ambientClientDefaults, T as RESOURCE_NOT_FOUND, U as protectionFlipKey, W as rdsFamilyProtectionSite, j as normalizeAwsTagsToCfn, p as withRemovalDefaults, u as clearOnUpdateRemoval, vr as markNonRetryable, w as withoutServerErrorRetries, yn as ProvisioningError, z as deleteWithProtectionCompensation } from "./iam-policy-targets-CmHNH1DY.js";
2
+ import { E as assertRegionMatch, F as resolveExplicitPhysicalId, H as observeThenDisableProtection, L as ProtectionFlipRegistry, Mt as markCreatedBeforeFailure, Q as pasteableAwsCommand, Qt as ambientClientDefaults, T as RESOURCE_NOT_FOUND, U as protectionFlipKey, W as rdsFamilyProtectionSite, br as wrapMaskedAwsError, j as normalizeAwsTagsToCfn, nr as relayedNameCollision, p as withRemovalDefaults, u as clearOnUpdateRemoval, vr as markNonRetryable, w as withoutServerErrorRetries, xt as maskerOrIdentity, yn as ProvisioningError, yr as markRedactedCause, z as deleteWithProtectionCompensation } from "./iam-policy-targets-OtGPguLH.js";
3
3
  import { s as ambientRegion } from "./aws-client-defaults-DBXBcg0J.js";
4
- import { Ar as markDeleteStarted, Fr as refuseMalformedDesiredTags, Lr as tagPlanWarning, Nr as planTagDiff, Rr as definedAttributes, ti as slowCcOperationTimeoutMs, zr as stringifyIfAssigned } from "./deploy-engine-CYVt2NQR.js";
4
+ import { Br as stringifyIfAssigned, Ir as refuseMalformedDesiredTags, Pr as planTagDiff, Rr as tagPlanWarning, W as enclosingDeadlineRemainingMs, jr as markDeleteStarted, ni as slowCcOperationTimeoutMs, zr as definedAttributes } from "./deploy-engine-D9SDE-Pj.js";
5
+ import { Tt as dynamicReferenceTokens } from "./secret-redaction-BHWS-PZK.js";
6
+ import { DescribeSecurityGroupsCommand, EC2Client } from "@aws-sdk/client-ec2";
7
+ import { isDeepStrictEqual } from "node:util";
5
8
  import { AddTagsToResourceCommand, CreateDBClusterCommand, CreateDBInstanceCommand, CreateDBSubnetGroupCommand, DeleteDBClusterCommand, DeleteDBInstanceCommand, DeleteDBSubnetGroupCommand, DescribeDBClustersCommand, DescribeDBInstancesCommand, DescribeDBSubnetGroupsCommand, DescribeGlobalClustersCommand, ListTagsForResourceCommand, ModifyDBClusterCommand, ModifyDBInstanceCommand, ModifyDBSubnetGroupCommand, RDSClient, RemoveFromGlobalClusterCommand, RemoveTagsFromResourceCommand } from "@aws-sdk/client-rds";
6
9
 
7
10
  //#region src/provisioning/providers/rds-provider.ts
11
+ function propertyChangedForUpdate(key, desired, recorded, context) {
12
+ const changedProperties = context?.changedProperties;
13
+ if (changedProperties !== void 0) return changedProperties.has(key);
14
+ return holdsRecordedStandIn(recorded) || !isDeepStrictEqual(desired, recorded);
15
+ }
16
+ function holdsRecordedStandIn(value) {
17
+ if (typeof value === "string") return value === "***" || dynamicReferenceTokens(value).length > 0;
18
+ if (Array.isArray(value)) return value.some(holdsRecordedStandIn);
19
+ if (value !== null && typeof value === "object") return Object.values(value).some(holdsRecordedStandIn);
20
+ return false;
21
+ }
22
+ function masterUserPasswordToSend(properties, previousProperties, context) {
23
+ const desired = properties["MasterUserPassword"];
24
+ if (desired === void 0 || desired === null) return void 0;
25
+ return propertyChangedForUpdate("MasterUserPassword", desired, previousProperties["MasterUserPassword"], context) ? desired : void 0;
26
+ }
27
+ function masterCredentialSettingsChanged(properties, previousProperties, context) {
28
+ return propertyChangedForUpdate("MasterUserPassword", properties["MasterUserPassword"], previousProperties["MasterUserPassword"], context) || propertyChangedForUpdate("ManageMasterUserPassword", properties["ManageMasterUserPassword"], previousProperties["ManageMasterUserPassword"], context) || propertyChangedForUpdate("MasterUserSecret", properties["MasterUserSecret"], previousProperties["MasterUserSecret"], context);
29
+ }
8
30
  const RDS_DELETE_WAIT_MS = Math.max(18e5, slowCcOperationTimeoutMs("AWS::RDS::DBCluster", "DELETE"), slowCcOperationTimeoutMs("AWS::RDS::DBInstance", "DELETE"));
9
31
  function deleteAutomatedBackupsInput(properties) {
10
32
  const value = properties?.["DeleteAutomatedBackups"];
@@ -35,9 +57,12 @@ var GlobalClusterDetachError = class extends Error {
35
57
  this.name = "GlobalClusterDetachError";
36
58
  }
37
59
  };
60
+ const FINAL_SNAPSHOT_SETTLE_WAIT_MS = 9e5;
61
+ const FINAL_SNAPSHOT_COMPENSATION_MARGIN_MS = 6e4;
38
62
  var RDSProvider = class {
39
63
  rdsClient;
40
64
  createClient;
65
+ ec2Client;
41
66
  providerRegion;
42
67
  logger = getLogger().child("RDSProvider");
43
68
  protectionFlips = new ProtectionFlipRegistry();
@@ -117,24 +142,32 @@ var RDSProvider = class {
117
142
  }
118
143
  return this.rdsClient;
119
144
  }
145
+ getEc2Client() {
146
+ if (!this.ec2Client) this.ec2Client = new EC2Client({
147
+ ...ambientClientDefaults(),
148
+ ...this.providerRegion ? { region: this.providerRegion } : {}
149
+ });
150
+ return this.ec2Client;
151
+ }
120
152
  getCreateClient() {
121
153
  this.getClient();
122
154
  return this.createClient;
123
155
  }
124
- async create(logicalId, resourceType, properties) {
156
+ async create(logicalId, resourceType, properties, context) {
157
+ const mask = context?.maskSecrets;
125
158
  switch (resourceType) {
126
- case "AWS::RDS::DBSubnetGroup": return this.createDBSubnetGroup(logicalId, resourceType, properties);
127
- case "AWS::RDS::DBCluster": return this.createDBCluster(logicalId, resourceType, properties);
128
- case "AWS::RDS::DBInstance": return this.createDBInstance(logicalId, resourceType, properties);
159
+ case "AWS::RDS::DBSubnetGroup": return this.createDBSubnetGroup(logicalId, resourceType, properties, mask);
160
+ case "AWS::RDS::DBCluster": return this.createDBCluster(logicalId, resourceType, properties, mask);
161
+ case "AWS::RDS::DBInstance": return this.createDBInstance(logicalId, resourceType, properties, mask);
129
162
  default: throw new ProvisioningError(`Unsupported resource type: ${resourceType}`, resourceType, logicalId);
130
163
  }
131
164
  }
132
165
  async update(logicalId, physicalId, resourceType, properties, previousProperties, context) {
133
166
  properties = withRemovalDefaults(this.removalDefaults, resourceType, properties, previousProperties, context);
134
167
  switch (resourceType) {
135
- case "AWS::RDS::DBSubnetGroup": return this.updateDBSubnetGroup(logicalId, physicalId, resourceType, properties, previousProperties);
136
- case "AWS::RDS::DBCluster": return this.updateDBCluster(logicalId, physicalId, resourceType, properties, previousProperties);
137
- case "AWS::RDS::DBInstance": return this.updateDBInstance(logicalId, physicalId, resourceType, properties, previousProperties);
168
+ case "AWS::RDS::DBSubnetGroup": return this.updateDBSubnetGroup(logicalId, physicalId, resourceType, properties, previousProperties, context?.maskSecrets);
169
+ case "AWS::RDS::DBCluster": return this.updateDBCluster(logicalId, physicalId, resourceType, properties, previousProperties, context);
170
+ case "AWS::RDS::DBInstance": return this.updateDBInstance(logicalId, physicalId, resourceType, properties, previousProperties, context);
138
171
  default: throw new ProvisioningError(`Unsupported resource type: ${resourceType}`, resourceType, logicalId, physicalId);
139
172
  }
140
173
  }
@@ -146,7 +179,7 @@ var RDSProvider = class {
146
179
  default: throw new ProvisioningError(`Unsupported resource type: ${resourceType}`, resourceType, logicalId, physicalId);
147
180
  }
148
181
  }
149
- async createDBSubnetGroup(logicalId, resourceType, properties) {
182
+ async createDBSubnetGroup(logicalId, resourceType, properties, mask) {
150
183
  this.logger.debug(`Creating DBSubnetGroup ${logicalId}`);
151
184
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
152
185
  const dbSubnetGroupName = properties["DBSubnetGroupName"] || generatedNameFor("AWS::RDS::DBSubnetGroup", logicalId);
@@ -168,10 +201,10 @@ var RDSProvider = class {
168
201
  };
169
202
  } catch (error) {
170
203
  const cause = error instanceof Error ? error : void 0;
171
- throw new ProvisioningError(`Failed to create DBSubnetGroup ${logicalId}: ${describeAwsFailure(error).detail}`, resourceType, logicalId, dbSubnetGroupName, cause);
204
+ throw this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to create DBSubnetGroup ${logicalId}: ${text}`, resourceType, logicalId, dbSubnetGroupName, cause));
172
205
  }
173
206
  }
174
- async updateDBSubnetGroup(logicalId, physicalId, resourceType, properties, previousProperties) {
207
+ async updateDBSubnetGroup(logicalId, physicalId, resourceType, properties, previousProperties, mask) {
175
208
  this.logger.debug(`Updating DBSubnetGroup ${logicalId}: ${physicalId}`);
176
209
  refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
177
210
  try {
@@ -196,7 +229,7 @@ var RDSProvider = class {
196
229
  };
197
230
  } catch (error) {
198
231
  const cause = error instanceof Error ? error : void 0;
199
- throw new ProvisioningError(`Failed to update DBSubnetGroup ${logicalId}: ${describeAwsFailure(error).detail}`, resourceType, logicalId, physicalId, cause);
232
+ throw this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to update DBSubnetGroup ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
200
233
  }
201
234
  }
202
235
  async deleteDBSubnetGroup(logicalId, physicalId, resourceType, context) {
@@ -212,10 +245,10 @@ var RDSProvider = class {
212
245
  return;
213
246
  }
214
247
  const cause = error instanceof Error ? error : void 0;
215
- throw new ProvisioningError(`Failed to delete DBSubnetGroup ${logicalId}: ${describeAwsFailure(error).detail}`, resourceType, logicalId, physicalId, cause);
248
+ throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to delete DBSubnetGroup ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
216
249
  }
217
250
  }
218
- async createDBCluster(logicalId, resourceType, properties) {
251
+ async createDBCluster(logicalId, resourceType, properties, mask) {
219
252
  this.logger.debug(`Creating DBCluster ${logicalId}`);
220
253
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
221
254
  const dbClusterIdentifier = properties["DBClusterIdentifier"] || generatedNameFor("AWS::RDS::DBCluster", logicalId);
@@ -277,7 +310,7 @@ var RDSProvider = class {
277
310
  ApplyImmediately: true
278
311
  }));
279
312
  } catch (disableError) {
280
- this.logger.debug(`Could not disable DeletionProtection on partially-created DBCluster ${dbClusterIdentifier}: ${describeAwsFailure(disableError).detail} (proceeding with DeleteDBCluster anyway)`);
313
+ this.logger.debug(maskerOrIdentity(mask)(`Could not disable DeletionProtection on partially-created DBCluster ${dbClusterIdentifier}: ${describeAwsFailure(disableError).detail} (proceeding with DeleteDBCluster anyway)`));
281
314
  }
282
315
  await this.getClient().send(new DeleteDBClusterCommand({
283
316
  DBClusterIdentifier: dbClusterIdentifier,
@@ -288,35 +321,35 @@ var RDSProvider = class {
288
321
  } catch (cleanupError) {
289
322
  const aws = pasteableAwsCommand();
290
323
  const unprotect = wantsDeletionProtection ? aws`aws rds modify-db-cluster --db-cluster-identifier ${dbClusterIdentifier} --no-deletion-protection --apply-immediately; ` : aws``;
291
- this.logger.warn(`Failed to delete partially-created DBCluster ${logicalId} (${dbClusterIdentifier}): ${describeAwsFailure(cleanupError).detail}. THE CLUSTER IS STILL RUNNING AND BILLING. Outside a rollback's re-create, the failed deploy's rollback journal records it for \`cdkd rollback --revert-failed\`${wantsDeletionProtection ? ", which cannot delete it while its DeletionProtection is on" : ""}; otherwise delete it yourself: ${aws`${unprotect}aws rds delete-db-cluster --db-cluster-identifier ${dbClusterIdentifier} --skip-final-snapshot`.render()}`);
324
+ this.logger.warn(`Failed to delete partially-created DBCluster ${logicalId} (${dbClusterIdentifier}): ${maskerOrIdentity(mask)(describeAwsFailure(cleanupError).detail)}. THE CLUSTER IS STILL RUNNING AND BILLING. Outside a rollback's re-create, the failed deploy's rollback journal records it for \`cdkd rollback --revert-failed\`${wantsDeletionProtection ? ", which cannot delete it while its DeletionProtection is on" : ""}; otherwise delete it yourself: ${aws`${unprotect}aws rds delete-db-cluster --db-cluster-identifier ${dbClusterIdentifier} --skip-final-snapshot`.render()}`);
292
325
  }
293
326
  throw innerError;
294
327
  }
295
328
  } catch (error) {
296
- const thrown = error instanceof ProvisioningError ? error : new ProvisioningError(`Failed to create DBCluster ${logicalId}: ${describeAwsFailure(error).detail}`, resourceType, logicalId, dbClusterIdentifier, error instanceof Error ? error : void 0);
329
+ const thrown = error instanceof ProvisioningError ? error : this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to create DBCluster ${logicalId}: ${text}`, resourceType, logicalId, dbClusterIdentifier, error instanceof Error ? error : void 0));
297
330
  if (clusterLeftBehind) markCreatedBeforeFailure(thrown, logicalId, resourceType, dbClusterIdentifier, createdResourceId);
298
331
  throw thrown;
299
332
  }
300
333
  }
301
- async updateDBCluster(logicalId, physicalId, resourceType, properties, previousProperties) {
334
+ async updateDBCluster(logicalId, physicalId, resourceType, properties, previousProperties, context) {
302
335
  this.logger.debug(`Updating DBCluster ${logicalId}: ${physicalId}`);
303
336
  refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
304
337
  try {
338
+ const vpcSgIds = await this.dbClusterSecurityGroupsToSend(logicalId, physicalId, resourceType, properties, previousProperties, context);
305
339
  const serverlessV2Config = properties["ServerlessV2ScalingConfiguration"];
306
340
  const hasServerlessV2 = serverlessV2Config !== void 0 && (serverlessV2Config.MinCapacity !== void 0 || serverlessV2Config.MaxCapacity !== void 0);
307
- const vpcSgIds = properties["VpcSecurityGroupIds"];
308
- const sendVpcSgIds = vpcSgIds !== void 0 && vpcSgIds.length > 0;
309
341
  const masterUserSecret = properties["MasterUserSecret"];
342
+ const sendCredentialSettings = masterCredentialSettingsChanged(properties, previousProperties, context);
310
343
  await this.getClient().send(new ModifyDBClusterCommand({
311
344
  DBClusterIdentifier: physicalId,
312
345
  EngineVersion: properties["EngineVersion"],
313
346
  DeletionProtection: properties["DeletionProtection"],
314
347
  BackupRetentionPeriod: clearOnUpdateRemoval(properties["BackupRetentionPeriod"] != null ? Number(properties["BackupRetentionPeriod"]) : void 0, previousProperties["BackupRetentionPeriod"] != null ? Number(previousProperties["BackupRetentionPeriod"]) : void 0, 1),
315
- ...sendVpcSgIds && { VpcSecurityGroupIds: vpcSgIds },
316
- MasterUserPassword: properties["MasterUserPassword"],
348
+ ...vpcSgIds !== void 0 && { VpcSecurityGroupIds: vpcSgIds },
349
+ MasterUserPassword: masterUserPasswordToSend(properties, previousProperties, context),
317
350
  Port: properties["Port"] != null ? Number(properties["Port"]) : void 0,
318
- ...properties["ManageMasterUserPassword"] !== void 0 && { ManageMasterUserPassword: properties["ManageMasterUserPassword"] },
319
- ...masterUserSecret?.KmsKeyId !== void 0 && { MasterUserSecretKmsKeyId: masterUserSecret.KmsKeyId },
351
+ ...sendCredentialSettings && properties["ManageMasterUserPassword"] !== void 0 && { ManageMasterUserPassword: properties["ManageMasterUserPassword"] },
352
+ ...sendCredentialSettings && masterUserSecret?.KmsKeyId !== void 0 && { MasterUserSecretKmsKeyId: masterUserSecret.KmsKeyId },
320
353
  ...properties["MonitoringRoleArn"] !== void 0 && { MonitoringRoleArn: properties["MonitoringRoleArn"] },
321
354
  MonitoringInterval: clearOnUpdateRemoval(properties["MonitoringInterval"] != null ? Number(properties["MonitoringInterval"]) : void 0, previousProperties["MonitoringInterval"] != null ? Number(previousProperties["MonitoringInterval"]) : void 0, 0),
322
355
  EnableIAMDatabaseAuthentication: properties["EnableIAMDatabaseAuthentication"],
@@ -328,6 +361,10 @@ var RDSProvider = class {
328
361
  }));
329
362
  this.logger.debug(`Successfully updated DBCluster ${logicalId}`);
330
363
  const described = await this.describeDBCluster(physicalId);
364
+ if (process.env["CDKD_NO_WAIT"] !== "true" && securityGroupListChanged(vpcSgIds, previousProperties["VpcSecurityGroupIds"])) {
365
+ await this.waitForSecurityGroupsApplied(physicalId, logicalId, vpcSgIds ?? []);
366
+ for (const member of described?.DBClusterMembers ?? []) if (member.DBInstanceIdentifier) await this.waitForMemberAfterSecurityGroupChange(member.DBInstanceIdentifier);
367
+ }
331
368
  if (described?.DBClusterArn) await this.applyTagDiff(described.DBClusterArn, resourceType, logicalId, previousProperties["Tags"], properties["Tags"]);
332
369
  return {
333
370
  physicalId,
@@ -341,8 +378,9 @@ var RDSProvider = class {
341
378
  })
342
379
  };
343
380
  } catch (error) {
381
+ if (error instanceof ProvisioningError) throw error;
344
382
  const cause = error instanceof Error ? error : void 0;
345
- throw new ProvisioningError(`Failed to update DBCluster ${logicalId}: ${describeAwsFailure(error).detail}`, resourceType, logicalId, physicalId, cause);
383
+ throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to update DBCluster ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
346
384
  }
347
385
  }
348
386
  async deleteDBCluster(logicalId, physicalId, resourceType, properties, context) {
@@ -383,6 +421,7 @@ var RDSProvider = class {
383
421
  flip,
384
422
  logger: this.logger,
385
423
  physicalId,
424
+ mask: context?.maskSecrets,
386
425
  guardName: "DeletionProtection",
387
426
  observe: async () => (await this.describeDBCluster(physicalId))?.DeletionProtection === true,
388
427
  disable: async () => {
@@ -395,11 +434,12 @@ var RDSProvider = class {
395
434
  });
396
435
  this.logger.debug(`Disabled DeletionProtection on DBCluster ${logicalId} before delete`);
397
436
  } catch (disableError) {
398
- if (!this.isNotFoundError(disableError, "DBClusterNotFoundFault")) this.logger.debug(`Could not disable deletion protection for DBCluster ${logicalId}: ${describeAwsFailure(disableError).detail}`);
437
+ if (!this.isNotFoundError(disableError, "DBClusterNotFoundFault")) this.logger.debug(maskerOrIdentity(context?.maskSecrets)(`Could not disable deletion protection for DBCluster ${logicalId}: ${describeAwsFailure(disableError).detail}`));
399
438
  }
400
439
  const globalClusterId = recordedGlobalClusterIdentifier(properties);
401
- if (globalClusterId !== void 0) detachedFrom = await this.detachFromGlobalCluster(logicalId, physicalId, globalClusterId, context?.removeProtection === true, progress) ? globalClusterId : void 0;
440
+ if (globalClusterId !== void 0) detachedFrom = await this.detachFromGlobalCluster(logicalId, physicalId, globalClusterId, context?.removeProtection === true, progress, maskerOrIdentity(context?.maskSecrets)) ? globalClusterId : void 0;
402
441
  const finalSnapshotId = context?.finalSnapshotIdentifier;
442
+ if (finalSnapshotId && flip.flippedOffByThisRun && !flip.deleteAccepted) await this.waitForProtectionOffBeforeFinalSnapshot(logicalId, physicalId);
403
443
  await this.getClient().send(new DeleteDBClusterCommand({
404
444
  DBClusterIdentifier: physicalId,
405
445
  ...finalSnapshotId ? {
@@ -425,11 +465,12 @@ var RDSProvider = class {
425
465
  return;
426
466
  }
427
467
  const cause = error instanceof Error ? error : void 0;
428
- const failure = new ProvisioningError(`Failed to delete DBCluster ${logicalId}: ${describeAwsFailure(error).detail}` + (detachedFrom !== void 0 ? " (it was already detached from its global cluster, and stays a standalone cluster)" : ""), resourceType, logicalId, physicalId, cause);
468
+ const detachedNote = detachedFrom !== void 0 ? " (it was already detached from its global cluster, and stays a standalone cluster)" : "";
469
+ const failure = this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to delete DBCluster ${logicalId}: ${text}${detachedNote}`, resourceType, logicalId, physicalId, cause));
429
470
  throw progress.stripped ? markDeleteStarted(failure) : failure;
430
471
  }
431
472
  }
432
- async createDBInstance(logicalId, resourceType, properties) {
473
+ async createDBInstance(logicalId, resourceType, properties, mask) {
433
474
  this.logger.debug(`Creating DBInstance ${logicalId}`);
434
475
  const tags = refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId);
435
476
  const dbInstanceIdentifier = properties["DBInstanceIdentifier"] || generatedNameFor("AWS::RDS::DBInstance", logicalId);
@@ -475,12 +516,12 @@ var RDSProvider = class {
475
516
  })
476
517
  };
477
518
  } catch (error) {
478
- const thrown = error instanceof ProvisioningError ? error : new ProvisioningError(`Failed to create DBInstance ${logicalId}: ${describeAwsFailure(error).detail}`, resourceType, logicalId, dbInstanceIdentifier, error instanceof Error ? error : void 0);
519
+ const thrown = error instanceof ProvisioningError ? error : this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to create DBInstance ${logicalId}: ${text}`, resourceType, logicalId, dbInstanceIdentifier, error instanceof Error ? error : void 0));
479
520
  if (instanceCreated) markCreatedBeforeFailure(thrown, logicalId, resourceType, dbInstanceIdentifier, createdResourceId);
480
521
  throw thrown;
481
522
  }
482
523
  }
483
- async updateDBInstance(logicalId, physicalId, resourceType, properties, previousProperties) {
524
+ async updateDBInstance(logicalId, physicalId, resourceType, properties, previousProperties, context) {
484
525
  this.logger.debug(`Updating DBInstance ${logicalId}: ${physicalId}`);
485
526
  refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
486
527
  try {
@@ -488,6 +529,8 @@ var RDSProvider = class {
488
529
  const prevEngineVersion = previousProperties["EngineVersion"];
489
530
  const allowMajorVersionUpgrade = newEngineVersion !== void 0 && newEngineVersion !== prevEngineVersion && prevEngineVersion !== void 0 && newEngineVersion.split(".")[0] !== prevEngineVersion.split(".")[0];
490
531
  const masterUserSecret = properties["MasterUserSecret"];
532
+ const sendCredentialSettings = masterCredentialSettingsChanged(properties, previousProperties, context);
533
+ const instancePassword = masterUserPasswordToSend(properties, previousProperties, context);
491
534
  await this.getClient().send(new ModifyDBInstanceCommand({
492
535
  DBInstanceIdentifier: physicalId,
493
536
  DBInstanceClass: properties["DBInstanceClass"],
@@ -500,10 +543,10 @@ var RDSProvider = class {
500
543
  ...allowMajorVersionUpgrade && { AllowMajorVersionUpgrade: true }
501
544
  },
502
545
  ...properties["Port"] !== void 0 && { DBPortNumber: Number(properties["Port"]) },
503
- ...properties["MasterUserPassword"] !== void 0 && { MasterUserPassword: properties["MasterUserPassword"] },
546
+ ...instancePassword !== void 0 && { MasterUserPassword: instancePassword },
504
547
  ...properties["VPCSecurityGroups"] !== void 0 && { VpcSecurityGroupIds: properties["VPCSecurityGroups"] },
505
- ...masterUserSecret?.KmsKeyId !== void 0 && { MasterUserSecretKmsKeyId: masterUserSecret.KmsKeyId },
506
- ...properties["ManageMasterUserPassword"] !== void 0 && { ManageMasterUserPassword: properties["ManageMasterUserPassword"] },
548
+ ...sendCredentialSettings && masterUserSecret?.KmsKeyId !== void 0 && { MasterUserSecretKmsKeyId: masterUserSecret.KmsKeyId },
549
+ ...sendCredentialSettings && properties["ManageMasterUserPassword"] !== void 0 && { ManageMasterUserPassword: properties["ManageMasterUserPassword"] },
507
550
  ...properties["MonitoringRoleArn"] !== void 0 && { MonitoringRoleArn: properties["MonitoringRoleArn"] },
508
551
  ...properties["MonitoringInterval"] != null && { MonitoringInterval: Number(properties["MonitoringInterval"]) },
509
552
  EnableIAMDatabaseAuthentication: properties["EnableIAMDatabaseAuthentication"]
@@ -522,7 +565,7 @@ var RDSProvider = class {
522
565
  };
523
566
  } catch (error) {
524
567
  const cause = error instanceof Error ? error : void 0;
525
- throw new ProvisioningError(`Failed to update DBInstance ${logicalId}: ${describeAwsFailure(error).detail}`, resourceType, logicalId, physicalId, cause);
568
+ throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to update DBInstance ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
526
569
  }
527
570
  }
528
571
  async deleteDBInstance(logicalId, physicalId, resourceType, properties, context) {
@@ -561,6 +604,7 @@ var RDSProvider = class {
561
604
  flip,
562
605
  logger: this.logger,
563
606
  physicalId,
607
+ mask: context?.maskSecrets,
564
608
  guardName: "DeletionProtection",
565
609
  observe: async () => (await this.describeDBInstance(physicalId))?.DeletionProtection === true,
566
610
  disable: async () => {
@@ -573,9 +617,10 @@ var RDSProvider = class {
573
617
  });
574
618
  this.logger.debug(`Disabled DeletionProtection on DBInstance ${logicalId} before delete`);
575
619
  } catch (disableError) {
576
- if (!this.isNotFoundError(disableError, "DBInstanceNotFoundFault")) this.logger.debug(`Could not disable deletion protection for DBInstance ${logicalId}: ${describeAwsFailure(disableError).detail}`);
620
+ if (!this.isNotFoundError(disableError, "DBInstanceNotFoundFault")) this.logger.debug(maskerOrIdentity(context?.maskSecrets)(`Could not disable deletion protection for DBInstance ${logicalId}: ${describeAwsFailure(disableError).detail}`));
577
621
  }
578
622
  const finalSnapshotId = properties?.["DBClusterIdentifier"] === void 0 ? context?.finalSnapshotIdentifier : void 0;
623
+ if (finalSnapshotId && flip.flippedOffByThisRun && !flip.deleteAccepted) await this.waitForInstanceProtectionOffBeforeFinalSnapshot(logicalId, physicalId);
579
624
  await this.getClient().send(new DeleteDBInstanceCommand({
580
625
  DBInstanceIdentifier: physicalId,
581
626
  ...finalSnapshotId ? {
@@ -597,7 +642,7 @@ var RDSProvider = class {
597
642
  return;
598
643
  }
599
644
  const cause = error instanceof Error ? error : void 0;
600
- throw new ProvisioningError(`Failed to delete DBInstance ${logicalId}: ${describeAwsFailure(error).detail}`, resourceType, logicalId, physicalId, cause);
645
+ throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to delete DBInstance ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
601
646
  }
602
647
  }
603
648
  async applyTagDiff(arn, resourceType, logicalId, oldTagsRaw, newTagsRaw) {
@@ -630,7 +675,20 @@ var RDSProvider = class {
630
675
  const message = error.message.toLowerCase();
631
676
  return name === faultName || message.includes("not found") || message.includes("does not exist");
632
677
  }
633
- async detachFromGlobalCluster(logicalId, physicalId, globalClusterId, removeProtection, progress) {
678
+ wrapCaughtError(mask, error, build) {
679
+ const m = maskerOrIdentity(mask);
680
+ const failure = describeAwsFailure(error);
681
+ if (!failure.redacted) return wrapMaskedAwsError(m, error, build);
682
+ this.logger.debug(m(build(m(failure.detail)).message));
683
+ const wrapped = build(`${m(failure.summary)}${relayedNameCollision(failure.detail)}`);
684
+ return error instanceof Error ? markRedactedCause(wrapped) : wrapped;
685
+ }
686
+ wrapGlobalClusterDetachError(error, mask, build) {
687
+ const failure = describeAwsFailure(error);
688
+ if (failure.redacted) this.logger.debug(mask(build(mask(failure.detail))));
689
+ return new GlobalClusterDetachError(build(failure.summary));
690
+ }
691
+ async detachFromGlobalCluster(logicalId, physicalId, globalClusterId, removeProtection, progress, mask) {
634
692
  let cluster = await this.describeDBCluster(physicalId);
635
693
  for (let i = 0; removeProtection && cluster?.DeletionProtection === true && i < 6; i++) {
636
694
  await this.sleep(5e3);
@@ -659,7 +717,7 @@ var RDSProvider = class {
659
717
  const name = awsErrorName(error);
660
718
  if (name === "GlobalClusterNotFoundFault") return false;
661
719
  if (name === "DBClusterNotFoundFault") break;
662
- if (!TRANSIENT_DETACH_FAULTS.has(name)) throw new GlobalClusterDetachError(safeMsg`detaching ${physicalId} from global cluster ${globalClusterId} failed (${describeAwsFailure(error).detail})`);
720
+ if (!TRANSIENT_DETACH_FAULTS.has(name)) throw this.wrapGlobalClusterDetachError(error, mask, (text) => safeMsg`detaching ${physicalId} from global cluster ${globalClusterId} failed (${text})`);
663
721
  await backOff();
664
722
  }
665
723
  for (;;) {
@@ -669,7 +727,7 @@ var RDSProvider = class {
669
727
  } catch (error) {
670
728
  const name = awsErrorName(error);
671
729
  if (name === "GlobalClusterNotFoundFault") stillMember = false;
672
- else if (!TRANSIENT_DETACH_FAULTS.has(name)) throw new GlobalClusterDetachError(safeMsg`could not confirm ${physicalId} left global cluster ${globalClusterId} (${describeAwsFailure(error).detail})`);
730
+ else if (!TRANSIENT_DETACH_FAULTS.has(name)) throw this.wrapGlobalClusterDetachError(error, mask, (text) => safeMsg`could not confirm ${physicalId} left global cluster ${globalClusterId} (${text})`);
673
731
  }
674
732
  if (stillMember === false) {
675
733
  const after = await this.describeDBCluster(physicalId);
@@ -683,9 +741,112 @@ var RDSProvider = class {
683
741
  async describeDBCluster(dbClusterIdentifier) {
684
742
  return (await this.getClient().send(new DescribeDBClustersCommand({ DBClusterIdentifier: dbClusterIdentifier }))).DBClusters?.[0];
685
743
  }
744
+ async dbClusterSecurityGroupsToSend(logicalId, physicalId, resourceType, properties, previousProperties, context) {
745
+ const desired = properties["VpcSecurityGroupIds"];
746
+ if (desired !== void 0) return desired.length > 0 ? desired : void 0;
747
+ const previous = previousProperties["VpcSecurityGroupIds"];
748
+ if (context?.desiredFromAwsReadback === true) return void 0;
749
+ if (!Array.isArray(previous) || previous.length === 0) return void 0;
750
+ let groupId;
751
+ let missing;
752
+ let awsError;
753
+ try {
754
+ const subnetGroupName = (await this.describeDBCluster(physicalId))?.DBSubnetGroup;
755
+ const vpcId = subnetGroupName ? (await this.getClient().send(new DescribeDBSubnetGroupsCommand({ DBSubnetGroupName: subnetGroupName }))).DBSubnetGroups?.[0]?.VpcId : void 0;
756
+ if (!subnetGroupName) missing = "the cluster reports no DB subnet group";
757
+ else if (!vpcId) missing = `DB subnet group ${subnetGroupName} reports no VPC`;
758
+ else {
759
+ groupId = (await this.getEc2Client().send(new DescribeSecurityGroupsCommand({ Filters: [{
760
+ Name: "vpc-id",
761
+ Values: [vpcId]
762
+ }, {
763
+ Name: "group-name",
764
+ Values: ["default"]
765
+ }] }))).SecurityGroups?.[0]?.GroupId;
766
+ if (!groupId) missing = `VPC ${vpcId} has no security group named default`;
767
+ }
768
+ } catch (error) {
769
+ awsError = error;
770
+ }
771
+ if (groupId === void 0) {
772
+ const mask = context?.maskSecrets ?? ((text) => text);
773
+ const failure = missing === void 0 ? describeAwsFailure(awsError) : void 0;
774
+ if (failure?.redacted === true) this.logger.debug(safeMsg`${logicalId}: the VPC default security group lookup failed: ${mask(failure.detail)}`);
775
+ const shown = mask(failure?.summary ?? "");
776
+ const refusal = new ProvisioningError(`Failed to update DBCluster ${logicalId}: VpcSecurityGroupIds was removed from the template, so the cluster moves to its VPC's default security group (as CloudFormation does), but cdkd could not find that group: ${missing ?? shown}. Declare VpcSecurityGroupIds in the template to choose the cluster's security groups.`, resourceType, logicalId, physicalId, awsError instanceof Error ? awsError : void 0);
777
+ if (missing !== void 0) throw markNonRetryable(refusal);
778
+ throw awsError instanceof Error && (failure?.redacted === true || shown !== (failure?.summary ?? "")) ? markRedactedCause(refusal) : refusal;
779
+ }
780
+ this.logger.warn(safeMsg`${logicalId}: VpcSecurityGroupIds was removed from the template; attaching the VPC's default security group ${groupId}, as CloudFormation does.`);
781
+ return [groupId];
782
+ }
686
783
  async describeDBInstance(dbInstanceIdentifier) {
687
784
  return (await this.getClient().send(new DescribeDBInstancesCommand({ DBInstanceIdentifier: dbInstanceIdentifier }))).DBInstances?.[0];
688
785
  }
786
+ async waitForMemberAfterSecurityGroupChange(dbInstanceIdentifier, maxWaitMs = 18e5) {
787
+ const startTime = Date.now();
788
+ let delay = 5e3;
789
+ while (Date.now() - startTime < maxWaitMs) {
790
+ let status;
791
+ try {
792
+ status = (await this.describeDBInstance(dbInstanceIdentifier))?.DBInstanceStatus;
793
+ } catch (error) {
794
+ if (this.isNotFoundError(error, "DBInstanceNotFoundFault")) return;
795
+ throw error;
796
+ }
797
+ if (status !== "modifying") return;
798
+ await this.sleep(delay);
799
+ delay = Math.min(delay * 2, 1e4);
800
+ }
801
+ throw new Error(`Timed out waiting for a member instance of the cluster to finish applying its new VPC security groups`);
802
+ }
803
+ async waitForSecurityGroupsApplied(dbClusterIdentifier, logicalId, expected, maxWaitMs = 18e5) {
804
+ const want = [...new Set(expected)].sort().join(" ");
805
+ const startTime = Date.now();
806
+ let delay = 5e3;
807
+ while (Date.now() - startTime < maxWaitMs) {
808
+ const cluster = await this.describeDBCluster(dbClusterIdentifier);
809
+ const groups = cluster?.VpcSecurityGroups ?? [];
810
+ const ids = groups.map((group) => group.VpcSecurityGroupId ?? "").sort().join(" ");
811
+ if (cluster !== void 0 && cluster.Status !== "modifying" && groups.every((group) => group.Status === "active") && ids === want) return;
812
+ this.logger.debug(safeMsg`DBCluster ${logicalId} security groups not settled yet (status ${cluster?.Status ?? "unknown"})`);
813
+ await this.sleep(delay);
814
+ delay = Math.min(delay * 2, 1e4);
815
+ }
816
+ throw new Error(`Timed out waiting for DBCluster ${logicalId} to apply its new VPC security groups`);
817
+ }
818
+ async waitForProtectionOffBeforeFinalSnapshot(logicalId, physicalId, maxWaitMs = FINAL_SNAPSHOT_SETTLE_WAIT_MS) {
819
+ const budgetMs = Math.min(maxWaitMs, enclosingDeadlineRemainingMs() - FINAL_SNAPSHOT_COMPENSATION_MARGIN_MS);
820
+ if (budgetMs <= 0) throw new Error(`--remove-protection turned DeletionProtection off, but the resource timeout leaves no time to wait for the cluster to return to 'available', which the final snapshot its DeletionPolicy asks for needs. The delete was not sent and the guard is put back; re-run the destroy with a longer --resource-timeout`);
821
+ const startTime = Date.now();
822
+ let delay = 5e3;
823
+ for (;;) {
824
+ const current = await this.describeDBCluster(physicalId);
825
+ if (current === void 0) return;
826
+ if (current.DeletionProtection === false && current.Status !== "modifying") return;
827
+ if (Date.now() - startTime + delay >= budgetMs) break;
828
+ this.logger.debug(safeMsg`DBCluster ${logicalId}: waiting for the DeletionProtection change to settle before the final snapshot (status ${current.Status ?? "unknown"})`);
829
+ await this.sleep(delay);
830
+ delay = Math.min(delay * 2, 1e4);
831
+ }
832
+ throw new Error(`--remove-protection turned DeletionProtection off, but the cluster did not return to 'available' within ${Math.max(1, Math.round(budgetMs / 6e4))} minutes, and the final snapshot its DeletionPolicy asks for needs it. The delete was not sent and the guard is put back; re-run the destroy once the cluster is 'available'`);
833
+ }
834
+ async waitForInstanceProtectionOffBeforeFinalSnapshot(logicalId, physicalId, maxWaitMs = FINAL_SNAPSHOT_SETTLE_WAIT_MS) {
835
+ const budgetMs = Math.min(maxWaitMs, enclosingDeadlineRemainingMs() - FINAL_SNAPSHOT_COMPENSATION_MARGIN_MS);
836
+ if (budgetMs <= 0) throw new Error(`--remove-protection turned DeletionProtection off, but the resource timeout leaves no time to wait for the instance to return to 'available', which the final snapshot its DeletionPolicy asks for needs. The delete was not sent and the guard is put back; re-run the destroy with a longer --resource-timeout`);
837
+ const startTime = Date.now();
838
+ let delay = 5e3;
839
+ for (;;) {
840
+ const current = await this.describeDBInstance(physicalId);
841
+ if (current === void 0) return;
842
+ if (current.DeletionProtection === false && current.DBInstanceStatus !== "modifying") return;
843
+ if (Date.now() - startTime + delay >= budgetMs) break;
844
+ this.logger.debug(safeMsg`DBInstance ${logicalId}: waiting for the DeletionProtection change to settle before the final snapshot (status ${current.DBInstanceStatus ?? "unknown"})`);
845
+ await this.sleep(delay);
846
+ delay = Math.min(delay * 2, 1e4);
847
+ }
848
+ throw new Error(`--remove-protection turned DeletionProtection off, but the instance did not return to 'available' within ${Math.max(1, Math.round(budgetMs / 6e4))} minutes, and the final snapshot its DeletionPolicy asks for needs it. The delete was not sent and the guard is put back; re-run the destroy once the instance is 'available'`);
849
+ }
689
850
  async waitForClusterAvailable(dbClusterIdentifier, maxWaitMs = 18e5) {
690
851
  const startTime = Date.now();
691
852
  let delay = 5e3;
@@ -960,7 +1121,12 @@ var RDSProvider = class {
960
1121
  return null;
961
1122
  }
962
1123
  };
1124
+ function securityGroupListChanged(sent, previous) {
1125
+ if (sent === void 0) return false;
1126
+ const before = Array.isArray(previous) ? previous.filter((id) => typeof id === "string") : [];
1127
+ return [...sent].sort().join(" ") !== [...before].sort().join(" ");
1128
+ }
963
1129
 
964
1130
  //#endregion
965
1131
  export { RDSProvider };
966
- //# sourceMappingURL=rds-provider-CmKbYAvr.js.map
1132
+ //# sourceMappingURL=rds-provider-ByCpdpUq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rds-provider-ByCpdpUq.js","names":[],"sources":["../src/provisioning/providers/rds-provider.ts"],"mappings":"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"}