@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,7 +1,8 @@
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, Qt as ambientClientDefaults, T as RESOURCE_NOT_FOUND, U as protectionFlipKey, W as rdsFamilyProtectionSite, j as normalizeAwsTagsToCfn, u as clearOnUpdateRemoval, 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, Qt as ambientClientDefaults, T as RESOURCE_NOT_FOUND, U as protectionFlipKey, W as rdsFamilyProtectionSite, j as normalizeAwsTagsToCfn, 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 { Fr as refuseMalformedDesiredTags, Lr as tagPlanWarning, Nr as planTagDiff, Rr as definedAttributes, 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, zr as definedAttributes } from "./deploy-engine-D9SDE-Pj.js";
5
+ import { DescribeSecurityGroupsCommand, EC2Client } from "@aws-sdk/client-ec2";
5
6
  import { AddTagsToResourceCommand, CreateDBClusterCommand, CreateDBInstanceCommand, CreateDBSubnetGroupCommand, DeleteDBClusterCommand, DeleteDBInstanceCommand, DeleteDBSubnetGroupCommand, DescribeDBClustersCommand, DescribeDBInstancesCommand, DescribeDBSubnetGroupsCommand, ListTagsForResourceCommand, ModifyDBClusterCommand, ModifyDBInstanceCommand, ModifyDBSubnetGroupCommand, NeptuneClient, RemoveTagsFromResourceCommand } from "@aws-sdk/client-neptune";
6
7
 
7
8
  //#region src/provisioning/providers/neptune-provider.ts
