@go-to-k/cdkd 0.284.23 → 0.284.24
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.
- package/dist/{asg-provider-Cucl2K22.js → asg-provider-Bh0odlSk.js} +2 -2
- package/dist/{asg-provider-Cucl2K22.js.map → asg-provider-Bh0odlSk.js.map} +1 -1
- package/dist/cli.js +84 -14
- package/dist/cli.js.map +1 -1
- package/dist/{deploy-engine-HfFU96oJ.js → deploy-engine-BJQbni1s.js} +167 -26
- package/dist/{deploy-engine-HfFU96oJ.js.map → deploy-engine-BJQbni1s.js.map} +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
|
@@ -16860,7 +16860,7 @@ var CloudControlProvider = class {
|
|
|
16860
16860
|
if (context?.finalSnapshotIdentifier !== void 0) throw new ProvisioningError(`${logicalId} (${resourceType}) requires a final snapshot (DeletionPolicy: Snapshot), but the Cloud Control API delete route has no final-snapshot parameter. Re-run with --skip-final-snapshot after snapshotting manually, or retain the resource.`, resourceType, logicalId, physicalId);
|
|
16861
16861
|
if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
|
|
16862
16862
|
this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
|
|
16863
|
-
const { ASGProvider } = await import("./asg-provider-
|
|
16863
|
+
const { ASGProvider } = await import("./asg-provider-Bh0odlSk.js").then((n) => n.n);
|
|
16864
16864
|
return await new ASGProvider().delete(logicalId, physicalId, resourceType, _properties, context);
|
|
16865
16865
|
}
|
|
16866
16866
|
const isProtectedEc2Instance = context?.removeProtection === true && resourceType === "AWS::EC2::Instance";
|
|
@@ -17575,6 +17575,47 @@ const CR_NO_SERVICE_TOKEN_SKIP_REASON = "no ServiceToken in state — Delete han
|
|
|
17575
17575
|
*/
|
|
17576
17576
|
const CR_DELETE_INVOKE_FAILED_SKIP_REASON = "Delete request to the handler did not complete — resource unproven";
|
|
17577
17577
|
/**
|
|
17578
|
+
* Fourth sibling of the three above, for the arm where the handler RAN, was
|
|
17579
|
+
* reached, and answered `Status: 'FAILED'` (issue
|
|
17580
|
+
* [#2054](https://github.com/go-to-k/cdkd/issues/2054)).
|
|
17581
|
+
*
|
|
17582
|
+
* The terminal FAILED arm used to warn and fall through to `return undefined`,
|
|
17583
|
+
* which `deleteSkipReason` reads as DELETED — so cdkd dropped the state
|
|
17584
|
+
* record, printed the row as deleted and exited 0 over a resource the handler
|
|
17585
|
+
* had EXPLICITLY said it did not delete. It is the same silent-orphan class
|
|
17586
|
+
* {@link CR_DELETE_INVOKE_FAILED_SKIP_REASON} removed from the throw arm,
|
|
17587
|
+
* reached through the handler's RESPONSE instead.
|
|
17588
|
+
*
|
|
17589
|
+
* **Unconditional, with no already-gone classifier.** A handler that reports
|
|
17590
|
+
* FAILED because the thing it manages was already absent is a real and common
|
|
17591
|
+
* shape, and today's leniency lets those destroys finish green. Classifying
|
|
17592
|
+
* the reason to keep them green was rejected: the reason is free text a user's
|
|
17593
|
+
* handler writes, so any classifier is a guess, and a wrong guess
|
|
17594
|
+
* re-introduces exactly the orphan this arm exists to stop.
|
|
17595
|
+
*
|
|
17596
|
+
* This is therefore a COMPATIBILITY BREAK: a destroy whose delete handler
|
|
17597
|
+
* reports FAILED now exits 2 with the record kept, where it used to exit 0
|
|
17598
|
+
* with the record dropped.
|
|
17599
|
+
*
|
|
17600
|
+
* **The two callers have DIFFERENT escape hatches, and only one of them is a
|
|
17601
|
+
* flag.** On `cdkd deploy` the skip is forced back to exit 0 by
|
|
17602
|
+
* `--allow-unaddressed` (issue #1960, the flag that settled the analogous
|
|
17603
|
+
* exit-code question). `cdkd destroy` has no such flag — a skip raises
|
|
17604
|
+
* `PartialFailureError` unconditionally (`src/cli/commands/destroy.ts`) — so
|
|
17605
|
+
* there the remedy is the one that command's own summary names: confirm the
|
|
17606
|
+
* resource is gone, then drop the record with `cdkd state orphan <stack>`.
|
|
17607
|
+
* Messages must not offer the flag on the destroy path, which is the path this
|
|
17608
|
+
* arm is mostly reached from.
|
|
17609
|
+
*
|
|
17610
|
+
* **Fixed wording, no interpolation**, for the reason spelled out on
|
|
17611
|
+
* {@link CR_DELETE_INVOKE_FAILED_SKIP_REASON}: the handler's own `Reason` is a
|
|
17612
|
+
* user-authored string, it goes out on the `logger.warn` beside this, and a
|
|
17613
|
+
* `Reason` carrying `does not exist` / `not found` would make the deploy-side
|
|
17614
|
+
* replacement sites classify the skip as "already gone" and drop the record
|
|
17615
|
+
* one layer further out.
|
|
17616
|
+
*/
|
|
17617
|
+
const CR_DELETE_HANDLER_FAILED_SKIP_REASON = "Delete handler reported FAILED — resource unproven";
|
|
17618
|
+
/**
|
|
17578
17619
|
* The deploy-side caveat both skip warnings in this file carry (issue
|
|
17579
17620
|
* [#1762](https://github.com/go-to-k/cdkd/issues/1762)).
|
|
17580
17621
|
*
|
|
@@ -17585,6 +17626,29 @@ const CR_DELETE_INVOKE_FAILED_SKIP_REASON = "Delete request to the handler did n
|
|
|
17585
17626
|
* torn down by hand. Mirrors the caveat `compositeIdFormatMessage` already
|
|
17586
17627
|
* carries for the composite-id family.
|
|
17587
17628
|
*/
|
|
17629
|
+
/**
|
|
17630
|
+
* The bound BOTH delete-path skips in this file have to state (found in review
|
|
17631
|
+
* of issue [#2054](https://github.com/go-to-k/cdkd/issues/2054)).
|
|
17632
|
+
*
|
|
17633
|
+
* A skip KEEPS the state record, and the natural thing to promise is that a
|
|
17634
|
+
* re-run retries the handler. **On `cdkd destroy` that promise is false**, and
|
|
17635
|
+
* it is false in the direction that matters. `destroy-runner.ts` walks every
|
|
17636
|
+
* reverse-DAG level regardless of skips, so the SAME run that skipped the
|
|
17637
|
+
* custom resource goes on to delete its backing Lambda. The next
|
|
17638
|
+
* `cdkd destroy` therefore reaches the issue-#804 pre-check above, finds the
|
|
17639
|
+
* function gone, and treats the resource as already deleted — dropping the
|
|
17640
|
+
* record and exiting 0 over a resource the handler explicitly refused to
|
|
17641
|
+
* remove, which is the very silent orphan #2054 removed one run earlier.
|
|
17642
|
+
*
|
|
17643
|
+
* Closing it properly means making that pre-check answer `'skipped'` when the
|
|
17644
|
+
* teardown was never PROVEN, which needs a durable "a prior run skipped this"
|
|
17645
|
+
* signal. Every candidate is outside this file: a `ResourceState` field (a
|
|
17646
|
+
* state-schema bump), or a `DeleteContext` flag threaded from
|
|
17647
|
+
* `destroy-runner.ts`. So the record is described here as what it actually is
|
|
17648
|
+
* — a POINTER to something that has to be torn down by hand — rather than as a
|
|
17649
|
+
* retry that will not happen.
|
|
17650
|
+
*/
|
|
17651
|
+
const CR_SKIP_NOT_A_RETRY_CAVEAT = "NOTE this record is a POINTER, not a retry: the same destroy run deletes the backing Lambda, so the next 'cdkd destroy' finds the handler gone and DROPS this record (issue 804 pre-check). Tear the resource down by hand, then clear the stack's records with 'cdkd state orphan <stack>' — that command drops EVERY record for the stack, not just this one.";
|
|
17588
17652
|
const DEPLOY_SKIP_CAVEAT = "NOTE this arm is ALSO reached from cdkd deploy. Since issue 1762 the DELETE of a resource removed from the template behaves like destroy — the record is KEPT and the next deploy re-attempts it — but a REPLACEMENT / rollback delete FAILS the resource instead (https://github.com/go-to-k/cdkd/issues/1762), leaving the old one untracked; there, tear the resource down by hand.";
|
|
17589
17653
|
/**
|
|
17590
17654
|
* Type guard to validate Lambda response payload structure
|
|
@@ -17898,25 +17962,50 @@ const CR_LOG_TAIL_BOILERPLATE = /^(START|END|REPORT|XRAY|INIT_START|INIT_REPORT|
|
|
|
17898
17962
|
*/
|
|
17899
17963
|
const SNS_SERVICE_TOKEN_ARN_RE = /^arn:aws[a-z0-9-]*:sns:/;
|
|
17900
17964
|
/**
|
|
17965
|
+
* Account segment {@link syntheticStackId} falls back to when STS could not
|
|
17966
|
+
* answer (`AwsAccountInfo.fabricated`, issue
|
|
17967
|
+
* [#1730](https://github.com/go-to-k/cdkd/issues/1730)).
|
|
17968
|
+
*
|
|
17969
|
+
* The Cloud Control enrichment sites answer a fabricated account by OMITTING
|
|
17970
|
+
* the value they would have built. That is not available here — `StackId` is a
|
|
17971
|
+
* REQUIRED member of the custom-resource request payload — so the choice is
|
|
17972
|
+
* between two wrong strings, and the honest one is the one a handler cannot
|
|
17973
|
+
* mistake for real. `getAccountInfo`'s own fallback id (`123456789012`) is
|
|
17974
|
+
* shaped exactly like a live account; the all-zero id is not a valid AWS
|
|
17975
|
+
* account and reads as the placeholder it is.
|
|
17976
|
+
*/
|
|
17977
|
+
const SYNTHETIC_STACK_ID_PLACEHOLDER_ACCOUNT = "000000000000";
|
|
17978
|
+
/**
|
|
17901
17979
|
* The synthetic `StackId` handed to a custom-resource handler in place of the
|
|
17902
17980
|
* CloudFormation stack ARN cdkd does not have.
|
|
17903
17981
|
*
|
|
17904
|
-
*
|
|
17905
|
-
*
|
|
17906
|
-
*
|
|
17907
|
-
*
|
|
17908
|
-
*
|
|
17909
|
-
*
|
|
17910
|
-
*
|
|
17911
|
-
*
|
|
17912
|
-
*
|
|
17913
|
-
*
|
|
17982
|
+
* Partition / region / account are synthesized TOGETHER from the real deploy
|
|
17983
|
+
* context (issue [#1866](https://github.com/go-to-k/cdkd/issues/1866)). Every
|
|
17984
|
+
* segment used to be fabricated — `arn:aws:cloudformation:us-east-1:0000...`
|
|
17985
|
+
* regardless of where the deploy actually ran — and CloudFormation-authored
|
|
17986
|
+
* handlers DO read `event.StackId`: to re-derive the region / account they are
|
|
17987
|
+
* running in, to build ARNs, to name log streams, to correlate a response.
|
|
17988
|
+
* Each of those read a coherent-looking ARN and got an answer that addresses
|
|
17989
|
+
* nothing.
|
|
17990
|
+
*
|
|
17991
|
+
* Deriving only ONE segment is worse than deriving none, which is why issue
|
|
17992
|
+
* #1815 deliberately left the hardcoded `arn:aws:` prefix alone rather than
|
|
17993
|
+
* partition-deriving it in isolation: `arn:aws-cn:cloudformation:us-east-1:…`
|
|
17994
|
+
* is a China partition carrying a commercial region, strictly LESS coherent
|
|
17995
|
+
* than a uniformly-commercial fabrication. So this takes the whole
|
|
17996
|
+
* {@link AwsAccountInfo} — where `partition` is already derived FROM `region`
|
|
17997
|
+
* — rather than any one field.
|
|
17998
|
+
*
|
|
17999
|
+
* The stack-NAME segment stays synthetic (`cdkd-<logicalId>`): cdkd has no
|
|
18000
|
+
* CloudFormation stack, so there is no real value to put there.
|
|
17914
18001
|
*
|
|
17915
18002
|
* Factored into one place so the rationale cannot go stale against two other
|
|
17916
|
-
* copies: the create / update / delete request builders all use it
|
|
18003
|
+
* copies: the create / update / delete request builders all use it, through
|
|
18004
|
+
* {@link CustomResourceProvider.resolveSyntheticStackId}.
|
|
17917
18005
|
*/
|
|
17918
|
-
function syntheticStackId(logicalId) {
|
|
17919
|
-
|
|
18006
|
+
function syntheticStackId(logicalId, accountInfo) {
|
|
18007
|
+
const account = accountInfo.fabricated ? SYNTHETIC_STACK_ID_PLACEHOLDER_ACCOUNT : accountInfo.accountId;
|
|
18008
|
+
return `arn:${accountInfo.partition}:cloudformation:${accountInfo.region}:${account}:stack/cdkd-${logicalId}/cdkd`;
|
|
17920
18009
|
}
|
|
17921
18010
|
/**
|
|
17922
18011
|
* `true` when the tail contains at least one line the HANDLER produced.
|
|
@@ -18109,11 +18198,29 @@ var CustomResourceProvider = class CustomResourceProvider {
|
|
|
18109
18198
|
* the placeholder `PutObject`'s `withRetry` takes no knob either.
|
|
18110
18199
|
*/
|
|
18111
18200
|
preDeliveryAuthzMaxRetries = 26;
|
|
18201
|
+
/**
|
|
18202
|
+
* The region the client bag this provider was built from was EXPLICITLY
|
|
18203
|
+
* configured with, or `undefined` (issue #1866).
|
|
18204
|
+
*
|
|
18205
|
+
* Captured in the constructor, beside the clients, rather than read per call:
|
|
18206
|
+
* `cdkd deploy` builds a region-configured `AwsClients` and a fresh
|
|
18207
|
+
* `ProviderRegistry` per stack, and with `--stack-concurrency` (default 4) it
|
|
18208
|
+
* swaps the process-global bag while other stacks are mid-flight — so a
|
|
18209
|
+
* call-time read can hand a SIBLING stack's region. Pairing it with the
|
|
18210
|
+
* clients keeps the two consistent by construction.
|
|
18211
|
+
*
|
|
18212
|
+
* `AwsClients.configuredRegion` is deliberately the only region a client bag
|
|
18213
|
+
* will answer (see its own note on why `client.config.region()` is unsound),
|
|
18214
|
+
* and `undefined` means no region was pinned anywhere — which
|
|
18215
|
+
* {@link getAccountInfo} then resolves from `AWS_REGION` itself.
|
|
18216
|
+
*/
|
|
18217
|
+
configuredRegion;
|
|
18112
18218
|
constructor(config) {
|
|
18113
18219
|
const awsClients = getAwsClients();
|
|
18114
18220
|
this.lambdaClient = awsClients.lambda;
|
|
18115
18221
|
this.snsClient = awsClients.sns;
|
|
18116
18222
|
this.s3Client = awsClients.s3;
|
|
18223
|
+
this.configuredRegion = awsClients.configuredRegion;
|
|
18117
18224
|
this.responseBucket = config?.responseBucket;
|
|
18118
18225
|
this.responsePrefix = config?.responsePrefix ?? "custom-resource-responses";
|
|
18119
18226
|
this.asyncResponseTimeoutMs = config?.asyncResponseTimeoutMs ?? CustomResourceProvider.DEFAULT_ASYNC_RESPONSE_TIMEOUT_MS;
|
|
@@ -18211,6 +18318,22 @@ var CustomResourceProvider = class CustomResourceProvider {
|
|
|
18211
18318
|
return this.responseClientResolveInFlight;
|
|
18212
18319
|
}
|
|
18213
18320
|
/**
|
|
18321
|
+
* Resolve {@link syntheticStackId} against this deploy's REAL account /
|
|
18322
|
+
* region / partition (issue #1866).
|
|
18323
|
+
*
|
|
18324
|
+
* `getAccountInfo` never throws — it answers a `fabricated` account when STS
|
|
18325
|
+
* cannot, which {@link SYNTHETIC_STACK_ID_PLACEHOLDER_ACCOUNT} handles — so
|
|
18326
|
+
* this cannot turn a working deploy into a failing one on the credential
|
|
18327
|
+
* path. It is resolved ONCE per `create` / `update` / `delete` rather than
|
|
18328
|
+
* per invocation attempt: the value does not vary between attempts, and the
|
|
18329
|
+
* request builder the retry loop re-runs is synchronous.
|
|
18330
|
+
*/
|
|
18331
|
+
async resolveSyntheticStackId(logicalId) {
|
|
18332
|
+
const accountInfo = await getAccountInfo(this.configuredRegion);
|
|
18333
|
+
if (accountInfo.fabricated) this.logger.warn(`Custom resource ${logicalId}: STS did not report this deploy's account id, so the synthetic StackId handed to the handler carries the placeholder account ${SYNTHETIC_STACK_ID_PLACEHOLDER_ACCOUNT}. A handler that parses StackId to re-derive the account it is running in will not get a usable one — fix the credentials (or set AWS_ACCOUNT_ID) and re-run.`);
|
|
18334
|
+
return syntheticStackId(logicalId, accountInfo);
|
|
18335
|
+
}
|
|
18336
|
+
/**
|
|
18214
18337
|
* Create a custom resource by invoking its Lambda handler
|
|
18215
18338
|
*/
|
|
18216
18339
|
async create(logicalId, resourceType, properties) {
|
|
@@ -18225,7 +18348,7 @@ var CustomResourceProvider = class CustomResourceProvider {
|
|
|
18225
18348
|
ResponseURL: invocation.responseURL,
|
|
18226
18349
|
ResourceType: resourceType,
|
|
18227
18350
|
LogicalResourceId: logicalId,
|
|
18228
|
-
StackId:
|
|
18351
|
+
StackId: invocation.stackId,
|
|
18229
18352
|
ResourceProperties: this.stringifyProperties(properties)
|
|
18230
18353
|
}));
|
|
18231
18354
|
if (cfnResponse.Status === "FAILED") throw new Error(`Custom resource handler returned FAILED: ${cfnResponse.Reason || "Unknown reason"}`);
|
|
@@ -18257,7 +18380,7 @@ var CustomResourceProvider = class CustomResourceProvider {
|
|
|
18257
18380
|
ResourceType: resourceType,
|
|
18258
18381
|
LogicalResourceId: logicalId,
|
|
18259
18382
|
PhysicalResourceId: physicalId,
|
|
18260
|
-
StackId:
|
|
18383
|
+
StackId: invocation.stackId,
|
|
18261
18384
|
ResourceProperties: this.stringifyProperties(properties),
|
|
18262
18385
|
OldResourceProperties: this.stringifyProperties(previousProperties)
|
|
18263
18386
|
}));
|
|
@@ -18298,7 +18421,7 @@ var CustomResourceProvider = class CustomResourceProvider {
|
|
|
18298
18421
|
}
|
|
18299
18422
|
if (typeof serviceToken !== "string") throw new ProvisioningError(`Custom Resource ${logicalId}: ServiceToken is not a resolved string ARN (got ${typeof serviceToken}). This usually indicates state was written by a pre-fix cdkd import; re-run \`cdkd import\` or \`cdkd state orphan <stack>\` to recover.`, resourceType, logicalId, physicalId);
|
|
18300
18423
|
if (!this.isSnsServiceToken(serviceToken) && await this.isBackingLambdaGone(serviceToken)) {
|
|
18301
|
-
this.logger.warn(`Backing Lambda for custom resource ${logicalId} no longer exists (${serviceToken}); treating the custom resource as already deleted
|
|
18424
|
+
this.logger.warn(`Backing Lambda for custom resource ${logicalId} no longer exists (${serviceToken}); treating the custom resource as already deleted and DROPPING its state record. The handler can never run again, so if its teardown was never PROVEN — e.g. an earlier run reported this resource as skipped (issue 2054) — whatever it manages is still LIVE and is now untracked by cdkd. Check for leftovers before treating the stack as gone.`);
|
|
18302
18425
|
return;
|
|
18303
18426
|
}
|
|
18304
18427
|
try {
|
|
@@ -18309,13 +18432,19 @@ var CustomResourceProvider = class CustomResourceProvider {
|
|
|
18309
18432
|
ResourceType: resourceType,
|
|
18310
18433
|
LogicalResourceId: logicalId,
|
|
18311
18434
|
PhysicalResourceId: physicalId,
|
|
18312
|
-
StackId:
|
|
18435
|
+
StackId: invocation.stackId,
|
|
18313
18436
|
ResourceProperties: this.stringifyProperties(properties)
|
|
18314
18437
|
}));
|
|
18315
|
-
if (cfnResponse.Status === "FAILED")
|
|
18316
|
-
|
|
18438
|
+
if (cfnResponse.Status === "FAILED") {
|
|
18439
|
+
this.logger.warn(`Custom resource delete handler returned FAILED for ${logicalId}: ${cfnResponse.Reason || "Unknown reason"}. The handler reported that it did NOT delete, so anything this custom resource manages is LEFT IN PLACE — cdkd is KEEPING the state record and the run exits non-zero. ${CR_SKIP_NOT_A_RETRY_CAVEAT} ('cdkd deploy' also accepts --allow-unaddressed, which forces exit 0; 'cdkd destroy' has no such flag.) ${DEPLOY_SKIP_CAVEAT}`);
|
|
18440
|
+
return {
|
|
18441
|
+
outcome: "skipped",
|
|
18442
|
+
reason: CR_DELETE_HANDLER_FAILED_SKIP_REASON
|
|
18443
|
+
};
|
|
18444
|
+
}
|
|
18445
|
+
this.logger.debug(`Successfully deleted custom resource ${logicalId}`);
|
|
18317
18446
|
} catch (error) {
|
|
18318
|
-
this.logger.warn(`Failed to delete custom resource ${logicalId}, but continuing: ${error instanceof Error ? error.message : String(error)}. The Delete handler did not complete, so anything this custom resource manages may still be LIVE — cdkd is KEEPING the state record
|
|
18447
|
+
this.logger.warn(`Failed to delete custom resource ${logicalId}, but continuing: ${error instanceof Error ? error.message : String(error)}. The Delete handler did not complete, so anything this custom resource manages may still be LIVE — cdkd is KEEPING the state record and the run exits non-zero. ${CR_SKIP_NOT_A_RETRY_CAVEAT} ${DEPLOY_SKIP_CAVEAT}`);
|
|
18319
18448
|
return {
|
|
18320
18449
|
outcome: "skipped",
|
|
18321
18450
|
reason: CR_DELETE_INVOKE_FAILED_SKIP_REASON
|
|
@@ -18391,13 +18520,22 @@ var CustomResourceProvider = class CustomResourceProvider {
|
|
|
18391
18520
|
* PRE-delivery throw is safe to replay at all.
|
|
18392
18521
|
*
|
|
18393
18522
|
* `buildRequest` is called once per attempt with the fresh invocation so the
|
|
18394
|
-
* CFn request body always carries the matching ResponseURL / RequestId.
|
|
18523
|
+
* CFn request body always carries the matching ResponseURL / RequestId. The
|
|
18524
|
+
* synthetic `StackId` rides the same bag although it is stable across
|
|
18525
|
+
* attempts (issue #1866), for an ORDERING reason rather than a freshness one:
|
|
18526
|
+
* resolving it needs an `await`, and every await before the SIGINT watch
|
|
18527
|
+
* below is installed is a window in which Ctrl-C is dead — `docs/
|
|
18528
|
+
* provider-development.md` requires a new wait site to be interruptible, and
|
|
18529
|
+
* the pre-delivery backoff this method owns is 47.75s long.
|
|
18530
|
+
*
|
|
18395
18531
|
* Returns the final response; the caller decides what a terminal FAILED means
|
|
18396
|
-
* (create/update throw
|
|
18532
|
+
* (create / update throw; delete warns and returns `'skipped'` — issue
|
|
18533
|
+
* #2054, which replaced its warn-and-continue).
|
|
18397
18534
|
*/
|
|
18398
18535
|
async invokeCustomResourceWithRetry(serviceToken, logicalId, operation, buildRequest) {
|
|
18399
18536
|
const watch = this.startInterruptWatch(logicalId);
|
|
18400
18537
|
try {
|
|
18538
|
+
const stackId = await this.resolveSyntheticStackId(logicalId);
|
|
18401
18539
|
let preDeliveryRetries = 0;
|
|
18402
18540
|
let failedResponseRetries = 0;
|
|
18403
18541
|
for (let attempt = 0;; attempt++) {
|
|
@@ -18407,7 +18545,10 @@ var CustomResourceProvider = class CustomResourceProvider {
|
|
|
18407
18545
|
let invocation;
|
|
18408
18546
|
try {
|
|
18409
18547
|
invocation = await this.prepareInvocation(logicalId, watch);
|
|
18410
|
-
const request = buildRequest(
|
|
18548
|
+
const request = buildRequest({
|
|
18549
|
+
...invocation,
|
|
18550
|
+
stackId
|
|
18551
|
+
});
|
|
18411
18552
|
this.logger.debug(`Sending custom resource ${operation.toLowerCase()} request: ${serviceToken}`);
|
|
18412
18553
|
const sent = await this.sendRequest(serviceToken, request, invocation.responseKey, logicalId, operation, () => {
|
|
18413
18554
|
delivered = true;
|
|
@@ -25385,7 +25526,7 @@ const FLUSH_INTERVAL_MS = 2e3;
|
|
|
25385
25526
|
const FLUSH_EVENT_THRESHOLD = 50;
|
|
25386
25527
|
/** Build-time cdkd version, with a dev fallback for non-built contexts. */
|
|
25387
25528
|
function getCdkdVersion() {
|
|
25388
|
-
return "0.284.
|
|
25529
|
+
return "0.284.24";
|
|
25389
25530
|
}
|
|
25390
25531
|
/**
|
|
25391
25532
|
* Generate a time-sortable unique run id, e.g.
|
|
@@ -28006,4 +28147,4 @@ var DeployEngine = class {
|
|
|
28006
28147
|
|
|
28007
28148
|
//#endregion
|
|
28008
28149
|
export { disableInstanceApiTermination as $, NestedStackChildDirectDestroyError as $n, ensureAssetStorage as $t, isStatefulRecreateTargetSync as A, uploadCfnTemplate as An, s3BucketWebsiteUrl as At, collectPublishedOutputNames as B, getAwsClients as Bn, rebuildClientForBucketRegion as Bt, createPreDeleteFinalSnapshot as C, resolveUseCdkBootstrapAssets as Cn, maskSecretsInText as Ct, makeCanonicalizePropertiesFn as D, CFN_TEMPLATE_URL_LIMIT as Dn, s3BucketDomainName as Dt, unsupportedFinalSnapshotError as E, CFN_TEMPLATE_BODY_LIMIT as En, s3BucketArn as Et, gray as F, AssemblyReader as Fn, withRetry as Ft, IAMRoleProvider as G, ConfigError as Gn, buildAssetRedirectMap as Gt, isExportAliasCollision as H, setAwsClients as Hn, AssetPublisher as Ht, green as I, processStackMessages as In, DagBuilder as It, ProviderRegistry as J, LocalInvokeBuildError as Jn, rewriteTemplateAssetReferences as Jt, collectInlinePolicyNamesManagedBySiblings as K, DependencyError as Kn, createAssetRedirectResolver as Kt, red as L, clearBucketRegionCache as Ln, TemplateParser as Lt, formatResourceLine as M, PARTITION_TABLE as Mn, DiffCalculator as Mt, bold as N, canonicalizeRegion as Nn, INTRINSIC_KEYS as Nt, extractDeploymentEventError as O, MIGRATE_TMP_PREFIX as On, s3BucketDualStackDomainName as Ot, cyan as P, derivePartitionAndUrlSuffix as Pn, describeTypeWithThrottleRetry as Pt, slowCcOperationTimeoutMs as Q, MissingCdkCliError as Qn, BOOTSTRAP_MARKER_PREFIX as Qt, yellow as R, resolveBucketRegion as Rn, LockManager as Rt, ccRoutedFinalSnapshotError as S, resolveStateBucketWithDefaultAndSource as Sn, isSingleDynamicReferenceToken as St, refusesFinalSnapshot as T, warnDeprecatedNoPrefixCliFlag as Tn, scrubResourceRecord as Tt, secretBearingStateKeyWarning as U, AssetError as Un, stringifyValue as Ut, exportAliasCollisionScrubWarning as V, resetAwsClients as Vn, shouldRetainResource as Vt, stateKeySecretExposure as W, CdkdError as Wn, WorkGraph as Wt, findSilentDropProperties as X, LocalStartServiceError as Xn, stripControlChars as Xt, findActionableSilentDrops as Y, LocalMigrateError as Yn, escapeRegExp$1 as Yt, CloudControlProvider as Z, LockError as Zn, AssetModeResolver as Zt, IMPLICIT_DELETE_DEPENDENCIES as _, resolveApp as _n, STATE_SOURCED_CROSS_GENERATION_RULES as _t, DeploymentEventsStore as a, buildDenyExternalAccessPolicy as an, StackTerminationProtectionError as ar, WAFv2WebACLProvider as at, PRE_DELETE_SNAPSHOT_TYPES as b, resolveSkipPrefix as bn, createSecretMasker as bt, producerRegionsFromState as c, getDockerCmd as cn, formatError as cr, assertRegionMatch as ct, updatePartialMessage as d, AssetManifestLoader as dn, withErrorHandling as dr, configStringRefusal as dt, getBootstrapMarkerKey as en, PartialFailureError as er, isTerminationProtectionPropagationError as et, updatePartialReason as f, getDockerImageBySourceHash as fn, isMarkedNonRetryable as fr, readConfigString as ft, maskingRetryLogger as g, getLegacyStateBucketName as gn, __exportAll as gr, requireConfigString as gt, withResourceDeadline as h, getDefaultStateBucketName as hn, markNonRetryable as hr, requireConfigObject as ht, DeploymentEventsReader as i, validateContainerRepoName as in, StackHasActiveImportsError as ir, refStateLookupFromResource as it, renderStatefulReason as j, expectedOwnerParam as jn, applyRoleArnIfSet as jt, MULTI_REGION_RECREATE_BLOCKED_TYPES as k, findLargeInlineResources as kn, s3BucketRegionalDomainName as kt, replayFailedOperations as l, runDockerForeground as ln, isCdkdError as lr, coerceCfnBoolean as lt, deleteSkipReason as m, synthesisStatusMessage as mn, isThrottlingError as mr, requireConfigArray as mt, DEFAULT_RESOURCE_WARN_AFTER_MS as n, readBootstrapMarkerBody as nn, ResourceTimeoutError as nr, cfnRefValueFromPhysicalId as nt, planFailedOps as o, buildDockerImage as on, StateError as or, normalizeAwsTagsToCfn as ot, UNSPECIFIED_SKIP_REASON as p, Synthesizer as pn, isRetryableTransientError as pr, replayWarn as pt, clearOnUpdateRemoval as q, DeployCancelledError as qn, loadPublishableAssetManifest as qt, DeployEngine as r, validateAssetBucketName as rn, ResourceUpdateNotSupportedError as rr, getAccountInfo as rt, planRollback as s, formatDockerLoginError as sn, SynthesisError as sr, resolveExplicitPhysicalId as st, DEFAULT_RESOURCE_TIMEOUT_MS as t, parseBootstrapMarker as tn, ProvisioningError as tr, IntrinsicFunctionResolver as tt, replayRollback as u, runDockerStreaming as un, normalizeAwsError as ur, configBooleanRefusal as ut, computeImplicitDeleteEdges as v, resolveAutoAssetStorage as vn, STATE_SOURCED_READBACK_RULES as vt, isFinalSnapshotError as w, stateBucketExistenceConfirmed as wn, redactSecretsForState as wt, buildFinalSnapshotIdentifier as x, resolveStateBucketWithDefault as xn, dynamicReferenceTokens as xt, ATOMIC_FINAL_SNAPSHOT_TYPES as y, resolveCaptureObservedState as yn, TEMPLATE_SOURCED_RULES as yt, collectDeclaredOutputNames as z, AwsClients as zn, S3StateBackend as zt };
|
|
28009
|
-
//# sourceMappingURL=deploy-engine-
|
|
28150
|
+
//# sourceMappingURL=deploy-engine-BJQbni1s.js.map
|