@@ -28,9 +29,12 @@ function instanceAttributes(instance) {
28
29
  function isDbIdentifier(id) {
29
30
  return id.length <= 63 && /^[A-Za-z](?:-?[A-Za-z0-9])*$/.test(id);
30
31
  }
32
+ const FINAL_SNAPSHOT_SETTLE_WAIT_MS = 9e5;
33
+ const FINAL_SNAPSHOT_COMPENSATION_MARGIN_MS = 6e4;
31
34
  var NeptuneProvider = class {
32
35
  neptuneClient;
33
36
  createClient;
37
+ ec2Client;
34
38
  providerRegion;
35
39
  logger = getLogger().child("NeptuneProvider");
36
40
  protectionFlips = new ProtectionFlipRegistry();
@@ -87,6 +91,13 @@ var NeptuneProvider = class {
87
91
  }
88
92
  return this.neptuneClient;
89
93
  }
94
+ getEc2Client() {
95
+ if (!this.ec2Client) this.ec2Client = new EC2Client({
96
+ ...ambientClientDefaults(),
97
+ ...this.providerRegion ? { region: this.providerRegion } : {}
98
+ });
99
+ return this.ec2Client;
100
+ }
90
101
  getCreateClient() {
91
102
  this.getClient();
92
103
  return this.createClient;
@@ -99,10 +110,10 @@ var NeptuneProvider = class {
99
110
  default: throw new ProvisioningError(`Unsupported resource type: ${resourceType}`, resourceType, logicalId);
100
111
  }
101
112
  }
102
- async update(logicalId, physicalId, resourceType, properties, previousProperties, _context) {
113
+ async update(logicalId, physicalId, resourceType, properties, previousProperties, context) {
103
114
  switch (resourceType) {
104
115
  case "AWS::Neptune::DBSubnetGroup": return this.updateDBSubnetGroup(logicalId, physicalId, resourceType, properties, previousProperties);
105
- case "AWS::Neptune::DBCluster": return this.updateDBCluster(logicalId, physicalId, resourceType, properties, previousProperties);
116
+ case "AWS::Neptune::DBCluster": return this.updateDBCluster(logicalId, physicalId, resourceType, properties, previousProperties, context);
106
117
  case "AWS::Neptune::DBInstance": return this.updateDBInstance(logicalId, physicalId, resourceType, properties, previousProperties);
107
118
  default: throw new ProvisioningError(`Unsupported resource type: ${resourceType}`, resourceType, logicalId, physicalId);
108
119
  }
@@ -216,12 +227,11 @@ var NeptuneProvider = class {
216
227
  throw thrown;
217
228
  }
218
229
  }
219
- async updateDBCluster(logicalId, physicalId, resourceType, properties, previousProperties) {
230
+ async updateDBCluster(logicalId, physicalId, resourceType, properties, previousProperties, context) {
220
231
  this.logger.debug(`Updating Neptune DBCluster ${logicalId}: ${physicalId}`);
221
232
  refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
222
233
  try {
223
- const vpcSgIds = properties["VpcSecurityGroupIds"];
224
- const sendVpcSgIds = vpcSgIds !== void 0 && vpcSgIds.length > 0;
234
+ const vpcSgIds = await this.dbClusterSecurityGroupsToSend(logicalId, physicalId, resourceType, properties, previousProperties, context);
225
235
  await this.getClient().send(new ModifyDBClusterCommand({
226
236
  DBClusterIdentifier: physicalId,
227
237
  EngineVersion: properties["EngineVersion"],
@@ -231,12 +241,16 @@ var NeptuneProvider = class {
231
241
  PreferredMaintenanceWindow: properties["PreferredMaintenanceWindow"],
232
242
  DBClusterParameterGroupName: properties["DBClusterParameterGroupName"],
233
243
  EnableIAMDatabaseAuthentication: properties["IamAuthEnabled"],
234
- ...sendVpcSgIds && { VpcSecurityGroupIds: vpcSgIds },
244
+ ...vpcSgIds !== void 0 && { VpcSecurityGroupIds: vpcSgIds },
235
245
  Port: properties["DBPort"] != null ? Number(properties["DBPort"]) : properties["Port"] != null ? Number(properties["Port"]) : void 0,
236
246
  ApplyImmediately: true
237
247
  }));
238
248
  this.logger.debug(`Successfully updated Neptune DBCluster ${logicalId}`);
239
249
  const described = await this.describeDBCluster(physicalId);
250
+ if (process.env["CDKD_NO_WAIT"] !== "true" && securityGroupListChanged(vpcSgIds, previousProperties["VpcSecurityGroupIds"])) {
251
+ await this.waitForSecurityGroupsApplied(physicalId, logicalId, vpcSgIds ?? []);
252
+ for (const member of described?.DBClusterMembers ?? []) if (member.DBInstanceIdentifier) await this.waitForMemberAfterSecurityGroupChange(member.DBInstanceIdentifier);
253
+ }
240
254
  if (described?.DBClusterArn) await this.applyTagDiff(described.DBClusterArn, resourceType, logicalId, previousProperties["Tags"], properties["Tags"]);
241
255
  return {
242
256
  physicalId,
@@ -244,6 +258,7 @@ var NeptuneProvider = class {
244
258
  attributes: clusterAttributes(described)
245
259
  };
246
260
  } catch (error) {
261
+ if (error instanceof ProvisioningError) throw error;
247
262
  const cause = error instanceof Error ? error : void 0;
248
263
  throw new ProvisioningError(`Failed to update Neptune DBCluster ${logicalId}: ${describeAwsFailure(error).detail}`, resourceType, logicalId, physicalId, cause);
249
264
  }
@@ -284,6 +299,7 @@ var NeptuneProvider = class {
284
299
  flip,
285
300
  logger: this.logger,
286
301
  physicalId,
302
+ mask: context?.maskSecrets,
287
303
  guardName: "DeletionProtection",
288
304
  observe: async () => (await this.describeDBCluster(physicalId))?.DeletionProtection === true,
289
305
  disable: async () => {
@@ -296,9 +312,10 @@ var NeptuneProvider = class {
296
312
  });
297
313
  this.logger.debug(`Disabled DeletionProtection on Neptune DBCluster ${logicalId} before delete`);
298
314
  } catch (disableError) {
299
- if (!this.isNotFoundError(disableError, "DBClusterNotFoundFault")) this.logger.debug(`Could not disable deletion protection for Neptune DBCluster ${logicalId}: ${describeAwsFailure(disableError).detail}`);
315
+ if (!this.isNotFoundError(disableError, "DBClusterNotFoundFault")) this.logger.debug(maskerOrIdentity(context?.maskSecrets)(`Could not disable deletion protection for Neptune DBCluster ${logicalId}: ${describeAwsFailure(disableError).detail}`));
300
316
  }
301
317
  const finalSnapshotId = context?.finalSnapshotIdentifier;
318
+ if (finalSnapshotId && flip.flippedOffByThisRun && !flip.deleteAccepted) await this.waitForProtectionOffBeforeFinalSnapshot(logicalId, physicalId);
302
319
  await this.getClient().send(new DeleteDBClusterCommand({
303
320
  DBClusterIdentifier: physicalId,
304
321
  ...finalSnapshotId ? {
@@ -419,6 +436,7 @@ var NeptuneProvider = class {
419
436
  flip,
420
437
  logger: this.logger,
421
438
  physicalId,
439
+ mask: context?.maskSecrets,
422
440
  guardName: "DeletionProtection",
423
441
  observe: async () => (await this.describeDBInstance(physicalId))?.DeletionProtection === true,
424
442
  disable: async () => {
@@ -431,7 +449,7 @@ var NeptuneProvider = class {
431
449
  });
432
450
  this.logger.debug(`Disabled DeletionProtection on Neptune DBInstance ${logicalId} before delete`);
433
451
  } catch (disableError) {
434
- if (!this.isNotFoundError(disableError, "DBInstanceNotFoundFault")) this.logger.debug(`Could not disable deletion protection for ${physicalId}: ${describeAwsFailure(disableError).detail}`);
452
+ if (!this.isNotFoundError(disableError, "DBInstanceNotFoundFault")) this.logger.debug(maskerOrIdentity(context?.maskSecrets)(`Could not disable deletion protection for ${physicalId}: ${describeAwsFailure(disableError).detail}`));
435
453
  }
436
454
  await this.getClient().send(new DeleteDBInstanceCommand({
437
455
  DBInstanceIdentifier: physicalId,
@@ -534,9 +552,96 @@ var NeptuneProvider = class {
534
552
  async describeDBCluster(dbClusterIdentifier) {
535
553
  return (await this.getClient().send(new DescribeDBClustersCommand({ DBClusterIdentifier: dbClusterIdentifier }))).DBClusters?.[0];
536
554
  }
555
+ async dbClusterSecurityGroupsToSend(logicalId, physicalId, resourceType, properties, previousProperties, context) {
556
+ const desired = properties["VpcSecurityGroupIds"];
557
+ if (desired !== void 0) return desired.length > 0 ? desired : void 0;
558
+ const previous = previousProperties["VpcSecurityGroupIds"];
559
+ if (context?.desiredFromAwsReadback === true) return void 0;
560
+ if (!Array.isArray(previous) || previous.length === 0) return void 0;
561
+ let groupId;
562
+ let missing;
563
+ let awsError;
564
+ try {
565
+ const subnetGroupName = (await this.describeDBCluster(physicalId))?.DBSubnetGroup;
566
+ const vpcId = subnetGroupName ? (await this.getClient().send(new DescribeDBSubnetGroupsCommand({ DBSubnetGroupName: subnetGroupName }))).DBSubnetGroups?.[0]?.VpcId : void 0;
567
+ if (!subnetGroupName) missing = "the cluster reports no DB subnet group";
568
+ else if (!vpcId) missing = `DB subnet group ${subnetGroupName} reports no VPC`;
569
+ else {
570
+ groupId = (await this.getEc2Client().send(new DescribeSecurityGroupsCommand({ Filters: [{
571
+ Name: "vpc-id",
572
+ Values: [vpcId]
573
+ }, {
574
+ Name: "group-name",
575
+ Values: ["default"]
576
+ }] }))).SecurityGroups?.[0]?.GroupId;
577
+ if (!groupId) missing = `VPC ${vpcId} has no security group named default`;
578
+ }
579
+ } catch (error) {
580
+ awsError = error;
581
+ }
582
+ if (groupId === void 0) {
583
+ const mask = context?.maskSecrets ?? ((text) => text);
584
+ const failure = missing === void 0 ? describeAwsFailure(awsError) : void 0;
585
+ if (failure?.redacted === true) this.logger.debug(safeMsg`${logicalId}: the VPC default security group lookup failed: ${mask(failure.detail)}`);
586
+ const shown = mask(failure?.summary ?? "");
587
+ const refusal = new ProvisioningError(`Failed to update Neptune 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);
588
+ if (missing !== void 0) throw markNonRetryable(refusal);
589
+ throw awsError instanceof Error && (failure?.redacted === true || shown !== (failure?.summary ?? "")) ? markRedactedCause(refusal) : refusal;
590
+ }
591
+ this.logger.warn(safeMsg`${logicalId}: VpcSecurityGroupIds was removed from the template; attaching the VPC's default security group ${groupId}, as CloudFormation does.`);
592
+ return [groupId];
593
+ }
537
594
  async describeDBInstance(dbInstanceIdentifier) {
538
595
  return (await this.getClient().send(new DescribeDBInstancesCommand({ DBInstanceIdentifier: dbInstanceIdentifier }))).DBInstances?.[0];
539
596
  }
597
+ async waitForMemberAfterSecurityGroupChange(dbInstanceIdentifier, maxWaitMs = 18e5) {
598
+ const startTime = Date.now();
599
+ let delay = 5e3;
600
+ while (Date.now() - startTime < maxWaitMs) {
601
+ let status;
602
+ try {
603
+ status = (await this.describeDBInstance(dbInstanceIdentifier))?.DBInstanceStatus;
604
+ } catch (error) {
605
+ if (this.isNotFoundError(error, "DBInstanceNotFoundFault")) return;
606
+ throw error;
607
+ }
608
+ if (status !== "modifying") return;
609
+ await this.sleep(delay);
610
+ delay = Math.min(delay * 2, 1e4);
611
+ }
612
+ throw new Error(`Timed out waiting for a member instance of the cluster to finish applying its new VPC security groups`);
613
+ }
614
+ async waitForSecurityGroupsApplied(dbClusterIdentifier, logicalId, expected, maxWaitMs = 18e5) {
615
+ const want = [...new Set(expected)].sort().join(" ");
616
+ const startTime = Date.now();
617
+ let delay = 5e3;
618
+ while (Date.now() - startTime < maxWaitMs) {
619
+ const cluster = await this.describeDBCluster(dbClusterIdentifier);
620
+ const groups = cluster?.VpcSecurityGroups ?? [];
621
+ const ids = groups.map((group) => group.VpcSecurityGroupId ?? "").sort().join(" ");
622
+ if (cluster !== void 0 && cluster.Status !== "modifying" && groups.every((group) => group.Status === "active") && ids === want) return;
623
+ this.logger.debug(safeMsg`Neptune DBCluster ${logicalId} security groups not settled yet (status ${cluster?.Status ?? "unknown"})`);
624
+ await this.sleep(delay);
625
+ delay = Math.min(delay * 2, 1e4);
626
+ }
627
+ throw new Error(`Timed out waiting for Neptune DBCluster ${logicalId} to apply its new VPC security groups`);
628
+ }
629
+ async waitForProtectionOffBeforeFinalSnapshot(logicalId, physicalId, maxWaitMs = FINAL_SNAPSHOT_SETTLE_WAIT_MS) {
630
+ const budgetMs = Math.min(maxWaitMs, enclosingDeadlineRemainingMs() - FINAL_SNAPSHOT_COMPENSATION_MARGIN_MS);
631
+ 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`);
632
+ const startTime = Date.now();
633
+ let delay = 5e3;
634
+ for (;;) {
635
+ const current = await this.describeDBCluster(physicalId);
636
+ if (current === void 0) return;
637
+ if (current.DeletionProtection === false && current.Status !== "modifying") return;
638
+ if (Date.now() - startTime + delay >= budgetMs) break;
639
+ this.logger.debug(safeMsg`Neptune DBCluster ${logicalId}: waiting for the DeletionProtection change to settle before the final snapshot (status ${current.Status ?? "unknown"})`);
640
+ await this.sleep(delay);
641
+ delay = Math.min(delay * 2, 1e4);
642
+ }
643
+ 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'`);
644
+ }
540
645
  async waitForClusterAvailable(dbClusterIdentifier, maxWaitMs = 18e5) {
541
646
  const startTime = Date.now();
542
647
  let delay = 5e3;
@@ -738,7 +843,12 @@ var NeptuneProvider = class {
738
843
  return null;
739
844
  }
740
845
  };
846
+ function securityGroupListChanged(sent, previous) {
847
+ if (sent === void 0) return false;
848
+ const before = Array.isArray(previous) ? previous.filter((id) => typeof id === "string") : [];
849
+ return [...sent].sort().join(" ") !== [...before].sort().join(" ");
850
+ }
741
851
 
742
852
  //#endregion
743
853
  export { NeptuneProvider };
744
- //# sourceMappingURL=neptune-provider-DzTl6-74.js.map
854
+ //# sourceMappingURL=neptune-provider-DjVgEWGf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neptune-provider-DjVgEWGf.js","names":[],"sources":["../src/provisioning/providers/neptune-provider.ts"],"mappings":"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"}