@go-to-k/cdkd 0.312.0 → 0.314.0
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-CVLTQtQr.js → asg-provider-_nun2Jda.js} +43 -7
- package/dist/asg-provider-_nun2Jda.js.map +1 -0
- package/dist/{aws-failure-text-NSBdKPYK.js → aws-failure-text-agWtoyga.js} +5 -2
- package/dist/{aws-failure-text-NSBdKPYK.js.map → aws-failure-text-agWtoyga.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{created-resource-sink-BT2Dfnpt.js → created-resource-sink-QECX8C-Z.js} +3 -3
- package/dist/{created-resource-sink-BT2Dfnpt.js.map → created-resource-sink-QECX8C-Z.js.map} +1 -1
- package/dist/{db-instance-modify-retry-D7wXWxVo.js → db-instance-modify-retry-By0_BFNO.js} +3 -3
- package/dist/{db-instance-modify-retry-D7wXWxVo.js.map → db-instance-modify-retry-By0_BFNO.js.map} +1 -1
- package/dist/{deploy-engine-CVNzK__j.js → deploy-engine-ClIUqDQL.js} +488 -80
- package/dist/deploy-engine-ClIUqDQL.js.map +1 -0
- package/dist/{iam-role-provider-DM7bN9m1.js → iam-role-provider-DJep3uns.js} +4 -4
- package/dist/{iam-role-provider-DM7bN9m1.js.map → iam-role-provider-DJep3uns.js.map} +1 -1
- package/dist/index.js +4 -4
- package/dist/{neptune-provider-qdoLunCh.js → neptune-provider-CGZ_G4Vz.js} +5 -5
- package/dist/{neptune-provider-qdoLunCh.js.map → neptune-provider-CGZ_G4Vz.js.map} +1 -1
- package/dist/{program-Nk_95KKk.js → program-Du6jOw1-.js} +38 -15
- package/dist/program-Du6jOw1-.js.map +1 -0
- package/dist/{provider-classes-Dz0pYmlJ.js → provider-classes-ZqxIefLl.js} +628 -245
- package/dist/provider-classes-ZqxIefLl.js.map +1 -0
- package/dist/{rds-provider-CXSZq1c8.js → rds-provider-C2fHUNSE.js} +140 -7
- package/dist/rds-provider-C2fHUNSE.js.map +1 -0
- package/dist/{version-BqCEt5Wu.js → version-B2PvJ12r.js} +2 -2
- package/dist/{version-BqCEt5Wu.js.map → version-B2PvJ12r.js.map} +1 -1
- package/package.json +2 -2
- package/dist/asg-provider-CVLTQtQr.js.map +0 -1
- package/dist/deploy-engine-CVNzK__j.js.map +0 -1
- package/dist/program-Nk_95KKk.js.map +0 -1
- package/dist/provider-classes-Dz0pYmlJ.js.map +0 -1
- package/dist/rds-provider-CXSZq1c8.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { c as __exportAll, r as getAwsClients } from "./aws-clients-Bu9EMILF.js";
|
|
2
|
-
import {
|
|
3
|
-
import { $n as plainOrDescribed, $t as formatLockOperation, A as withoutServerErrorRetries, Ar as markNonRetryable, At as createMaskedLogSinks, B as quotedRemedyLogicalId, Bt as createdResourceIdentityBeforeFailure, Cn as DynamicReferenceRegionAmbiguousError, Cr as isIamPropagationError, Ct as compositeIdSeparatorRefusal, Dn as LockError, Dt as resourceTypeShown, Er as retryClassificationText, Ft as withDerivedNameMasks, G as ProtectionFlipRegistry, Gn as SHELL_ACTIVE, Gt as markCreatedBeforeFailure, Hn as normalizeAwsError, Ht as isAuxiliaryFailure, It as RETRY_AUXILIARY_OWNER, J as deleteWithProtectionCompensation, Jn as commandHole, Jt as UNREPRODUCIBLE_LOCK_CLAUSE, K as compensateProtectionFlip, Kn as SHELL_ACTIVE_WHY, Ln as StateError, Lt as carryCreatedBeforeFailure, M as isMarkedNotGone, Mn as ProvisioningError, Mr as wrapMaskedAwsError, Mt as isSecretDerivedValue, N as markNotGone, Nn as ResourceTimeoutError, Nt as maskDeep, On as MacroExpansionError, Or as isMarkedNonRetryable, Ot as segmentAfterAnchor, P as assertRegionMatch, Pn as ResourceUpdateNotSupportedError, Pt as maskerOrIdentity, Q as isTerminalDeleteFailure, Qn as physicalIdShownBesideCommand, Qt as formatLockExpiry, R as isQuotableImportValue, Rn as SynthesisError, Sn as DeploymentNotApprovedError, Tr as isTransientServerError, Tt as logicalIdShown, U as resolveExplicitPhysicalId, Ut as isAuxiliaryMarkOf, V as refusalTypeShown, Vn as isSoftAbort, Vt as hasCreatedBeforeFailure, Wt as markAuxiliaryFailure, Xn as isInertUnquoted, Yt as buildForceUnlockCommand, Zn as pasteableCommand, _ as removalWarning, _n as CdkdError, a as retractCreatedResource, an as injectiveKey, b as withoutInjectedRemovals, bn as DependencyError, br as isAmbiguousCcHandlerErrorCode, bt as startInterruptWatch, cn as producerRecordKey, cr as isNameCollisionErrorFrom, dn as ambientClientDefaults, dr as isReplayedNameCollisionFrom, dt as protectedReplacementAdvice, en as formatLockOwner, er as quotedOrDescribed, et as observeThenDisableProtection, fn as ambientCredentialConfig, g as prepareRemovalForUpdate, gn as AssetError, gr as stripControlChars, hn as AccountIdUnavailableError, hr as escapeRegExp$3, ht as monotonicNowMs, i as reportCreatedResource, in as DEFAULT_STATE_PREFIX, j as RESOURCE_NOT_FOUND, jr as markRedactedCause, jt as createMaskedRetryLogger, kn as MalformedProducerRecordRefusalError, kr as isThrottlingError, kt as stateOrphanRecordRemedy, l as holdsSecretDerivedEntry, lr as isNameCooldownError, m as withUnchangedSecretPrincipalLists, mn as credentialFingerprint, mr as relayedNameCollision, mt as ElapsedBudgetRegistry, n as clearCreatedReport, nn as sanitizeRecoveryValue, nr as shellQuote, or as isUpdateUnsupportedError, ot as DELETION_PROTECTION_DOC_POINTER, pn as clientDefaultsFor, pr as markReplayMayCollide, qn as UNSHOWABLE_VALUE, qt as replayMadeAnotherResource, r as collectCreatedResources, rn as CUSTOM_RESOURCE_RESPONSE_PREFIX, rr as withheldTargetClause, rt as runDeleteAttempt, sr as hasReplayMayCollide, t as CreatedResourceSink, tn as recoveryCommandFlags, tr as shellBoundedDisplay, tt as protectionFlipKey, un as withPasteableAwsProfile, ur as isRecreateRetryableError, ut as pasteableAwsCommand, wn as IntrinsicResolutionRefusalError, wr as isRetryableTransientError, xr as isAmbiguousOutcomeError, xt as canonicalizeRoute53QueryName, yn as CrossAccountSecretRefusalError, yr as formatRetryClassificationSignals, yt as isInterruptedWaitError, z as normalizeAwsTagsToCfn, zt as createdBeforeFailure } from "./created-resource-sink-
|
|
2
|
+
import { $ as safeMsg, B as SAFE_MSG_ALTERED_CHAR, C as fallbackNamePropertyFor, D as getCurrentSkipPrefix, E as generatedNameFor, F as withNameGeneration, H as STACK_REF_MAX_CODE_POINTS, I as withSkipPrefix, J as displaySafe, K as displayAwsMessage, L as withStackScope, M as looksLikeCdkdGeneratedName, O as getCurrentStackInstanceId, P as stackInstanceNameSuffix, Q as plainIdentOr, R as withStackScopeBeforeStateRead, S as explicitNamePropertyFor, T as generateResourceNameWithFallback, U as UNRENDERABLE, V as SECRET_REF_MAX_CODE_POINTS, W as asIsMessage, X as isPasteableIdent, Y as displayStackName, a as safeStringify$1, b as currentNameGeneration, c as isStdoutReservedForPayload, f as currentLogLineMasker, j as isNameGeneration, k as getCurrentStackName, m as getLiveRenderer, n as describeAwsFailure, nt as truncateCodePoints, p as installLogLineMaskerSource, q as displayIdent, s as getLogger, t as VERBOSE_POINTER, tt as terminalSafe, v as alternateNamePropertiesFor, y as applyDefaultNameForFallback, z as withoutGeneratedFallbackName } from "./aws-failure-text-agWtoyga.js";
|
|
3
|
+
import { $n as plainOrDescribed, $t as formatLockOperation, A as withoutServerErrorRetries, Ar as markNonRetryable, At as createMaskedLogSinks, B as quotedRemedyLogicalId, Bt as createdResourceIdentityBeforeFailure, Cn as DynamicReferenceRegionAmbiguousError, Cr as isIamPropagationError, Ct as compositeIdSeparatorRefusal, Dn as LockError, Dt as resourceTypeShown, Er as retryClassificationText, Ft as withDerivedNameMasks, G as ProtectionFlipRegistry, Gn as SHELL_ACTIVE, Gt as markCreatedBeforeFailure, Hn as normalizeAwsError, Ht as isAuxiliaryFailure, It as RETRY_AUXILIARY_OWNER, J as deleteWithProtectionCompensation, Jn as commandHole, Jt as UNREPRODUCIBLE_LOCK_CLAUSE, K as compensateProtectionFlip, Kn as SHELL_ACTIVE_WHY, Ln as StateError, Lt as carryCreatedBeforeFailure, M as isMarkedNotGone, Mn as ProvisioningError, Mr as wrapMaskedAwsError, Mt as isSecretDerivedValue, N as markNotGone, Nn as ResourceTimeoutError, Nt as maskDeep, On as MacroExpansionError, Or as isMarkedNonRetryable, Ot as segmentAfterAnchor, P as assertRegionMatch, Pn as ResourceUpdateNotSupportedError, Pt as maskerOrIdentity, Q as isTerminalDeleteFailure, Qn as physicalIdShownBesideCommand, Qt as formatLockExpiry, R as isQuotableImportValue, Rn as SynthesisError, Sn as DeploymentNotApprovedError, Tr as isTransientServerError, Tt as logicalIdShown, U as resolveExplicitPhysicalId, Ut as isAuxiliaryMarkOf, V as refusalTypeShown, Vn as isSoftAbort, Vt as hasCreatedBeforeFailure, Wt as markAuxiliaryFailure, Xn as isInertUnquoted, Yt as buildForceUnlockCommand, Zn as pasteableCommand, _ as removalWarning, _n as CdkdError, a as retractCreatedResource, an as injectiveKey, b as withoutInjectedRemovals, bn as DependencyError, br as isAmbiguousCcHandlerErrorCode, bt as startInterruptWatch, cn as producerRecordKey, cr as isNameCollisionErrorFrom, dn as ambientClientDefaults, dr as isReplayedNameCollisionFrom, dt as protectedReplacementAdvice, en as formatLockOwner, er as quotedOrDescribed, et as observeThenDisableProtection, fn as ambientCredentialConfig, g as prepareRemovalForUpdate, gn as AssetError, gr as stripControlChars, hn as AccountIdUnavailableError, hr as escapeRegExp$3, ht as monotonicNowMs, i as reportCreatedResource, in as DEFAULT_STATE_PREFIX, j as RESOURCE_NOT_FOUND, jr as markRedactedCause, jt as createMaskedRetryLogger, kn as MalformedProducerRecordRefusalError, kr as isThrottlingError, kt as stateOrphanRecordRemedy, l as holdsSecretDerivedEntry, lr as isNameCooldownError, m as withUnchangedSecretPrincipalLists, mn as credentialFingerprint, mr as relayedNameCollision, mt as ElapsedBudgetRegistry, n as clearCreatedReport, nn as sanitizeRecoveryValue, nr as shellQuote, or as isUpdateUnsupportedError, ot as DELETION_PROTECTION_DOC_POINTER, pn as clientDefaultsFor, pr as markReplayMayCollide, pt as ElapsedBudget, qn as UNSHOWABLE_VALUE, qt as replayMadeAnotherResource, r as collectCreatedResources, rn as CUSTOM_RESOURCE_RESPONSE_PREFIX, rr as withheldTargetClause, rt as runDeleteAttempt, sr as hasReplayMayCollide, t as CreatedResourceSink, tn as recoveryCommandFlags, tr as shellBoundedDisplay, tt as protectionFlipKey, un as withPasteableAwsProfile, ur as isRecreateRetryableError, ut as pasteableAwsCommand, wn as IntrinsicResolutionRefusalError, wr as isRetryableTransientError, xr as isAmbiguousOutcomeError, xt as canonicalizeRoute53QueryName, yn as CrossAccountSecretRefusalError, yr as formatRetryClassificationSignals, yt as isInterruptedWaitError, z as normalizeAwsTagsToCfn, zt as createdBeforeFailure } from "./created-resource-sink-QECX8C-Z.js";
|
|
4
4
|
import { a as setAssumedRoleCredentials, c as ambientRegion, i as getPreAssumeEnvCredentials, n as awsClientDefaults, o as setPreAssumeEnvCredentials, r as getAssumedRoleCredentials, s as quietS3Logger, t as SECOND_ROLE_PUBLISH_REFUSAL } from "./aws-client-defaults-BX9Y_fKp.js";
|
|
5
|
-
import { t as getCdkdVersion } from "./version-
|
|
5
|
+
import { t as getCdkdVersion } from "./version-B2PvJ12r.js";
|
|
6
6
|
import { createHash, randomUUID } from "node:crypto";
|
|
7
7
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
8
8
|
import { CreateBucketCommand, DeleteObjectCommand, DeleteObjectsCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketReplicationCommand, GetObjectCommand, HeadBucketCommand, HeadObjectCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchKey, PutBucketEncryptionCommand, PutBucketLifecycleConfigurationCommand, PutBucketPolicyCommand, PutObjectCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
|
|
@@ -12780,8 +12780,14 @@ var ReplacementRulesRegistry = class {
|
|
|
12780
12780
|
}
|
|
12781
12781
|
initializeRules() {
|
|
12782
12782
|
this.rules.set("AWS::S3::Bucket", {
|
|
12783
|
-
replacementProperties: /* @__PURE__ */ new Set([
|
|
12783
|
+
replacementProperties: /* @__PURE__ */ new Set([
|
|
12784
|
+
"BucketName",
|
|
12785
|
+
"BucketNamePrefix",
|
|
12786
|
+
"BucketNamespace"
|
|
12787
|
+
]),
|
|
12784
12788
|
updateableProperties: /* @__PURE__ */ new Set([
|
|
12789
|
+
"AbacStatus",
|
|
12790
|
+
"MetadataConfiguration",
|
|
12785
12791
|
"Tags",
|
|
12786
12792
|
"VersioningConfiguration",
|
|
12787
12793
|
"LifecycleConfiguration",
|
|
@@ -14669,6 +14675,7 @@ function generatedReplacementName(resourceType, createdVia, desired, logicalId)
|
|
|
14669
14675
|
const value = desired?.[property];
|
|
14670
14676
|
return value !== void 0 && value !== null && value !== "";
|
|
14671
14677
|
};
|
|
14678
|
+
if (alternateNamePropertiesFor(resourceType).some(declared)) return void 0;
|
|
14672
14679
|
const fallbackProperty = fallbackNamePropertyFor(resourceType);
|
|
14673
14680
|
if (createdVia === "cc-api" || GENERATED_NAME_VERBATIM.has(resourceType)) {
|
|
14674
14681
|
if (fallbackProperty === void 0 || declared(fallbackProperty)) return void 0;
|
|
@@ -14809,7 +14816,7 @@ function holderVerdict(input, v) {
|
|
|
14809
14816
|
generatedName = wantName !== void 0;
|
|
14810
14817
|
}
|
|
14811
14818
|
const derived = ownEntry$1(DERIVED_GENERATED_NAMES, oldResourceType);
|
|
14812
|
-
const derivedName = namePath === void 0 && v.derivedNames && derived !== void 0 && input.createdVia !== "cc-api" && typeof input.logicalId === "string" && input.logicalId !== "" ? derived.derive(input.logicalId) : "";
|
|
14819
|
+
const derivedName = namePath === void 0 && v.derivedNames && derived !== void 0 && !alternateNamePropertiesFor(oldResourceType).some((p) => input.requested[p] !== void 0) && input.createdVia !== "cc-api" && typeof input.logicalId === "string" && input.logicalId !== "" ? derived.derive(input.logicalId) : "";
|
|
14813
14820
|
if (derivedName !== "") {
|
|
14814
14821
|
namePath = oldKey.name[0];
|
|
14815
14822
|
wantName = derivedName;
|
|
@@ -16221,6 +16228,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
16221
16228
|
handled: /* @__PURE__ */ new Set([
|
|
16222
16229
|
"AutoScalingGroupName",
|
|
16223
16230
|
"AvailabilityZoneDistribution",
|
|
16231
|
+
"AvailabilityZoneIds",
|
|
16224
16232
|
"AvailabilityZoneImpairmentPolicy",
|
|
16225
16233
|
"AvailabilityZones",
|
|
16226
16234
|
"CapacityRebalance",
|
|
@@ -16234,6 +16242,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
16234
16242
|
"DesiredCapacityType",
|
|
16235
16243
|
"HealthCheckGracePeriod",
|
|
16236
16244
|
"HealthCheckType",
|
|
16245
|
+
"InstanceLifecyclePolicy",
|
|
16237
16246
|
"InstanceMaintenancePolicy",
|
|
16238
16247
|
"LaunchTemplate",
|
|
16239
16248
|
"LifecycleHookSpecificationList",
|
|
@@ -16245,6 +16254,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
16245
16254
|
"MixedInstancesPolicy",
|
|
16246
16255
|
"NewInstancesProtectedFromScaleIn",
|
|
16247
16256
|
"NotificationConfigurations",
|
|
16257
|
+
"PlacementGroup",
|
|
16248
16258
|
"ServiceLinkedRoleARN",
|
|
16249
16259
|
"SkipZonalShiftValidation",
|
|
16250
16260
|
"Tags",
|
|
@@ -16254,12 +16264,9 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
16254
16264
|
"VPCZoneIdentifier"
|
|
16255
16265
|
]),
|
|
16256
16266
|
silentDrop: /* @__PURE__ */ new Map([
|
|
16257
|
-
["
|
|
16258
|
-
["InstanceId", "not yet implemented by cdkd"],
|
|
16259
|
-
["InstanceLifecyclePolicy", "not yet implemented by cdkd"],
|
|
16267
|
+
["InstanceId", "CreateAutoScalingGroup derives a new launch configuration from the instance, and AWS Launch Configurations are end-of-life 2024-10 like LaunchConfigurationName; use LaunchTemplate instead"],
|
|
16260
16268
|
["LaunchConfigurationName", "AWS Launch Configurations end-of-life 2024-10; use LaunchTemplate instead"],
|
|
16261
|
-
["NotificationConfiguration", "Legacy singular form; use NotificationConfigurations (plural) which cdkd already wires"]
|
|
16262
|
-
["PlacementGroup", "not yet implemented by cdkd"]
|
|
16269
|
+
["NotificationConfiguration", "Legacy singular form; use NotificationConfigurations (plural) which cdkd already wires"]
|
|
16263
16270
|
]),
|
|
16264
16271
|
createOnlyDrops: /* @__PURE__ */ new Set(["InstanceId"]),
|
|
16265
16272
|
readOnly: /* @__PURE__ */ new Set(["AutoScalingGroupARN"]),
|
|
@@ -16570,6 +16577,8 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
16570
16577
|
"EmailVerificationMessage",
|
|
16571
16578
|
"EmailVerificationSubject",
|
|
16572
16579
|
"EnabledMfas",
|
|
16580
|
+
"IssuerConfiguration",
|
|
16581
|
+
"KeyConfiguration",
|
|
16573
16582
|
"LambdaConfig",
|
|
16574
16583
|
"MfaConfiguration",
|
|
16575
16584
|
"Policies",
|
|
@@ -16589,7 +16598,7 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
16589
16598
|
"WebAuthnRelyingPartyID",
|
|
16590
16599
|
"WebAuthnUserVerification"
|
|
16591
16600
|
]),
|
|
16592
|
-
silentDrop: /* @__PURE__ */ new Map(
|
|
16601
|
+
silentDrop: /* @__PURE__ */ new Map(),
|
|
16593
16602
|
createOnlyDrops: /* @__PURE__ */ new Set(),
|
|
16594
16603
|
readOnly: /* @__PURE__ */ new Set([
|
|
16595
16604
|
"Arn",
|
|
@@ -16663,7 +16672,8 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
16663
16672
|
"ClusterResourceId",
|
|
16664
16673
|
"Endpoint",
|
|
16665
16674
|
"Id",
|
|
16666
|
-
"ReadEndpoint"
|
|
16675
|
+
"ReadEndpoint",
|
|
16676
|
+
"ServerlessV2PlatformVersion"
|
|
16667
16677
|
]),
|
|
16668
16678
|
ccRouteUnavailable: true
|
|
16669
16679
|
}],
|
|
@@ -16710,24 +16720,24 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
16710
16720
|
"GlobalSecondaryIndexes",
|
|
16711
16721
|
"KeySchema",
|
|
16712
16722
|
"LocalSecondaryIndexes",
|
|
16723
|
+
"ReadOnDemandThroughputSettings",
|
|
16724
|
+
"ReadProvisionedThroughputSettings",
|
|
16713
16725
|
"Replicas",
|
|
16714
16726
|
"SSESpecification",
|
|
16715
16727
|
"StreamSpecification",
|
|
16716
16728
|
"TableClass",
|
|
16717
16729
|
"TableName",
|
|
16730
|
+
"TableType",
|
|
16718
16731
|
"TimeToLiveSpecification",
|
|
16732
|
+
"VectorIndexes",
|
|
16733
|
+
"WarmThroughput",
|
|
16719
16734
|
"WriteOnDemandThroughputSettings",
|
|
16720
16735
|
"WriteProvisionedThroughputSettings"
|
|
16721
16736
|
]),
|
|
16722
16737
|
silentDrop: /* @__PURE__ */ new Map([
|
|
16723
16738
|
["GlobalTableSourceArn", "not yet implemented by cdkd"],
|
|
16724
16739
|
["GlobalTableWitnesses", "not yet implemented by cdkd"],
|
|
16725
|
-
["MultiRegionConsistency", "not yet implemented by cdkd"]
|
|
16726
|
-
["ReadOnDemandThroughputSettings", "not yet implemented by cdkd"],
|
|
16727
|
-
["ReadProvisionedThroughputSettings", "not yet implemented by cdkd"],
|
|
16728
|
-
["TableType", "not yet implemented by cdkd"],
|
|
16729
|
-
["VectorIndexes", "not yet implemented by cdkd"],
|
|
16730
|
-
["WarmThroughput", "not yet implemented by cdkd"]
|
|
16740
|
+
["MultiRegionConsistency", "not yet implemented by cdkd"]
|
|
16731
16741
|
]),
|
|
16732
16742
|
createOnlyDrops: /* @__PURE__ */ new Set(),
|
|
16733
16743
|
readOnly: /* @__PURE__ */ new Set([
|
|
@@ -18236,24 +18246,39 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
18236
18246
|
["AWS::RDS::DBInstance", {
|
|
18237
18247
|
handled: /* @__PURE__ */ new Set([
|
|
18238
18248
|
"AllocatedStorage",
|
|
18249
|
+
"AutoMinorVersionUpgrade",
|
|
18250
|
+
"BackupRetentionPeriod",
|
|
18251
|
+
"CACertificateIdentifier",
|
|
18252
|
+
"CopyTagsToSnapshot",
|
|
18239
18253
|
"DBClusterIdentifier",
|
|
18240
18254
|
"DBInstanceClass",
|
|
18241
18255
|
"DBInstanceIdentifier",
|
|
18242
18256
|
"DBSubnetGroupName",
|
|
18243
18257
|
"DeletionProtection",
|
|
18244
18258
|
"EnableIAMDatabaseAuthentication",
|
|
18259
|
+
"EnablePerformanceInsights",
|
|
18245
18260
|
"Engine",
|
|
18246
18261
|
"EngineVersion",
|
|
18262
|
+
"Iops",
|
|
18247
18263
|
"KmsKeyId",
|
|
18248
18264
|
"ManageMasterUserPassword",
|
|
18249
18265
|
"MasterUsername",
|
|
18250
18266
|
"MasterUserPassword",
|
|
18251
18267
|
"MasterUserSecret",
|
|
18268
|
+
"MaxAllocatedStorage",
|
|
18252
18269
|
"MonitoringInterval",
|
|
18253
18270
|
"MonitoringRoleArn",
|
|
18271
|
+
"MultiAZ",
|
|
18272
|
+
"OptionGroupName",
|
|
18273
|
+
"PerformanceInsightsKMSKeyId",
|
|
18274
|
+
"PerformanceInsightsRetentionPeriod",
|
|
18254
18275
|
"Port",
|
|
18276
|
+
"PreferredBackupWindow",
|
|
18277
|
+
"PreferredMaintenanceWindow",
|
|
18255
18278
|
"PubliclyAccessible",
|
|
18256
18279
|
"StorageEncrypted",
|
|
18280
|
+
"StorageThroughput",
|
|
18281
|
+
"StorageType",
|
|
18257
18282
|
"Tags",
|
|
18258
18283
|
"VPCSecurityGroups"
|
|
18259
18284
|
]),
|
|
@@ -18265,14 +18290,10 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
18265
18290
|
["AutomaticBackupReplicationKmsKeyId", "not yet implemented by cdkd"],
|
|
18266
18291
|
["AutomaticBackupReplicationRegion", "not yet implemented by cdkd"],
|
|
18267
18292
|
["AutomaticBackupReplicationRetentionPeriod", "not yet implemented by cdkd"],
|
|
18268
|
-
["AutoMinorVersionUpgrade", "not yet implemented by cdkd"],
|
|
18269
18293
|
["AvailabilityZone", "not yet implemented by cdkd"],
|
|
18270
|
-
["BackupRetentionPeriod", "not yet implemented by cdkd"],
|
|
18271
18294
|
["BackupTarget", "not yet implemented by cdkd"],
|
|
18272
|
-
["CACertificateIdentifier", "not yet implemented by cdkd"],
|
|
18273
18295
|
["CertificateRotationRestart", "not yet implemented by cdkd"],
|
|
18274
18296
|
["CharacterSetName", "not yet implemented by cdkd"],
|
|
18275
|
-
["CopyTagsToSnapshot", "not yet implemented by cdkd"],
|
|
18276
18297
|
["CustomIAMInstanceProfile", "not yet implemented by cdkd"],
|
|
18277
18298
|
["DatabaseInsightsMode", "not yet implemented by cdkd"],
|
|
18278
18299
|
["DBClusterSnapshotIdentifier", "not yet implemented by cdkd"],
|
|
@@ -18290,20 +18311,11 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
18290
18311
|
["DomainIAMRoleName", "not yet implemented by cdkd"],
|
|
18291
18312
|
["DomainOu", "not yet implemented by cdkd"],
|
|
18292
18313
|
["EnableCloudwatchLogsExports", "not yet implemented by cdkd"],
|
|
18293
|
-
["EnablePerformanceInsights", "not yet implemented by cdkd"],
|
|
18294
18314
|
["EngineLifecycleSupport", "not yet implemented by cdkd"],
|
|
18295
|
-
["Iops", "not yet implemented by cdkd"],
|
|
18296
18315
|
["LicenseModel", "not yet implemented by cdkd"],
|
|
18297
18316
|
["MasterUserAuthenticationType", "not yet implemented by cdkd"],
|
|
18298
|
-
["MaxAllocatedStorage", "not yet implemented by cdkd"],
|
|
18299
|
-
["MultiAZ", "not yet implemented by cdkd"],
|
|
18300
18317
|
["NcharCharacterSetName", "not yet implemented by cdkd"],
|
|
18301
18318
|
["NetworkType", "not yet implemented by cdkd"],
|
|
18302
|
-
["OptionGroupName", "not yet implemented by cdkd"],
|
|
18303
|
-
["PerformanceInsightsKMSKeyId", "not yet implemented by cdkd"],
|
|
18304
|
-
["PerformanceInsightsRetentionPeriod", "not yet implemented by cdkd"],
|
|
18305
|
-
["PreferredBackupWindow", "not yet implemented by cdkd"],
|
|
18306
|
-
["PreferredMaintenanceWindow", "not yet implemented by cdkd"],
|
|
18307
18319
|
["ProcessorFeatures", "not yet implemented by cdkd"],
|
|
18308
18320
|
["PromotionTier", "not yet implemented by cdkd"],
|
|
18309
18321
|
["ReplicaMode", "not yet implemented by cdkd"],
|
|
@@ -18313,8 +18325,6 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
18313
18325
|
["SourceDBInstanceIdentifier", "not yet implemented by cdkd"],
|
|
18314
18326
|
["SourceDbiResourceId", "not yet implemented by cdkd"],
|
|
18315
18327
|
["SourceRegion", "not yet implemented by cdkd"],
|
|
18316
|
-
["StorageThroughput", "not yet implemented by cdkd"],
|
|
18317
|
-
["StorageType", "not yet implemented by cdkd"],
|
|
18318
18328
|
["TdeCredentialArn", "not yet implemented by cdkd"],
|
|
18319
18329
|
["TdeCredentialPassword", "not yet implemented by cdkd"],
|
|
18320
18330
|
["Timezone", "not yet implemented by cdkd"],
|
|
@@ -18466,15 +18476,19 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
18466
18476
|
}],
|
|
18467
18477
|
["AWS::S3::Bucket", {
|
|
18468
18478
|
handled: /* @__PURE__ */ new Set([
|
|
18479
|
+
"AbacStatus",
|
|
18469
18480
|
"AccelerateConfiguration",
|
|
18470
18481
|
"AnalyticsConfigurations",
|
|
18471
18482
|
"BucketEncryption",
|
|
18472
18483
|
"BucketName",
|
|
18484
|
+
"BucketNamePrefix",
|
|
18485
|
+
"BucketNamespace",
|
|
18473
18486
|
"CorsConfiguration",
|
|
18474
18487
|
"IntelligentTieringConfigurations",
|
|
18475
18488
|
"InventoryConfigurations",
|
|
18476
18489
|
"LifecycleConfiguration",
|
|
18477
18490
|
"LoggingConfiguration",
|
|
18491
|
+
"MetadataConfiguration",
|
|
18478
18492
|
"MetricsConfigurations",
|
|
18479
18493
|
"NotificationConfiguration",
|
|
18480
18494
|
"ObjectLockConfiguration",
|
|
@@ -18486,15 +18500,8 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
18486
18500
|
"VersioningConfiguration",
|
|
18487
18501
|
"WebsiteConfiguration"
|
|
18488
18502
|
]),
|
|
18489
|
-
silentDrop: /* @__PURE__ */ new Map([
|
|
18490
|
-
|
|
18491
|
-
["AccessControl", "Legacy canned ACL; AWS disables ACLs by default since 2023-04 — use BucketOwnershipControls + BucketPolicy / PublicAccessBlockConfiguration instead"],
|
|
18492
|
-
["BucketNamePrefix", "not yet implemented by cdkd"],
|
|
18493
|
-
["BucketNamespace", "not yet implemented by cdkd"],
|
|
18494
|
-
["MetadataConfiguration", "not yet implemented by cdkd"],
|
|
18495
|
-
["MetadataTableConfiguration", "not yet implemented by cdkd"]
|
|
18496
|
-
]),
|
|
18497
|
-
createOnlyDrops: /* @__PURE__ */ new Set(["BucketNamePrefix", "BucketNamespace"]),
|
|
18503
|
+
silentDrop: /* @__PURE__ */ new Map([["AccessControl", "Legacy canned ACL; AWS disables ACLs by default since 2023-04 — use BucketOwnershipControls + BucketPolicy / PublicAccessBlockConfiguration instead"], ["MetadataTableConfiguration", "V1 S3 Metadata, which the schema says to replace with MetadataConfiguration; S3 answered V1APIsNotAllowed where it was probed, so an SDK path could not be verified. Stays on Cloud Control"]]),
|
|
18504
|
+
createOnlyDrops: /* @__PURE__ */ new Set(),
|
|
18498
18505
|
readOnly: /* @__PURE__ */ new Set([
|
|
18499
18506
|
"Arn",
|
|
18500
18507
|
"DomainName",
|
|
@@ -28790,7 +28797,7 @@ var CloudControlProvider = class {
|
|
|
28790
28797
|
const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
|
|
28791
28798
|
if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
|
|
28792
28799
|
this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
|
|
28793
|
-
const { ASGProvider } = await import("./asg-provider-
|
|
28800
|
+
const { ASGProvider } = await import("./asg-provider-_nun2Jda.js");
|
|
28794
28801
|
const delegateRegion = ambientRegion();
|
|
28795
28802
|
let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
|
|
28796
28803
|
if (asgProvider === void 0) {
|
|
@@ -28899,7 +28906,7 @@ var CloudControlProvider = class {
|
|
|
28899
28906
|
const family = SDK_DELETE_FAMILIES.get(resourceType);
|
|
28900
28907
|
const cached = this.sdkDeleteDelegates.get(family);
|
|
28901
28908
|
if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
|
|
28902
|
-
const provider = family === "rds" ? new (await (import("./rds-provider-
|
|
28909
|
+
const provider = family === "rds" ? new (await (import("./rds-provider-C2fHUNSE.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-CGZ_G4Vz.js"))).NeptuneProvider({ region: ccRegion });
|
|
28903
28910
|
this.sdkDeleteDelegates.set(family, {
|
|
28904
28911
|
region: ccRegion,
|
|
28905
28912
|
provider
|
|
@@ -35258,6 +35265,7 @@ function createOpMasker(logger, secrets, deployBag) {
|
|
|
35258
35265
|
};
|
|
35259
35266
|
}
|
|
35260
35267
|
const OTHER_SPELLED_NAME_KEYS = {
|
|
35268
|
+
"AWS::S3::Bucket": ["BucketNamePrefix"],
|
|
35261
35269
|
"AWS::Cognito::UserPoolDomain": ["Domain"],
|
|
35262
35270
|
"AWS::Cognito::UserPoolUser": ["Username"],
|
|
35263
35271
|
"AWS::ECS::TaskDefinition": ["Family"],
|
|
@@ -43263,6 +43271,7 @@ function keptUnderGeneratedName(resource) {
|
|
|
43263
43271
|
if (typeof resource.physicalId !== "string" || resource.physicalId === "") return false;
|
|
43264
43272
|
const property = explicitNamePropertyFor(resource.resourceType);
|
|
43265
43273
|
const properties = resource.properties;
|
|
43274
|
+
if (alternateNamePropertiesFor(resource.resourceType).some((p) => properties?.[p])) return false;
|
|
43266
43275
|
return property === void 0 || !properties?.[property];
|
|
43267
43276
|
}
|
|
43268
43277
|
function keptForRetainedRecord(resource) {
|
|
@@ -43665,7 +43674,7 @@ function templateStillDeclares(template, record, nameProperties) {
|
|
|
43665
43674
|
if (!declared) return false;
|
|
43666
43675
|
if (declared.Type !== record.state.resourceType) return false;
|
|
43667
43676
|
const properties = declared.Properties ?? {};
|
|
43668
|
-
return !nameProperties.some((p) => properties[p] !== void 0 && properties[p] !== null);
|
|
43677
|
+
return ![...nameProperties, ...alternateNamePropertiesFor(declared.Type)].some((p) => properties[p] !== void 0 && properties[p] !== null);
|
|
43669
43678
|
}
|
|
43670
43679
|
const ADOPTION_REFUSED_TYPES = /* @__PURE__ */ new Set(["AWS::Lambda::LayerVersion", "AWS::ECS::TaskDefinition"]);
|
|
43671
43680
|
async function planOrphanAdoption(params) {
|
|
@@ -47278,6 +47287,125 @@ async function sendTtlWaitingOutRateLimit(send, options) {
|
|
|
47278
47287
|
}
|
|
47279
47288
|
}
|
|
47280
47289
|
|
|
47290
|
+
//#endregion
|
|
47291
|
+
//#region src/provisioning/dynamodb-vector-indexes.ts
|
|
47292
|
+
function vectorIndexesByName(value) {
|
|
47293
|
+
const out = /* @__PURE__ */ new Map();
|
|
47294
|
+
if (!Array.isArray(value)) return out;
|
|
47295
|
+
for (const entry of value) {
|
|
47296
|
+
if (typeof entry !== "object" || entry === null || Array.isArray(entry)) continue;
|
|
47297
|
+
const name = entry["IndexName"];
|
|
47298
|
+
if (typeof name === "string") out.set(name, entry);
|
|
47299
|
+
}
|
|
47300
|
+
return out;
|
|
47301
|
+
}
|
|
47302
|
+
function vectorIndexesShapeDetail(value) {
|
|
47303
|
+
if (value === void 0) return void 0;
|
|
47304
|
+
if (!Array.isArray(value)) return `VectorIndexes must be a list, got ${typeof value}`;
|
|
47305
|
+
return value.every((entry) => typeof entry === "object" && entry !== null && !Array.isArray(entry) && typeof entry["IndexName"] === "string") ? void 0 : `every VectorIndexes entry must carry a string IndexName`;
|
|
47306
|
+
}
|
|
47307
|
+
function vectorIndexForSend(entry) {
|
|
47308
|
+
const out = {};
|
|
47309
|
+
for (const key of [
|
|
47310
|
+
"IndexName",
|
|
47311
|
+
"VectorAttribute",
|
|
47312
|
+
"Projection",
|
|
47313
|
+
"DistanceFunction"
|
|
47314
|
+
]) if (entry[key] !== void 0) out[key] = entry[key];
|
|
47315
|
+
if (entry["Dimensions"] !== void 0) out["Dimensions"] = coerceCfnInteger(entry["Dimensions"]) ?? entry["Dimensions"];
|
|
47316
|
+
if (entry["SearchSchema"] !== void 0) out["SearchSchema"] = entry["SearchSchema"];
|
|
47317
|
+
return out;
|
|
47318
|
+
}
|
|
47319
|
+
function vectorIndexesForCreate(value) {
|
|
47320
|
+
if (value === void 0 || value === null) return void 0;
|
|
47321
|
+
if (!Array.isArray(value)) return value;
|
|
47322
|
+
return value.map((entry) => typeof entry === "object" && entry !== null && !Array.isArray(entry) ? vectorIndexForSend(entry) : entry);
|
|
47323
|
+
}
|
|
47324
|
+
function sortedByJson(list) {
|
|
47325
|
+
if (!Array.isArray(list)) return list;
|
|
47326
|
+
return [...list].sort((a, b) => {
|
|
47327
|
+
const x = JSON.stringify(a) ?? "";
|
|
47328
|
+
const y = JSON.stringify(b) ?? "";
|
|
47329
|
+
return x < y ? -1 : x > y ? 1 : 0;
|
|
47330
|
+
});
|
|
47331
|
+
}
|
|
47332
|
+
function vectorIndexKey(entry) {
|
|
47333
|
+
const e = entry;
|
|
47334
|
+
const projection = e["Projection"];
|
|
47335
|
+
const normalizedProjection = typeof projection === "object" && projection !== null && !Array.isArray(projection) ? {
|
|
47336
|
+
ProjectionType: projection["ProjectionType"],
|
|
47337
|
+
NonKeyAttributes: sortedByJson(nonEmpty(projection["NonKeyAttributes"]))
|
|
47338
|
+
} : projection;
|
|
47339
|
+
const attribute = e["VectorAttribute"];
|
|
47340
|
+
return JSON.stringify([
|
|
47341
|
+
e["IndexName"],
|
|
47342
|
+
typeof attribute === "object" && attribute !== null ? attribute["AttributeName"] : attribute,
|
|
47343
|
+
coerceCfnInteger(e["Dimensions"]) ?? e["Dimensions"],
|
|
47344
|
+
e["DistanceFunction"],
|
|
47345
|
+
normalizedProjection,
|
|
47346
|
+
sortedByJson(Array.isArray(e["SearchSchema"]) && e["SearchSchema"].length > 0 ? e["SearchSchema"].map((s) => typeof s === "object" && s !== null ? {
|
|
47347
|
+
AttributeName: s["AttributeName"],
|
|
47348
|
+
SearchSchemaElementType: s["SearchSchemaElementType"]
|
|
47349
|
+
} : s) : nonEmpty(e["SearchSchema"]))
|
|
47350
|
+
]);
|
|
47351
|
+
}
|
|
47352
|
+
function nonEmpty(value) {
|
|
47353
|
+
return Array.isArray(value) && value.length === 0 ? void 0 : value;
|
|
47354
|
+
}
|
|
47355
|
+
function planVectorIndexUpdates(previous, desired, live) {
|
|
47356
|
+
const prevByName = vectorIndexesByName(previous);
|
|
47357
|
+
const desiredByName = vectorIndexesByName(desired);
|
|
47358
|
+
const liveByName = live === void 0 ? void 0 : new Map(live.filter((d) => typeof d.IndexName === "string").map((d) => [d.IndexName, d]));
|
|
47359
|
+
const plan = {
|
|
47360
|
+
ops: [],
|
|
47361
|
+
changed: [],
|
|
47362
|
+
adopted: [],
|
|
47363
|
+
alreadyGone: []
|
|
47364
|
+
};
|
|
47365
|
+
const liveHolds = (name, entry) => {
|
|
47366
|
+
const l = liveByName?.get(name);
|
|
47367
|
+
return l !== void 0 && l.IndexStatus !== "DELETING" && vectorIndexKey(l) === vectorIndexKey(entry);
|
|
47368
|
+
};
|
|
47369
|
+
for (const name of prevByName.keys()) {
|
|
47370
|
+
if (desiredByName.has(name)) continue;
|
|
47371
|
+
const l = liveByName?.get(name);
|
|
47372
|
+
if (liveByName !== void 0 && (l === void 0 || l.IndexStatus === "DELETING")) {
|
|
47373
|
+
plan.alreadyGone.push(name);
|
|
47374
|
+
continue;
|
|
47375
|
+
}
|
|
47376
|
+
plan.ops.push({ Delete: { IndexName: name } });
|
|
47377
|
+
}
|
|
47378
|
+
for (const [name, entry] of desiredByName) {
|
|
47379
|
+
const before = prevByName.get(name);
|
|
47380
|
+
if (before === void 0) {
|
|
47381
|
+
const l = liveByName?.get(name);
|
|
47382
|
+
if (l === void 0 || l.IndexStatus === "DELETING") plan.ops.push({ Create: vectorIndexForSend(entry) });
|
|
47383
|
+
else if (liveHolds(name, entry)) plan.adopted.push(name);
|
|
47384
|
+
else plan.changed.push(name);
|
|
47385
|
+
continue;
|
|
47386
|
+
}
|
|
47387
|
+
if (vectorIndexKey(before) === vectorIndexKey(entry)) continue;
|
|
47388
|
+
if (!liveHolds(name, entry)) plan.changed.push(name);
|
|
47389
|
+
}
|
|
47390
|
+
return plan;
|
|
47391
|
+
}
|
|
47392
|
+
function readbackVectorIndexes(live) {
|
|
47393
|
+
if (live === void 0 || live.length === 0) return void 0;
|
|
47394
|
+
return live.map((d) => {
|
|
47395
|
+
const out = {};
|
|
47396
|
+
if (d.IndexName !== void 0) out["IndexName"] = d.IndexName;
|
|
47397
|
+
if (d.VectorAttribute !== void 0) out["VectorAttribute"] = d.VectorAttribute;
|
|
47398
|
+
if (d.Dimensions !== void 0) out["Dimensions"] = d.Dimensions;
|
|
47399
|
+
if (d.DistanceFunction !== void 0) out["DistanceFunction"] = d.DistanceFunction;
|
|
47400
|
+
if (d.Projection !== void 0) out["Projection"] = d.Projection;
|
|
47401
|
+
if (d.SearchSchema !== void 0 && d.SearchSchema.length > 0) out["SearchSchema"] = d.SearchSchema;
|
|
47402
|
+
return out;
|
|
47403
|
+
});
|
|
47404
|
+
}
|
|
47405
|
+
function vectorIndexesSettled(live) {
|
|
47406
|
+
return (live ?? []).every((d) => d.IndexStatus === void 0 || d.IndexStatus === "ACTIVE");
|
|
47407
|
+
}
|
|
47408
|
+
|
|
47281
47409
|
//#endregion
|
|
47282
47410
|
//#region src/provisioning/dynamodb-index-busy-delete.ts
|
|
47283
47411
|
function maskedLogger(logger, maskSecrets, name) {
|
|
@@ -48518,7 +48646,12 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
48518
48646
|
"TimeToLiveSpecification",
|
|
48519
48647
|
"WriteProvisionedThroughputSettings",
|
|
48520
48648
|
"WriteOnDemandThroughputSettings",
|
|
48521
|
-
"DeletionProtectionEnabled"
|
|
48649
|
+
"DeletionProtectionEnabled",
|
|
48650
|
+
"ReadOnDemandThroughputSettings",
|
|
48651
|
+
"ReadProvisionedThroughputSettings",
|
|
48652
|
+
"TableType",
|
|
48653
|
+
"VectorIndexes",
|
|
48654
|
+
"WarmThroughput"
|
|
48522
48655
|
])]]);
|
|
48523
48656
|
constructor() {
|
|
48524
48657
|
const awsClients = getAwsClients();
|
|
@@ -48577,12 +48710,12 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
48577
48710
|
operationSinks(context, pairs) {
|
|
48578
48711
|
return withDerivedNameMasks(this.logger, createMaskedLogSinks(this.logger, context?.maskSecrets), pairs);
|
|
48579
48712
|
}
|
|
48580
|
-
wrapMaskedError(log, error, build) {
|
|
48713
|
+
wrapMaskedError(log, error, build, indexNoun) {
|
|
48581
48714
|
const failure = describeAwsFailure(error);
|
|
48582
48715
|
if (!failure.redacted) return wrapMaskedAwsError(log.mask, error, build);
|
|
48583
48716
|
log.debug(build(log.mask(failure.detail)).message);
|
|
48584
48717
|
const relay = isAuxiliaryFailure(error) ? "" : relayedNameCollision(failure.detail);
|
|
48585
|
-
const wrapped = build(`${log.mask(failure.summary)}${relay}${relayedIndexBusyDelete(failure.detail)}` + relayedEncryptionChangeLimit(failure.detail));
|
|
48718
|
+
const wrapped = build(`${log.mask(failure.summary)}${relay}${relayedIndexBusyDelete(failure.detail, indexNoun)}` + relayedEncryptionChangeLimit(failure.detail));
|
|
48586
48719
|
return error instanceof Error ? markRedactedCause(wrapped) : wrapped;
|
|
48587
48720
|
}
|
|
48588
48721
|
cleanupFailureText(log, head, error) {
|
|
@@ -48591,8 +48724,8 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
48591
48724
|
log.debug(`${head}${log.mask(failure.detail)}`);
|
|
48592
48725
|
return log.mask(failure.summary);
|
|
48593
48726
|
}
|
|
48594
|
-
wrapDeleteError(log, error, build) {
|
|
48595
|
-
const thrown = this.wrapMaskedError(log, error, build);
|
|
48727
|
+
wrapDeleteError(log, error, build, indexNoun) {
|
|
48728
|
+
const thrown = this.wrapMaskedError(log, error, build, indexNoun);
|
|
48596
48729
|
return error instanceof Error && error.name.includes("NotFound") ? markNotGone(thrown) : thrown;
|
|
48597
48730
|
}
|
|
48598
48731
|
async create(logicalId, resourceType, properties, context) {
|
|
@@ -48718,6 +48851,12 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
48718
48851
|
}
|
|
48719
48852
|
if (sdkIndexes.length > 0) createParams.GlobalSecondaryIndexes = sdkIndexes;
|
|
48720
48853
|
if (properties["LocalSecondaryIndexes"]) createParams.LocalSecondaryIndexes = properties["LocalSecondaryIndexes"];
|
|
48854
|
+
const createVectorIndexes = vectorIndexesForCreate(properties["VectorIndexes"]);
|
|
48855
|
+
if (createVectorIndexes !== void 0) createParams.VectorIndexes = createVectorIndexes;
|
|
48856
|
+
const warmCoercion = coerceWarmThroughput(properties["WarmThroughput"]);
|
|
48857
|
+
if (warmCoercion.spec) createParams.WarmThroughput = warmCoercion.spec;
|
|
48858
|
+
const warmDiagnostic = warmThroughputDiagnostic(properties["WarmThroughput"], warmCoercion, void 0);
|
|
48859
|
+
if (warmDiagnostic) diagnostics.push(warmDiagnostic);
|
|
48721
48860
|
const createMode = readReplicationMode(properties);
|
|
48722
48861
|
if (createMode.kind === "usable") createParams.GlobalTableSettingsReplicationMode = createMode.mode;
|
|
48723
48862
|
const sseEnabledRefusal = configBooleanRefusal(properties["SSESpecification"], "SSEEnabled", "AWS::DynamoDB::GlobalTable SSESpecification");
|
|
@@ -48764,6 +48903,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
48764
48903
|
}
|
|
48765
48904
|
try {
|
|
48766
48905
|
const tableInfo = await this.waitForTableActive(tableName, logicalId, void 0, maskSecrets);
|
|
48906
|
+
if (createVectorIndexes !== void 0) await this.waitForVectorIndexesSettled(tableName, logicalId, maskSecrets);
|
|
48767
48907
|
for (const replica of wiringReplicas) {
|
|
48768
48908
|
const region = replica["Region"];
|
|
48769
48909
|
if (!region || region === currentRegion) continue;
|
|
@@ -48823,12 +48963,14 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
48823
48963
|
ReplicaUpdates: [{ Delete: { RegionName: region } }]
|
|
48824
48964
|
}));
|
|
48825
48965
|
await this.waitForReplicaGone(tableName, region, logicalId, void 0, void 0, maskSecrets);
|
|
48966
|
+
await this.deregisterRemovedReplicaScalableTargets(tableName, region, { maskSecrets });
|
|
48826
48967
|
} catch (replicaCleanupErr) {
|
|
48827
48968
|
if (isInterruptedWaitError(replicaCleanupErr)) throw replicaCleanupErr;
|
|
48828
48969
|
warn(`Partial-create cleanup: failed to drop replica ${region} on ${tableName}: ${this.cleanupFailureText(log, `Partial-create cleanup: failed to drop replica ${region} on ${tableName}: `, replicaCleanupErr)} Run: ${pasteableAwsCommand(maskSecrets)`aws dynamodb update-table --table-name ${tableName} --replica-updates 'Delete={RegionName='${region}'}' --region ${currentRegion}`.render()}`);
|
|
48829
48970
|
}
|
|
48830
48971
|
}
|
|
48831
|
-
await this.
|
|
48972
|
+
if (createVectorIndexes !== void 0) await this.rollBackCreatedVectorTable(logicalId, tableName, maskSecrets);
|
|
48973
|
+
else await this.dynamoDBClient.send(new DeleteTableCommand({ TableName: tableName }));
|
|
48832
48974
|
retractCreatedResource(logicalId, resourceType, tableName);
|
|
48833
48975
|
} catch (cleanupErr) {
|
|
48834
48976
|
tableLeftBehind = true;
|
|
@@ -48841,6 +48983,32 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
48841
48983
|
throw thrown;
|
|
48842
48984
|
}
|
|
48843
48985
|
}
|
|
48986
|
+
async rollBackCreatedVectorTable(logicalId, tableName, maskSecrets) {
|
|
48987
|
+
const logger = maskedLogger(this.logger, maskSecrets, tableName);
|
|
48988
|
+
const allowanceMs = Math.min(resolveDynamoDbDeleteBudgetMs(), enclosingDeadlineRemainingMs() - DYNAMODB_DELETE_DEADLINE_MARGIN_MS);
|
|
48989
|
+
const budget = allowanceMs > 0 ? new ElapsedBudget(allowanceMs, resolveDynamoDbDeleteBudgetClock()) : void 0;
|
|
48990
|
+
await deleteTableWithIndexBusyRetry({
|
|
48991
|
+
logicalId,
|
|
48992
|
+
physicalId: tableName,
|
|
48993
|
+
typeLabel: "GlobalTable",
|
|
48994
|
+
indexNoun: TABLE_INDEX_NOUN,
|
|
48995
|
+
maxRetries: 8,
|
|
48996
|
+
logger,
|
|
48997
|
+
deleteTable: async () => {
|
|
48998
|
+
await this.dynamoDBClient.send(new DeleteTableCommand({ TableName: tableName }));
|
|
48999
|
+
},
|
|
49000
|
+
reArm: () => this.waitForIndexesActive(tableName, logicalId, {
|
|
49001
|
+
maxAttempts: 900,
|
|
49002
|
+
shortCapUnlessVectorBusy: 60,
|
|
49003
|
+
proceedNote: DELETE_INDEX_WAIT_PROCEED_NOTE,
|
|
49004
|
+
...budget !== void 0 && { budget },
|
|
49005
|
+
maskSecrets
|
|
49006
|
+
}),
|
|
49007
|
+
shouldKeepRetrying: () => budget !== void 0 && !budget.isExhausted(),
|
|
49008
|
+
retryWarning: () => `DynamoDB GlobalTable ${logicalId}: AWS refused the DeleteTable rolling back the partially-created table ${tableName} because ${TABLE_INDEX_NOUN} is still being created, updated or deleted. Waiting for the indexes to settle and retrying (up to ${8} retries in all, within ~${Math.max(1, Math.round((budget?.totalMs ?? 0) / 6e4))} minutes).`,
|
|
49009
|
+
sleepSeam: deleteTableRetryDelays
|
|
49010
|
+
});
|
|
49011
|
+
}
|
|
48844
49012
|
reportThroughputDiagnostics(diagnostics, logicalId, physicalId, maskSecrets = (text) => text) {
|
|
48845
49013
|
const warn = (message) => this.logger.warn(maskSecrets(message));
|
|
48846
49014
|
const seen = /* @__PURE__ */ new Set();
|
|
@@ -48859,6 +49027,47 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
48859
49027
|
const format = (spec) => WARM_THROUGHPUT_MEMBERS.filter((m) => spec?.[m] !== void 0).map((m) => `${m}=${spec?.[m]}`).join(", ");
|
|
48860
49028
|
warn(`DynamoDB GlobalTable ${logicalId}: GSI '${maskSecrets(indexName)}' on ${physicalId}: WarmThroughput was NOT sent — the template asks for ${format(desired)} while AWS reports ${format(live)}, and DynamoDB rejects a decrease ("decreasing WarmThroughput is not supported"). Warm throughput only rises with a table's traffic, so a template below the live value can never be applied; raise it to at least the live value, or remove it. Every other change to this index is applied normally.`);
|
|
48861
49029
|
}
|
|
49030
|
+
tableWarmThroughputForSend(desired, live, logicalId, physicalId, maskSecrets) {
|
|
49031
|
+
if (!desired) return void 0;
|
|
49032
|
+
const declared = WARM_THROUGHPUT_MEMBERS.filter((m) => desired[m] !== void 0);
|
|
49033
|
+
if (declared.every((m) => desired[m] === live?.[m])) return void 0;
|
|
49034
|
+
if (!isWarmThroughputDecrease(desired, live)) return desired;
|
|
49035
|
+
const format = (spec) => declared.map((m) => `${m}=${spec?.[m]}`).join(", ");
|
|
49036
|
+
this.logger.warn(maskSecrets(`DynamoDB GlobalTable ${logicalId}: table ${maskSecrets(physicalId)}: WarmThroughput was NOT sent — the template asks for ${format(desired)} while AWS reports ${format(live)}, and DynamoDB rejects a decrease. Raise it to at least the live value, or remove it. Every other change to this table is applied normally.`));
|
|
49037
|
+
}
|
|
49038
|
+
async applyVectorIndexUpdates(physicalId, logicalId, plan, desiredAttributeDefinitions, maskSecrets) {
|
|
49039
|
+
const scope = (name) => `vector index ${typeof name === "string" ? maskSecrets(name) : "<unnamed>"} on DynamoDB GlobalTable ${maskSecrets(physicalId)}`;
|
|
49040
|
+
for (const name of plan.alreadyGone) this.logger.debug(maskSecrets(`${scope(name)} is recorded but not live; skipping its Delete`));
|
|
49041
|
+
for (const name of plan.adopted) this.logger.warn(maskSecrets(`${scope(name)} already exists in AWS with the declared definition but is absent from cdkd's recorded previous state, so its Create is being skipped. This usually means an earlier deploy created the index and then failed before state was written.`));
|
|
49042
|
+
if (plan.ops.length === 0) return;
|
|
49043
|
+
await this.waitForVectorIndexesSettled(physicalId, logicalId, maskSecrets);
|
|
49044
|
+
markUnsettled("VectorIndexes");
|
|
49045
|
+
for (const op of plan.ops) {
|
|
49046
|
+
const input = {
|
|
49047
|
+
TableName: physicalId,
|
|
49048
|
+
VectorIndexUpdates: [op]
|
|
49049
|
+
};
|
|
49050
|
+
if (op.Create && desiredAttributeDefinitions) input.AttributeDefinitions = desiredAttributeDefinitions;
|
|
49051
|
+
await this.dynamoDBClient.send(new UpdateTableCommand(input));
|
|
49052
|
+
if (op.Create?.IndexName !== void 0) markAttemptedItems("VectorIndexes", [op.Create.IndexName]);
|
|
49053
|
+
await this.waitForVectorIndexesSettled(physicalId, logicalId, maskSecrets);
|
|
49054
|
+
this.logger.debug(maskSecrets(`${op.Create ? "created" : "deleted"} ` + scope(op.Create?.IndexName ?? op.Delete?.IndexName)));
|
|
49055
|
+
}
|
|
49056
|
+
}
|
|
49057
|
+
async waitForVectorIndexesSettled(tableName, logicalId, maskSecrets) {
|
|
49058
|
+
const watch = startInterruptWatch(maskSecrets(`DynamoDB vector indexes on ${maskSecrets(tableName)}`));
|
|
49059
|
+
try {
|
|
49060
|
+
for (let attempt = 1; attempt <= VECTOR_INDEX_SETTLE_ATTEMPTS; attempt++) {
|
|
49061
|
+
if (watch.isInterrupted()) throw watch.onInterrupted();
|
|
49062
|
+
const table = (await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName }))).Table;
|
|
49063
|
+
if (table?.TableStatus === "ACTIVE" && vectorIndexesSettled(table.VectorIndexes)) return;
|
|
49064
|
+
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
49065
|
+
}
|
|
49066
|
+
} finally {
|
|
49067
|
+
watch.dispose();
|
|
49068
|
+
}
|
|
49069
|
+
throw new Error(maskSecrets(`DynamoDB GlobalTable ${logicalId}: table ${maskSecrets(tableName)} and its vector indexes did not settle within ${VECTOR_INDEX_SETTLE_ATTEMPTS} polls`));
|
|
49070
|
+
}
|
|
48862
49071
|
async addReplica(tableName, replica, region, logicalId, billingMode, diagnostics, maskSecrets = (text) => text) {
|
|
48863
49072
|
const create = { RegionName: region };
|
|
48864
49073
|
const kmsMasterKeyId = readReplicaKmsMasterKeyId(replica);
|
|
@@ -49664,6 +49873,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
49664
49873
|
if (refusal === void 0 && !deepEqual(properties["StreamSpecification"], previousProperties["StreamSpecification"])) refusal = configStringRefusal(properties["StreamSpecification"], "StreamViewType", "NEW_AND_OLD_IMAGES", "AWS::DynamoDB::GlobalTable StreamSpecification");
|
|
49665
49874
|
if (refusal === void 0 && (changed("SSESpecification") || !deepEqual(replicaKeyBlocks(properties), replicaKeyBlocks(previousProperties)))) refusal = configBooleanRefusal(properties["SSESpecification"], "SSEEnabled", "AWS::DynamoDB::GlobalTable SSESpecification");
|
|
49666
49875
|
if (refusal === void 0 && changed("GlobalSecondaryIndexes")) refusal = globalSecondaryIndexesShapeDetail(properties["GlobalSecondaryIndexes"], maskSecrets);
|
|
49876
|
+
if (refusal === void 0 && changed("VectorIndexes")) refusal = vectorIndexesShapeDetail(properties["VectorIndexes"]);
|
|
49667
49877
|
if (refusal === void 0) refusal = replicaSettingsRefusal(properties, previousProperties);
|
|
49668
49878
|
if (refusal !== void 0) refuse(refusal);
|
|
49669
49879
|
} else {
|
|
@@ -49676,6 +49886,15 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
49676
49886
|
await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
|
|
49677
49887
|
const describeResp = await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: physicalId }));
|
|
49678
49888
|
const tableArn = describeResp.Table?.TableArn;
|
|
49889
|
+
const vectorIndexesChanged = !deepEqual(properties["VectorIndexes"], previousProperties["VectorIndexes"]);
|
|
49890
|
+
const vectorIndexShape = vectorIndexesShapeDetail(properties["VectorIndexes"]);
|
|
49891
|
+
if (vectorIndexShape !== void 0 && vectorIndexesChanged) warn(`${vectorIndexShape}; the VectorIndexes change was not applied`);
|
|
49892
|
+
const vectorIndexPlan = vectorIndexShape === void 0 && vectorIndexesChanged ? planVectorIndexUpdates(previousProperties["VectorIndexes"], properties["VectorIndexes"], describeResp.Table === void 0 ? void 0 : describeResp.Table.VectorIndexes ?? []) : void 0;
|
|
49893
|
+
if (vectorIndexPlan !== void 0 && vectorIndexPlan.changed.length > 0) {
|
|
49894
|
+
const vectorMessage = `AWS::DynamoDB::GlobalTable ${logicalId}: VectorIndexes ${vectorIndexPlan.changed.map((name) => maskSecrets(name)).join(", ")} changed definition, which DynamoDB cannot modify in place`;
|
|
49895
|
+
if (context?.replayingState !== true && context?.desiredFromAwsReadback !== true) throw new ProvisioningError(`${maskSecrets(vectorMessage)}. Nothing was applied to the table; rename the index (so it is dropped and re-created) or revert the change`, resourceType, logicalId, physicalId);
|
|
49896
|
+
warn(`${vectorMessage}; that change was not applied`);
|
|
49897
|
+
}
|
|
49679
49898
|
const extractLocalTags = (props) => {
|
|
49680
49899
|
return localReplicaEntry(props, currentRegion)?.["Tags"];
|
|
49681
49900
|
};
|
|
@@ -49709,6 +49928,10 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
49709
49928
|
const newBilling = billingUnusable ? oldBilling : requestedBilling;
|
|
49710
49929
|
const onDemandCeilingLive = oldBilling === "PAY_PER_REQUEST" && newBilling === "PAY_PER_REQUEST";
|
|
49711
49930
|
const diagnostics = [];
|
|
49931
|
+
if (!deepEqual(properties["WarmThroughput"], previousProperties["WarmThroughput"])) {
|
|
49932
|
+
const warmUpdateDiagnostic = warmThroughputDiagnostic(properties["WarmThroughput"], coerceWarmThroughput(properties["WarmThroughput"]), void 0);
|
|
49933
|
+
if (warmUpdateDiagnostic) diagnostics.push(warmUpdateDiagnostic);
|
|
49934
|
+
}
|
|
49712
49935
|
const desiredCeilings = collectTableOnDemandCeilings(properties, currentRegion, diagnostics, maskSecrets);
|
|
49713
49936
|
const flippingToProvisioned = oldBilling !== newBilling && newBilling === "PROVISIONED";
|
|
49714
49937
|
if (flippingToProvisioned) derivePerCallProvisionedThroughput(properties, currentRegion, "seed", diagnostics, maskSecrets);
|
|
@@ -49826,7 +50049,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
49826
50049
|
if (flatChanged) {
|
|
49827
50050
|
if (flatUpdate.DeletionProtectionEnabled !== void 0) markUnsettled("Replicas");
|
|
49828
50051
|
if (flatUpdate.StreamSpecification !== void 0) markUnsettled("StreamSpecification");
|
|
49829
|
-
if (flatUpdate.OnDemandThroughput !== void 0) markUnsettled("WriteOnDemandThroughputSettings");
|
|
50052
|
+
if (flatUpdate.OnDemandThroughput !== void 0) markUnsettled("WriteOnDemandThroughputSettings", "ReadOnDemandThroughputSettings");
|
|
49830
50053
|
await this.dynamoDBClient.send(new UpdateTableCommand(flatUpdate));
|
|
49831
50054
|
await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
|
|
49832
50055
|
}
|
|
@@ -49882,7 +50105,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
49882
50105
|
}
|
|
49883
50106
|
if (indexUpdates.length > 0) billingUpdate.GlobalSecondaryIndexUpdates = indexUpdates;
|
|
49884
50107
|
}
|
|
49885
|
-
markUnsettled("BillingMode", "WriteProvisionedThroughputSettings");
|
|
50108
|
+
markUnsettled("BillingMode", "WriteProvisionedThroughputSettings", TABLE_READ_PROVISIONED_KEY);
|
|
49886
50109
|
if (billingUpdate.GlobalSecondaryIndexUpdates !== void 0) {
|
|
49887
50110
|
markUnsettled("GlobalSecondaryIndexes");
|
|
49888
50111
|
for (const indexUpdate of billingUpdate.GlobalSecondaryIndexUpdates) debug(`Sending UpdateTable GlobalSecondaryIndexUpdates Update for index ${maskSecrets(indexUpdate.Update?.IndexName ?? "")} on ${physicalId} (with the billing mode change)`);
|
|
@@ -49891,13 +50114,29 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
49891
50114
|
await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
|
|
49892
50115
|
}
|
|
49893
50116
|
if (deferCeilingsPastFlip) {
|
|
49894
|
-
markUnsettled("WriteOnDemandThroughputSettings");
|
|
50117
|
+
markUnsettled("WriteOnDemandThroughputSettings", "ReadOnDemandThroughputSettings");
|
|
49895
50118
|
await this.dynamoDBClient.send(new UpdateTableCommand({
|
|
49896
50119
|
TableName: physicalId,
|
|
49897
50120
|
OnDemandThroughput: onDemandPayload
|
|
49898
50121
|
}));
|
|
49899
50122
|
await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
|
|
49900
50123
|
}
|
|
50124
|
+
const readBlockOf = (bag) => localReplicaEntry(bag, currentRegion)?.[TABLE_READ_PROVISIONED_KEY] ?? bag[TABLE_READ_PROVISIONED_KEY];
|
|
50125
|
+
if (oldBilling === "PROVISIONED" && newBilling === "PROVISIONED" && liveBillingMode === "PROVISIONED" && (properties[TABLE_READ_PROVISIONED_KEY] !== void 0 || previousProperties[TABLE_READ_PROVISIONED_KEY] !== void 0) && !deepEqual(readBlockOf(properties), readBlockOf(previousProperties))) {
|
|
50126
|
+
const wantRead = coerceCfnInteger(asRecord(readBlockOf(properties))?.["ReadCapacityUnits"]);
|
|
50127
|
+
const liveThroughput = describeResp.Table?.ProvisionedThroughput;
|
|
50128
|
+
if (wantRead !== void 0 && liveThroughput?.WriteCapacityUnits !== void 0 && wantRead !== liveThroughput.ReadCapacityUnits) {
|
|
50129
|
+
markUnsettled(TABLE_READ_PROVISIONED_KEY);
|
|
50130
|
+
await this.dynamoDBClient.send(new UpdateTableCommand({
|
|
50131
|
+
TableName: physicalId,
|
|
50132
|
+
ProvisionedThroughput: {
|
|
50133
|
+
ReadCapacityUnits: wantRead,
|
|
50134
|
+
WriteCapacityUnits: liveThroughput.WriteCapacityUnits
|
|
50135
|
+
}
|
|
50136
|
+
}));
|
|
50137
|
+
await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
|
|
50138
|
+
}
|
|
50139
|
+
}
|
|
49901
50140
|
const writeAutoScalingOld = (previousProperties["WriteProvisionedThroughputSettings"] ?? {})["WriteCapacityAutoScalingSettings"];
|
|
49902
50141
|
const writeAutoScalingNew = (properties["WriteProvisionedThroughputSettings"] ?? {})["WriteCapacityAutoScalingSettings"];
|
|
49903
50142
|
const effectiveNewAutoScaling = oldBilling === "PROVISIONED" && newBilling === "PAY_PER_REQUEST" ? void 0 : writeAutoScalingNew;
|
|
@@ -49930,6 +50169,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
49930
50169
|
ReplicaUpdates: [{ Delete: { RegionName: region } }]
|
|
49931
50170
|
}));
|
|
49932
50171
|
await this.waitForReplicaGone(physicalId, region, logicalId, void 0, void 0, maskSecrets);
|
|
50172
|
+
await this.deregisterRemovedReplicaScalableTargets(physicalId, region, { maskSecrets });
|
|
49933
50173
|
}
|
|
49934
50174
|
for (const replica of replicaDiff.added) {
|
|
49935
50175
|
const region = replica["Region"];
|
|
@@ -50103,6 +50343,19 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
50103
50343
|
}));
|
|
50104
50344
|
await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
|
|
50105
50345
|
}
|
|
50346
|
+
if (vectorIndexPlan !== void 0) await this.applyVectorIndexUpdates(physicalId, logicalId, vectorIndexPlan, properties["AttributeDefinitions"], maskSecrets);
|
|
50347
|
+
if (!deepEqual(properties["WarmThroughput"], previousProperties["WarmThroughput"])) {
|
|
50348
|
+
const warmCoercion = coerceWarmThroughput(properties["WarmThroughput"]);
|
|
50349
|
+
const warmToSend = this.tableWarmThroughputForSend(warmCoercion.spec, describeResp.Table?.WarmThroughput, logicalId, physicalId, maskSecrets);
|
|
50350
|
+
if (warmToSend) {
|
|
50351
|
+
markUnsettled("WarmThroughput");
|
|
50352
|
+
await this.dynamoDBClient.send(new UpdateTableCommand({
|
|
50353
|
+
TableName: physicalId,
|
|
50354
|
+
WarmThroughput: warmToSend
|
|
50355
|
+
}));
|
|
50356
|
+
await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
|
|
50357
|
+
}
|
|
50358
|
+
}
|
|
50106
50359
|
const skipAutoScalingForUnusableGsi = desiredGsiUnusable && newBilling !== "PAY_PER_REQUEST";
|
|
50107
50360
|
const autoScalingMeaningfulForIndexes = (newBilling === "PROVISIONED" || oldBilling === "PROVISIONED") && !skipAutoScalingForUnusableGsi;
|
|
50108
50361
|
if (skipAutoScalingForUnusableGsi && oldBilling === "PROVISIONED") warn(`AWS::DynamoDB::GlobalTable ${logicalId}: skipping the auto-scaling target reconcile because the GlobalSecondaryIndexes block is unusable — the per-index targets are derived from it, so reconciling would deregister the live indexes' scalable targets. Existing targets are left untouched.`);
|
|
@@ -50513,31 +50766,38 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
50513
50766
|
const cause = regionErr instanceof Error ? regionErr : void 0;
|
|
50514
50767
|
throw new ProvisioningError(`Could not resolve client region for DynamoDB GlobalTable ${logicalId} delete — would risk dropping the local replica`, resourceType, logicalId, physicalId, cause);
|
|
50515
50768
|
}
|
|
50516
|
-
let
|
|
50769
|
+
let preDeleteTable;
|
|
50770
|
+
let indexNoun;
|
|
50517
50771
|
try {
|
|
50518
50772
|
const describe = await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: physicalId }));
|
|
50519
50773
|
const replicas = describe.Table?.Replicas ?? [];
|
|
50520
|
-
|
|
50774
|
+
preDeleteTable = describe.Table;
|
|
50775
|
+
if ((describe.Table?.VectorIndexes ?? []).length > 0) indexNoun = TABLE_INDEX_NOUN;
|
|
50521
50776
|
const tableIndexNames = (describe.Table?.GlobalSecondaryIndexes ?? []).map((gsi) => gsi.IndexName).filter((name) => typeof name === "string");
|
|
50522
50777
|
for (const replica of replicas) {
|
|
50523
50778
|
const region = replica.RegionName;
|
|
50524
50779
|
if (!region || region === currentRegion) continue;
|
|
50525
50780
|
try {
|
|
50526
|
-
await this.applyAutoScalingDiff(physicalId, "dynamodb:table:ReadCapacityUnits", {}, void 0, this.getRegionalAutoScalingClient(region), void 0, budget,
|
|
50527
|
-
for (const indexName of tableIndexNames) await this.applyAutoScalingDiff(physicalId, "dynamodb:index:ReadCapacityUnits", {}, void 0, this.getRegionalAutoScalingClient(region), indexName, budget,
|
|
50781
|
+
await this.applyAutoScalingDiff(physicalId, "dynamodb:table:ReadCapacityUnits", {}, void 0, this.getRegionalAutoScalingClient(region), void 0, budget, deleteMask, progress);
|
|
50782
|
+
for (const indexName of tableIndexNames) await this.applyAutoScalingDiff(physicalId, "dynamodb:index:ReadCapacityUnits", {}, void 0, this.getRegionalAutoScalingClient(region), indexName, budget, deleteMask, progress);
|
|
50528
50783
|
await this.dropReplicaForDelete(physicalId, region, context?.removeProtection === true, logicalId, budget, deleteMask);
|
|
50529
50784
|
progress.stripped = true;
|
|
50530
50785
|
await this.waitForReplicaGone(physicalId, region, logicalId, REPLICA_GONE_WAIT_ATTEMPTS, budget, context?.maskSecrets);
|
|
50786
|
+
await this.deregisterRemovedReplicaScalableTargets(physicalId, region, {
|
|
50787
|
+
budget,
|
|
50788
|
+
maskSecrets: deleteMask,
|
|
50789
|
+
progress
|
|
50790
|
+
});
|
|
50531
50791
|
} catch (replicaErr) {
|
|
50532
50792
|
if (!(replicaErr instanceof ResourceNotFoundException$1)) throw replicaErr;
|
|
50533
50793
|
}
|
|
50534
50794
|
}
|
|
50535
50795
|
const localAsClient = await this.getLocalAutoScalingClient();
|
|
50536
|
-
await this.applyAutoScalingDiff(physicalId, "dynamodb:table:ReadCapacityUnits", {}, void 0, localAsClient, void 0, budget,
|
|
50537
|
-
await this.applyAutoScalingDiff(physicalId, "dynamodb:table:WriteCapacityUnits", {}, void 0, localAsClient, void 0, budget,
|
|
50796
|
+
await this.applyAutoScalingDiff(physicalId, "dynamodb:table:ReadCapacityUnits", {}, void 0, localAsClient, void 0, budget, deleteMask, progress);
|
|
50797
|
+
await this.applyAutoScalingDiff(physicalId, "dynamodb:table:WriteCapacityUnits", {}, void 0, localAsClient, void 0, budget, deleteMask, progress);
|
|
50538
50798
|
for (const indexName of tableIndexNames) {
|
|
50539
|
-
await this.applyAutoScalingDiff(physicalId, "dynamodb:index:WriteCapacityUnits", {}, void 0, localAsClient, indexName, budget,
|
|
50540
|
-
await this.applyAutoScalingDiff(physicalId, "dynamodb:index:ReadCapacityUnits", {}, void 0, localAsClient, indexName, budget,
|
|
50799
|
+
await this.applyAutoScalingDiff(physicalId, "dynamodb:index:WriteCapacityUnits", {}, void 0, localAsClient, indexName, budget, deleteMask, progress);
|
|
50800
|
+
await this.applyAutoScalingDiff(physicalId, "dynamodb:index:ReadCapacityUnits", {}, void 0, localAsClient, indexName, budget, deleteMask, progress);
|
|
50541
50801
|
}
|
|
50542
50802
|
} catch (describeErr) {
|
|
50543
50803
|
if (describeErr instanceof ProvisioningError) throw describeErr;
|
|
@@ -50548,8 +50808,8 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
50548
50808
|
}
|
|
50549
50809
|
}
|
|
50550
50810
|
try {
|
|
50551
|
-
if (
|
|
50552
|
-
|
|
50811
|
+
if (hasTransitionalTableIndex(preDeleteTable)) {
|
|
50812
|
+
deleteLog.debug(`Waiting for indexes on ${physicalId} to settle before DeleteTable`);
|
|
50553
50813
|
await this.waitForIndexesActive(physicalId, logicalId, {
|
|
50554
50814
|
proceedNote: DELETE_INDEX_WAIT_PROCEED_NOTE,
|
|
50555
50815
|
budget,
|
|
@@ -50560,6 +50820,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
50560
50820
|
logicalId,
|
|
50561
50821
|
physicalId,
|
|
50562
50822
|
typeLabel: "GlobalTable",
|
|
50823
|
+
...indexNoun !== void 0 && { indexNoun },
|
|
50563
50824
|
maxRetries: 8,
|
|
50564
50825
|
logger: loopLogger,
|
|
50565
50826
|
deleteTable: async () => {
|
|
@@ -50567,7 +50828,8 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
50567
50828
|
flip.deleteAccepted = true;
|
|
50568
50829
|
},
|
|
50569
50830
|
reArm: () => this.waitForIndexesActive(physicalId, logicalId, {
|
|
50570
|
-
maxAttempts:
|
|
50831
|
+
maxAttempts: 900,
|
|
50832
|
+
shortCapUnlessVectorBusy: 60,
|
|
50571
50833
|
proceedNote: DELETE_INDEX_WAIT_PROCEED_NOTE,
|
|
50572
50834
|
budget,
|
|
50573
50835
|
...context?.maskSecrets && { maskSecrets: context.maskSecrets }
|
|
@@ -50594,7 +50856,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
50594
50856
|
return;
|
|
50595
50857
|
}
|
|
50596
50858
|
const cause = error instanceof Error ? error : void 0;
|
|
50597
|
-
throw this.wrapDeleteError(deleteLog, error, (text) => new ProvisioningError(`Failed to delete DynamoDB GlobalTable ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
50859
|
+
throw this.wrapDeleteError(deleteLog, error, (text) => new ProvisioningError(`Failed to delete DynamoDB GlobalTable ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause), indexNoun);
|
|
50598
50860
|
}
|
|
50599
50861
|
}
|
|
50600
50862
|
async isSameResource(journaledPhysicalId, record, resourceType, context) {
|
|
@@ -50663,7 +50925,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
50663
50925
|
out[name] = projectNamed(out[name], recordedProperties?.[name], desiredProperties?.[name], name, unnamed, attemptedItems);
|
|
50664
50926
|
}
|
|
50665
50927
|
for (const entry of unnamed.filter((e) => e.ambiguous === true)) this.logger.warn(safeMsg`${logicalId} (${resourceType}): ${entry.path} on AWS has entries cdkd cannot key by an identity, so convergence keeps the recorded ${entry.path} rather than risk removing an entry neither the record nor the template declares. Check it with 'cdkd drift'.`);
|
|
50666
|
-
for (const entry of unnamed.filter((e) => e.ambiguous !== true)) this.logger.warn(safeMsg`${logicalId} (${resourceType}): ${entry.path} on AWS holds ${entry.identity} ${entry.value}, which neither the record nor the template declares, so cdkd leaves it in place. If the failed update added it and it should not be there, remove it by hand (for a replica: aws dynamodb update-table --replica-updates Delete; for an index: --global-secondary-index-updates Delete).`);
|
|
50928
|
+
for (const entry of unnamed.filter((e) => e.ambiguous !== true)) this.logger.warn(safeMsg`${logicalId} (${resourceType}): ${entry.path} on AWS holds ${entry.identity} ${entry.value}, which neither the record nor the template declares, so cdkd leaves it in place. If the failed update added it and it should not be there, remove it by hand (for a replica: aws dynamodb update-table --replica-updates Delete; for an index: --global-secondary-index-updates Delete; for a vector index: --vector-index-updates Delete).`);
|
|
50667
50929
|
return out;
|
|
50668
50930
|
}
|
|
50669
50931
|
async unsettledInTransition(physicalId, _logicalId, _resourceType, names) {
|
|
@@ -50680,6 +50942,8 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
50680
50942
|
}
|
|
50681
50943
|
if (names.has("Replicas") && (table?.Replicas ?? []).some((replica) => replica.ReplicaStatus !== void 0 && MOVING.has(replica.ReplicaStatus))) moving.add("Replicas");
|
|
50682
50944
|
if (names.has("GlobalSecondaryIndexes") && (table?.GlobalSecondaryIndexes ?? []).some((index) => index.IndexStatus !== void 0 && MOVING.has(index.IndexStatus))) moving.add("GlobalSecondaryIndexes");
|
|
50945
|
+
if (names.has("VectorIndexes") && (table?.VectorIndexes ?? []).some((index) => index.IndexStatus !== void 0 && MOVING.has(index.IndexStatus))) moving.add("VectorIndexes");
|
|
50946
|
+
if (names.has("WarmThroughput") && table?.WarmThroughput?.Status === "UPDATING") moving.add("WarmThroughput");
|
|
50683
50947
|
const sse = table?.SSEDescription?.Status;
|
|
50684
50948
|
if (names.has("SSESpecification") && (sse === "ENABLING" || sse === "DISABLING" || sse === "UPDATING")) moving.add("SSESpecification");
|
|
50685
50949
|
if (names.has("TimeToLiveSpecification")) {
|
|
@@ -50815,6 +51079,21 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
50815
51079
|
else result["WriteProvisionedThroughputSettings"] = {};
|
|
50816
51080
|
}
|
|
50817
51081
|
} else result["WriteProvisionedThroughputSettings"] = {};
|
|
51082
|
+
const liveVectorIndexes = readbackVectorIndexes(table.VectorIndexes);
|
|
51083
|
+
if (liveVectorIndexes !== void 0) result["VectorIndexes"] = liveVectorIndexes;
|
|
51084
|
+
const declaredWarm = coerceWarmThroughput(properties?.["WarmThroughput"]).spec;
|
|
51085
|
+
if (declaredWarm && table.WarmThroughput) {
|
|
51086
|
+
const warm = {};
|
|
51087
|
+
for (const member of WARM_THROUGHPUT_MEMBERS) {
|
|
51088
|
+
const value = table.WarmThroughput[member];
|
|
51089
|
+
const declared = declaredWarm[member];
|
|
51090
|
+
if (declared === void 0 || value === void 0) continue;
|
|
51091
|
+
warm[member] = table.WarmThroughput.Status === "UPDATING" ? Math.max(value, declared) : value;
|
|
51092
|
+
}
|
|
51093
|
+
if (Object.keys(warm).length > 0) result["WarmThroughput"] = warm;
|
|
51094
|
+
}
|
|
51095
|
+
if (properties?.[TABLE_READ_ON_DEMAND_KEY] !== void 0 && table.OnDemandThroughput?.MaxReadRequestUnits !== void 0) result[TABLE_READ_ON_DEMAND_KEY] = { MaxReadRequestUnits: table.OnDemandThroughput.MaxReadRequestUnits };
|
|
51096
|
+
if (properties?.[TABLE_READ_PROVISIONED_KEY] !== void 0 && billingMode !== "PAY_PER_REQUEST" && table.ProvisionedThroughput?.ReadCapacityUnits !== void 0) result[TABLE_READ_PROVISIONED_KEY] = { ReadCapacityUnits: table.ProvisionedThroughput.ReadCapacityUnits };
|
|
50818
51097
|
try {
|
|
50819
51098
|
const ttlDesc = (await this.dynamoDBClient.send(new DescribeTimeToLiveCommand({ TableName: tableNameForSubs }))).TimeToLiveDescription;
|
|
50820
51099
|
const ttlStatus = ttlDesc?.TimeToLiveStatus;
|
|
@@ -50951,11 +51230,19 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
50951
51230
|
return null;
|
|
50952
51231
|
}
|
|
50953
51232
|
}
|
|
50954
|
-
getDriftUnknownPaths(_resourceType) {
|
|
50955
|
-
|
|
51233
|
+
getDriftUnknownPaths(_resourceType, properties) {
|
|
51234
|
+
const paths = ["TableType"];
|
|
51235
|
+
if (properties === void 0 || Object.keys(properties).length === 0) return paths;
|
|
51236
|
+
if (properties["BillingMode"] !== "PROVISIONED") paths.push(TABLE_READ_PROVISIONED_KEY);
|
|
51237
|
+
if (!coerceWarmThroughput(properties["WarmThroughput"]).spec) paths.push("WarmThroughput");
|
|
51238
|
+
return paths;
|
|
50956
51239
|
}
|
|
50957
51240
|
getDriftUnorderedPaths(_resourceType) {
|
|
50958
|
-
return [
|
|
51241
|
+
return [
|
|
51242
|
+
"AttributeDefinitions",
|
|
51243
|
+
"Replicas[]",
|
|
51244
|
+
"VectorIndexes"
|
|
51245
|
+
];
|
|
50959
51246
|
}
|
|
50960
51247
|
canonicalizeDriftProperties(resourceType, properties) {
|
|
50961
51248
|
if (resourceType !== "AWS::DynamoDB::GlobalTable") return properties;
|
|
@@ -51051,7 +51338,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
51051
51338
|
const response = await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName }));
|
|
51052
51339
|
if (response.Table?.TableStatus === "ACTIVE") {
|
|
51053
51340
|
tableReachedActive = true;
|
|
51054
|
-
if (!
|
|
51341
|
+
if (!hasTransitionalTableIndex(response.Table)) return;
|
|
51055
51342
|
}
|
|
51056
51343
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
51057
51344
|
}
|
|
@@ -51070,6 +51357,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
51070
51357
|
logger: maskedLogger(this.logger, opts?.maskSecrets, tableName),
|
|
51071
51358
|
describeTable: () => this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName })),
|
|
51072
51359
|
maxAttempts: gateWait.grantedPolls,
|
|
51360
|
+
...opts?.shortCapUnlessVectorBusy !== void 0 && { shortCapUnlessVectorBusy: opts.shortCapUnlessVectorBusy },
|
|
51073
51361
|
budgetWait: gateWait,
|
|
51074
51362
|
proceedNote: opts?.proceedNote ?? "auto-scaling registration for a still-building index may have been skipped. The next deploy re-asserts it."
|
|
51075
51363
|
});
|
|
@@ -51102,6 +51390,83 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
51102
51390
|
}
|
|
51103
51391
|
throw new ProvisioningError(maskSecrets(`Replica ${region} for table ${maskSecrets(tableName)} did not disappear within ${wait.pollsRun}s${wait.note()}`), "AWS::DynamoDB::GlobalTable", logicalId, tableName);
|
|
51104
51392
|
}
|
|
51393
|
+
async deregisterRemovedReplicaScalableTargets(tableName, region, options = {}) {
|
|
51394
|
+
const mask = options.maskSecrets ?? ((text) => text);
|
|
51395
|
+
const tableResourceId = autoScalingResourceId(tableName);
|
|
51396
|
+
const indexPrefix = `${tableResourceId}/index/`;
|
|
51397
|
+
const leaveTargets = (reason, awsDetail) => {
|
|
51398
|
+
this.logger.warn(mask(`The ${region} replica of ${tableName} was removed, but its application-autoscaling targets there were left registered: ${reason}. Once that table is gone, run: ${pasteableAwsCommand(mask)`aws application-autoscaling describe-scalable-targets --service-namespace dynamodb --region ${region}`.render()} and deregister each target whose ResourceId is ${tableResourceId} or starts with ${indexPrefix}.`));
|
|
51399
|
+
if (awsDetail !== void 0) this.logger.debug(mask(`${region} replica of ${tableName}: ${awsDetail}`));
|
|
51400
|
+
};
|
|
51401
|
+
const watch = startInterruptWatch(mask(`application-autoscaling target cleanup for ${tableName} in ${region}`));
|
|
51402
|
+
const found = [];
|
|
51403
|
+
const asClient = this.getRegionalAutoScalingClient(region);
|
|
51404
|
+
try {
|
|
51405
|
+
const retired = await this.readReplicaTableRetired(tableName, region, options.budget, watch);
|
|
51406
|
+
if (retired !== true) {
|
|
51407
|
+
leaveTargets(retired.reason, retired.awsDetail);
|
|
51408
|
+
return;
|
|
51409
|
+
}
|
|
51410
|
+
try {
|
|
51411
|
+
let nextToken;
|
|
51412
|
+
do {
|
|
51413
|
+
if (watch.isInterrupted()) throw watch.onInterrupted();
|
|
51414
|
+
const token = nextToken;
|
|
51415
|
+
const res = await withRetry(() => asClient.send(new DescribeScalableTargetsCommand({
|
|
51416
|
+
ServiceNamespace: "dynamodb",
|
|
51417
|
+
...token ? { NextToken: token } : {}
|
|
51418
|
+
})), `${tableResourceId} targets in ${region}`, {
|
|
51419
|
+
isRetryable: (_message, error) => isThrottlingError(error),
|
|
51420
|
+
maxRetries: autoScalingRetriesWithinDeleteBudget(options.budget, 8),
|
|
51421
|
+
isInterrupted: watch.isInterrupted,
|
|
51422
|
+
onInterrupted: watch.onInterrupted,
|
|
51423
|
+
...autoScalingRetryDelays.sleep ? { sleep: autoScalingRetryDelays.sleep } : {}
|
|
51424
|
+
});
|
|
51425
|
+
for (const target of res?.ScalableTargets ?? []) {
|
|
51426
|
+
const dimension = target.ScalableDimension;
|
|
51427
|
+
const resourceId = target.ResourceId;
|
|
51428
|
+
if (!resourceId || !isDynamoDBScalableDimension(dimension)) continue;
|
|
51429
|
+
if (resourceId === tableResourceId && dimension.startsWith("dynamodb:table:")) found.push({ dimension });
|
|
51430
|
+
else if (resourceId.startsWith(indexPrefix) && resourceId.length > indexPrefix.length && dimension.startsWith("dynamodb:index:")) found.push({
|
|
51431
|
+
dimension,
|
|
51432
|
+
indexName: resourceId.slice(indexPrefix.length)
|
|
51433
|
+
});
|
|
51434
|
+
}
|
|
51435
|
+
nextToken = res?.NextToken;
|
|
51436
|
+
} while (nextToken);
|
|
51437
|
+
} catch (err) {
|
|
51438
|
+
if (isInterruptedWaitError(err)) throw err;
|
|
51439
|
+
const failure = describeAwsFailure(err);
|
|
51440
|
+
leaveTargets(`listing them failed (${failure.summary})`, failure.detail);
|
|
51441
|
+
return;
|
|
51442
|
+
}
|
|
51443
|
+
} finally {
|
|
51444
|
+
watch.dispose();
|
|
51445
|
+
}
|
|
51446
|
+
for (const target of found) await this.applyAutoScalingDiff(tableName, target.dimension, {}, void 0, asClient, target.indexName, options.budget, mask, options.progress);
|
|
51447
|
+
if (found.length > 0) this.logger.debug(mask(`Deregistered ${found.length} auto-scaling target(s) left by the removed ${region} replica of ${tableName}`));
|
|
51448
|
+
}
|
|
51449
|
+
async readReplicaTableRetired(tableName, region, budget, watch) {
|
|
51450
|
+
try {
|
|
51451
|
+
const status = (await withRetry(() => this.getRegionalClient(region).send(new DescribeTableCommand({ TableName: tableName })), `${tableName} in ${region}`, {
|
|
51452
|
+
isRetryable: (_message, error) => isThrottlingError(error),
|
|
51453
|
+
maxRetries: autoScalingRetriesWithinDeleteBudget(budget, 8),
|
|
51454
|
+
isInterrupted: watch.isInterrupted,
|
|
51455
|
+
onInterrupted: watch.onInterrupted,
|
|
51456
|
+
...autoScalingRetryDelays.sleep ? { sleep: autoScalingRetryDelays.sleep } : {}
|
|
51457
|
+
})).Table?.TableStatus;
|
|
51458
|
+
if (status === "DELETING") return true;
|
|
51459
|
+
return { reason: `the table there still reads ${status ?? "no status"}` };
|
|
51460
|
+
} catch (err) {
|
|
51461
|
+
if (err instanceof ResourceNotFoundException$1) return true;
|
|
51462
|
+
if (isInterruptedWaitError(err)) throw err;
|
|
51463
|
+
const failure = describeAwsFailure(err);
|
|
51464
|
+
return {
|
|
51465
|
+
reason: `reading the table there failed (${failure.summary})`,
|
|
51466
|
+
awsDetail: failure.detail
|
|
51467
|
+
};
|
|
51468
|
+
}
|
|
51469
|
+
}
|
|
51105
51470
|
async waitForTableGone(tableName, logicalId, maxAttempts = 600, budget, mask = (text) => text) {
|
|
51106
51471
|
const shownName = mask(tableName);
|
|
51107
51472
|
const wait = beginDeleteWait(maxAttempts, budget);
|
|
@@ -51210,6 +51575,8 @@ const REPLICA_SETTING_MEMBERS = [
|
|
|
51210
51575
|
"GlobalSecondaryIndexes"
|
|
51211
51576
|
];
|
|
51212
51577
|
const REPLICATION_MODE_KEY = "GlobalTableSettingsReplicationMode";
|
|
51578
|
+
const TABLE_READ_ON_DEMAND_KEY = "ReadOnDemandThroughputSettings";
|
|
51579
|
+
const TABLE_READ_PROVISIONED_KEY = "ReadProvisionedThroughputSettings";
|
|
51213
51580
|
function readReplicationMode(properties) {
|
|
51214
51581
|
const replicas = Array.isArray(properties["Replicas"]) ? properties["Replicas"] : [];
|
|
51215
51582
|
const declared = replicas.map((entry) => asRecord(entry)?.[REPLICATION_MODE_KEY]).filter((value) => value !== void 0 && value !== null);
|
|
@@ -51245,9 +51612,35 @@ function replicationModeCorrection(properties, previousProperties, liveMode) {
|
|
|
51245
51612
|
if (replicationModeUpdate(properties, previousProperties) !== void 0) return void 0;
|
|
51246
51613
|
return (liveMode ?? "DISABLED") === want.mode ? void 0 : want.mode;
|
|
51247
51614
|
}
|
|
51615
|
+
function tableLevelSettingsRefusal(properties) {
|
|
51616
|
+
const replicas = Array.isArray(properties["Replicas"]) ? properties["Replicas"] : [];
|
|
51617
|
+
if (properties["TableType"] === "Regional" && replicas.length > 1) return "TableType Regional cannot be declared with more than one replica, as CloudFormation refuses it; declare TableType GlobalTableReplica or omit TableType";
|
|
51618
|
+
const mode = readReplicationMode(properties);
|
|
51619
|
+
for (const key of [TABLE_READ_ON_DEMAND_KEY, TABLE_READ_PROVISIONED_KEY]) {
|
|
51620
|
+
if (properties[key] === void 0 || properties[key] === null) continue;
|
|
51621
|
+
if (mode.kind !== "usable" || mode.mode !== "ENABLED") return `${key} at the table level needs Replicas[].${REPLICATION_MODE_KEY} ENABLED, as CloudFormation refuses it otherwise; enable it on the replica, or move the block to the replica`;
|
|
51622
|
+
if (replicas.some((entry) => asRecord(entry)?.[key] !== void 0)) return `${key} cannot be declared at both the table level and a replica, as CloudFormation refuses it; keep one`;
|
|
51623
|
+
}
|
|
51624
|
+
if (properties[TABLE_READ_ON_DEMAND_KEY] !== void 0 && properties[TABLE_READ_ON_DEMAND_KEY] !== null && properties["BillingMode"] === "PROVISIONED") return `${TABLE_READ_ON_DEMAND_KEY} cannot be declared on a PROVISIONED table, as CloudFormation refuses it; remove it, or set BillingMode to PAY_PER_REQUEST`;
|
|
51625
|
+
}
|
|
51626
|
+
function replicaReadBlockShape(properties) {
|
|
51627
|
+
return (Array.isArray(properties["Replicas"]) ? properties["Replicas"] : []).map((entry) => [asRecord(entry)?.[TABLE_READ_ON_DEMAND_KEY], asRecord(entry)?.[TABLE_READ_PROVISIONED_KEY]]);
|
|
51628
|
+
}
|
|
51629
|
+
const TABLE_LEVEL_SETTING_INPUTS = [
|
|
51630
|
+
"TableType",
|
|
51631
|
+
"BillingMode",
|
|
51632
|
+
TABLE_READ_ON_DEMAND_KEY,
|
|
51633
|
+
TABLE_READ_PROVISIONED_KEY
|
|
51634
|
+
];
|
|
51248
51635
|
function replicaSettingsRefusal(properties, previousProperties, currentRegion) {
|
|
51249
51636
|
const mode = readReplicationMode(properties);
|
|
51250
|
-
|
|
51637
|
+
const modeShapeChanged = previousProperties === void 0 || !deepEqual(replicationModeShape(properties), replicationModeShape(previousProperties));
|
|
51638
|
+
if (mode.kind === "unusable" && modeShapeChanged) return mode.reason;
|
|
51639
|
+
if (modeShapeChanged || previousProperties === void 0 || !deepEqual(replicaReadBlockShape(properties), replicaReadBlockShape(previousProperties)) || TABLE_LEVEL_SETTING_INPUTS.some((key) => !deepEqual(properties[key], previousProperties?.[key]))) {
|
|
51640
|
+
const tableLevelRefusal = tableLevelSettingsRefusal(properties);
|
|
51641
|
+
if (tableLevelRefusal !== void 0) return tableLevelRefusal;
|
|
51642
|
+
}
|
|
51643
|
+
if (previousProperties?.[TABLE_READ_PROVISIONED_KEY] != null && properties[TABLE_READ_PROVISIONED_KEY] == null && properties["BillingMode"] === "PROVISIONED" && !(Array.isArray(properties["Replicas"]) ? properties["Replicas"] : []).some((entry) => asRecord(entry)?.[TABLE_READ_PROVISIONED_KEY] != null)) return `${TABLE_READ_PROVISIONED_KEY} cannot be removed from a PROVISIONED table with no replica declaring its own, as CloudFormation refuses it; keep it, declare it on the replica, or set BillingMode to PAY_PER_REQUEST`;
|
|
51251
51644
|
const desired = Array.isArray(properties["Replicas"]) ? properties["Replicas"] : [];
|
|
51252
51645
|
const crossRegionCreate = previousProperties === void 0 && desired.some((entry) => {
|
|
51253
51646
|
const region = asRecord(entry)?.["Region"];
|
|
@@ -51318,11 +51711,12 @@ function extractLocalTableClass(props, region) {
|
|
|
51318
51711
|
}
|
|
51319
51712
|
function derivePerCallProvisionedThroughput(properties, region, source = "min", diagnostics, maskSecrets = (text) => text) {
|
|
51320
51713
|
const rawReplicas = properties["Replicas"];
|
|
51321
|
-
const
|
|
51714
|
+
const localReplica = (Array.isArray(rawReplicas) ? rawReplicas : []).find((r) => asRecord(r)?.["Region"] === region);
|
|
51715
|
+
const rawRead = localReplica?.["ReadProvisionedThroughputSettings"] ?? properties[TABLE_READ_PROVISIONED_KEY];
|
|
51322
51716
|
const rawWrite = properties["WriteProvisionedThroughputSettings"];
|
|
51323
51717
|
const read = deriveReadCapacityUnits(asRecord(rawRead), source);
|
|
51324
51718
|
const write = deriveWriteCapacityUnits(asRecord(rawWrite), source);
|
|
51325
|
-
if (read === void 0) reportUnresolvedProvisionedCapacity(rawRead, "Read", source, { appliedUnits: DEFAULT_CAPACITY_UNITS }, diagnostics, { blockName: "Replicas[local].ReadProvisionedThroughputSettings" }, maskSecrets);
|
|
51719
|
+
if (read === void 0) reportUnresolvedProvisionedCapacity(rawRead, "Read", source, { appliedUnits: DEFAULT_CAPACITY_UNITS }, diagnostics, { blockName: localReplica?.["ReadProvisionedThroughputSettings"] !== void 0 ? "Replicas[local].ReadProvisionedThroughputSettings" : TABLE_READ_PROVISIONED_KEY }, maskSecrets);
|
|
51326
51720
|
if (write === void 0) reportUnresolvedProvisionedCapacity(rawWrite, "Write", source, { appliedUnits: DEFAULT_CAPACITY_UNITS }, diagnostics, { blockName: "WriteProvisionedThroughputSettings" }, maskSecrets);
|
|
51327
51721
|
return {
|
|
51328
51722
|
ReadCapacityUnits: read ?? DEFAULT_CAPACITY_UNITS,
|
|
@@ -51330,6 +51724,15 @@ function derivePerCallProvisionedThroughput(properties, region, source = "min",
|
|
|
51330
51724
|
};
|
|
51331
51725
|
}
|
|
51332
51726
|
const DEFAULT_CAPACITY_UNITS = 5;
|
|
51727
|
+
const DYNAMODB_SCALABLE_DIMENSIONS = /* @__PURE__ */ new Set([
|
|
51728
|
+
"dynamodb:table:WriteCapacityUnits",
|
|
51729
|
+
"dynamodb:table:ReadCapacityUnits",
|
|
51730
|
+
"dynamodb:index:WriteCapacityUnits",
|
|
51731
|
+
"dynamodb:index:ReadCapacityUnits"
|
|
51732
|
+
]);
|
|
51733
|
+
function isDynamoDBScalableDimension(value) {
|
|
51734
|
+
return typeof value === "string" && DYNAMODB_SCALABLE_DIMENSIONS.has(value);
|
|
51735
|
+
}
|
|
51333
51736
|
function autoScalingTargetKey(spec) {
|
|
51334
51737
|
return `${spec.region}|${spec.dimension}|${spec.indexName ?? ""}`;
|
|
51335
51738
|
}
|
|
@@ -51339,6 +51742,7 @@ function autoScalingResourceId(tableName, indexName) {
|
|
|
51339
51742
|
const autoScalingRetryDelays = {};
|
|
51340
51743
|
const REPLICA_GONE_WAIT_ATTEMPTS = 600;
|
|
51341
51744
|
const GLOBAL_TABLE_ACTIVE_WAIT_ATTEMPTS = 600;
|
|
51745
|
+
const VECTOR_INDEX_SETTLE_ATTEMPTS = 1800;
|
|
51342
51746
|
const TABLE_GONE_WAIT_ATTEMPTS = 600;
|
|
51343
51747
|
const deleteTableRetryDelays = {};
|
|
51344
51748
|
const DESCRIBE_SCALABLE_TARGETS_BATCH = 50;
|
|
@@ -51460,6 +51864,8 @@ function collectDesiredKeyAttributeNames(properties, options) {
|
|
|
51460
51864
|
if (!Array.isArray(indexes)) continue;
|
|
51461
51865
|
for (const index of indexes) addKeySchema(asRecord(index)?.["KeySchema"]);
|
|
51462
51866
|
}
|
|
51867
|
+
const vectorIndexes = properties["VectorIndexes"];
|
|
51868
|
+
if (Array.isArray(vectorIndexes)) for (const index of vectorIndexes) addKeySchema(asRecord(index)?.["SearchSchema"]);
|
|
51463
51869
|
return names;
|
|
51464
51870
|
}
|
|
51465
51871
|
function asRecord(value) {
|
|
@@ -51704,6 +52110,7 @@ function toSdkGlobalSecondaryIndexes(properties, region, billingMode, source = "
|
|
|
51704
52110
|
function stripProvisionedCapacityKeys(properties) {
|
|
51705
52111
|
const result = { ...properties };
|
|
51706
52112
|
delete result["WriteProvisionedThroughputSettings"];
|
|
52113
|
+
delete result[TABLE_READ_PROVISIONED_KEY];
|
|
51707
52114
|
const indexes = result["GlobalSecondaryIndexes"];
|
|
51708
52115
|
if (Array.isArray(indexes)) result["GlobalSecondaryIndexes"] = indexes.map((entry) => {
|
|
51709
52116
|
const gsi = asRecord(entry);
|
|
@@ -51743,7 +52150,7 @@ function stripProvisionedCapacityKeys(properties) {
|
|
|
51743
52150
|
return result;
|
|
51744
52151
|
}
|
|
51745
52152
|
const PROVISIONED_ONLY_CAPACITY_KEYS = {
|
|
51746
|
-
table: ["WriteProvisionedThroughputSettings"],
|
|
52153
|
+
table: ["WriteProvisionedThroughputSettings", "ReadProvisionedThroughputSettings"],
|
|
51747
52154
|
index: [
|
|
51748
52155
|
"WriteProvisionedThroughputSettings",
|
|
51749
52156
|
"ReadProvisionedThroughputSettings",
|
|
@@ -51753,7 +52160,7 @@ const PROVISIONED_ONLY_CAPACITY_KEYS = {
|
|
|
51753
52160
|
replicaIndex: ["ReadProvisionedThroughputSettings", "ProvisionedThroughputOverride"]
|
|
51754
52161
|
};
|
|
51755
52162
|
const ON_DEMAND_ONLY_CAPACITY_KEYS = {
|
|
51756
|
-
table: ["WriteOnDemandThroughputSettings"],
|
|
52163
|
+
table: ["WriteOnDemandThroughputSettings", "ReadOnDemandThroughputSettings"],
|
|
51757
52164
|
index: [
|
|
51758
52165
|
"WriteOnDemandThroughputSettings",
|
|
51759
52166
|
"ReadOnDemandThroughputSettings",
|
|
@@ -51980,11 +52387,12 @@ function toSdkReplicaThroughputOverrides(cfn, billingMode, diagnostics, context,
|
|
|
51980
52387
|
function collectTableOnDemandCeilings(properties, region, diagnostics, maskSecrets = (text) => text) {
|
|
51981
52388
|
const writeBlock = properties["WriteOnDemandThroughputSettings"];
|
|
51982
52389
|
const replicas = properties["Replicas"];
|
|
51983
|
-
const
|
|
52390
|
+
const replicaReadBlock = asRecord(Array.isArray(replicas) ? replicas.find((r) => asRecord(r)?.["Region"] === region) : void 0)?.["ReadOnDemandThroughputSettings"];
|
|
52391
|
+
const readBlock = replicaReadBlock ?? properties[TABLE_READ_ON_DEMAND_KEY];
|
|
51984
52392
|
const rawRead = asRecord(readBlock)?.["MaxReadRequestUnits"];
|
|
51985
52393
|
const rawWrite = asRecord(writeBlock)?.["MaxWriteRequestUnits"];
|
|
51986
52394
|
reportUnresolvedRawMember(rawRead, diagnostics, {
|
|
51987
|
-
blockName: "Replicas[local].ReadOnDemandThroughputSettings",
|
|
52395
|
+
blockName: replicaReadBlock !== void 0 ? "Replicas[local].ReadOnDemandThroughputSettings" : TABLE_READ_ON_DEMAND_KEY,
|
|
51988
52396
|
member: "MaxReadRequestUnits"
|
|
51989
52397
|
}, maskSecrets);
|
|
51990
52398
|
reportUnresolvedRawMember(rawWrite, diagnostics, {
|
|
@@ -55498,5 +55906,5 @@ function sameGenerationClaimsOf(record) {
|
|
|
55498
55906
|
}
|
|
55499
55907
|
|
|
55500
55908
|
//#endregion
|
|
55501
|
-
export { getPriorAttempts as $, applyCallerIdentityCredentials as $a, unionOfSecretBags as $c, isCustomResourceType as $i, orphansCarriedFrom as $l, namesAnyDeclaredParameter as $n, malformedResourcePropertiesWarning as $o, withoutSuperseded as $r, isWarmThroughputDecrease as $s, formatResourceLine as $t, resolveStateBucketWithDefault as $u, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as A, withoutUnsettledProperties as Aa, maskedLeafCoordinatesOf as Ac, renderAssemblyPathEscape as Ad, acquireIdempotencyToken as Ai, LockManager as Al, recheckFailedPlan as An, accountArgs as Ao, mappingPairs as Ar, repairMalformedOutputsForReadOnly as As, keptForRetainedRecord as At, finchSecretArgvRefusal as Au, deleteTableWithIndexBusyRetry as B, producerLookupOver as Ba, markSameGenerationBag as Bc, refuseMalformedDesiredTags as Bi, stackInstanceIdOf as Bl, isRedactedRecordedValue as Bn, malformedExportSourceWarning as Bo, gray as Br, findSilentDropProperties as Bs, revertedNestedRowIds as Bt, runDockerStreaming as Bu, planContributorInsightsOp as C, DiffCalculator as Ca, DagBuilder as Cc, hasOwnKey as Cd, isFinalSnapshotError as Ci, recordMaskOnlyValuesIn as Cl, equalModuloMask as Cn, passedParameterClassesOf as Co, findRefactorHints as Cr, refuseMalformedResourcePropertiesForOrphan as Cs, keptWholeReasonText as Ct, buildDenyExternalAccessPolicy as Cu, reverseMapTableContributorInsights as D, unsettledItemsOf as Da, maskAtCoordinates as Dc, absoluteAssemblyPathEscape as Dd, ledgerForStack as Di, wholeStringLeavesOf as Dl, isReplacementOrphan as Dn, STATE_RESOURCES_MALFORMED as Do, withMovedTo as Dr, refuseMalformedState as Ds, planOrphanAdoption as Dt, describeDockerExecFailure as Du, reverseMapIndexContributorInsights as E, unsettledItemsField as Ea, isMarkedCoordinate as Ec, ownValue as Ed, earliestDefined as Ei, recordProvenPublicExpression as El, isJournaledOrphan as En, STATE_REGION_DIVERGED as Eo, rollbackOrphanIds as Er, refuseMalformedResourcesForExport as Es, makeSiblingClaimReader as Et, describeDockerCapturedOutput as Eu, resolveDynamoDbDeleteBudgetClock as F, s3BucketDomainName as Fa, readbackPathFor as Fc, resolveBucketRegion as Fd, markDeleteStarted as Fi, CrossPrefixScanCache as Fl, orphanNeedsIdentity as Fn, hasReadableResources as Fo, getStackRecords as Fr, unreadableOrphanRecords as Fs, dropSettledNestedJournals as Ft, partitionSensitiveEnv as Fu, isTtlRateLimited as G, recordedReferenceRegions as Ga, createUnionSecretMasker as Gc, CC_BROKEN_REASON as Gi, exportNamesCarriedFrom as Gl, nameGenerationCarriedFrom as Gn, malformedOrphanRecordsWarning as Go, deleteSupersededEntry as Gr, findReplacedReadersOfRecreateTargets as Gs, deleteJournaledOrphans as Gt, synthesisStatusMessage as Gu, relayedIndexBusyDelete as H, keepHeldTokenProvenance as Ha, recordReferenceProvenanceEntry as Hc, tagPlanWarning as Hi, splitImportedOps as Hl, redactedDeleteAddressSkip as Hn, malformedLocalResourceEntriesWarning as Ho, red as Hr, withoutSilentDropProperties as Hs, collectNestedChildUnaddressed as Ht, AssetManifestLoader as Hu, resolveDynamoDbDeleteBudgetMs as I, s3BucketDualStackDomainName as Ia, readsNoEchoSource as Ic, DBPROXY_TAGS_WHAT as Ii, applyCrossPrefixScan as Il, findNestedStackTypeChanges as In, isReadableOrphanRecord as Io, withStackRecords as Ir, unreadableResourceEntries as Is, getNestedRevertRun as It, redactDockerArgvValues as Iu, sendTtlWaitingOutRateLimit as J, assertSendableRoleArn as Ja, logOnlyValueCount as Jc, isCustomResource as Ji, hasUnverifiableParameterRefusal as Jl, retiredAfterRollback as Jn, malformedOrphansWarning as Jo, removeSuperseded as Jr, isStatefulRecreateTargetForReplace as Js, isHandledOrphan as Jt, loadCdkJson as Ju, planTimeToLive as K, applyRoleArnIfSet as Ka, hasMaskableValues as Kc, ProviderRegistry as Ki, hasReadableExportSet as Kl, nameGenerationHighWaterOf as Kn, malformedOrphanRowsKeptWarning as Ko, holdsSupersededResources as Kr, shownType as Ks, dropFailedCommands as Kt, getDefaultStateBucketName as Ku, DELETE_INDEX_WAIT_PROCEED_NOTE as L, s3BucketRegionalDomainName as La, recordedNoEchoValuesOf as Lc, DBPROXY_TAG_OPTIONS as Li, crossPrefixDeniedWarning as Ll, getCurrentProducerRegions as Ln, isReadableResourceEntry as Lo, replacedDeleteFailureVerdict as Lr, withheldAccountClause as Ls, nestedChildStackName as Lt, redactedCause as Lu, beginDeleteWait as M, poisonRenderedSpellingsCollidingIn as Ma, noEchoLeavesOf as Mc, injectAwsRegion as Md, DeploymentEventsStore as Mi, S3StateBackend as Ml, replacementNeverSwapped as Mn, displayLogicalId as Mo, proposeRenames as Mr, repairMalformedResourcePropertiesForReadOnly as Ms, NESTED_PENDING_PARENT_REASON as Mt, getDockerCmd as Mu, compensateRemovedDeletionProtection as N, isSettledInstanceState as Na, noEchoOutputsComparison as Nc, injectedAwsRegionValue as Nd, extractDeploymentEventError as Ni, rebuildClientForBucketRegion as Nl, resolveReplacementOldType as Nn, hasReadableOrphans as No, awaitInFlightSibling as Nr, repairMalformedResourcesForReadOnly as Ns, displacedOpClause as Nt, isDockerClientEnvKey as Nu, stripIndexContributorInsights as O, unsettledPropertiesOf as Oa, maskReadbackAtCoordinates as Oc, describeFileReadFailure as Od, reserveStackCreateToken as Oi, WHOLE_DYNAMIC_REFERENCE_PATTERN as Ol, planFailedOps as On, UNREADABLE_ORPHANS_CONTAINER_ROW as Oo, isPairableType as Or, repairMalformedOrphanRecordsForReadOnly as Os, pendingRequestCount as Ot, describeDockerFailure as Ou, deleteBudgetKey as P, s3BucketArn as Pa, passedNoEchoParametersOf as Pc, clearBucketRegionCache as Pd, isRefusedByName as Pi, CrossPrefixReadError as Pl, seedsDeleteFirstGuard as Pn, hasReadableOutputs as Po, destroyStackRecordsView as Pr, unpreviewableOrphanRecords as Ps, displacedPhysicalIdShown as Pt, isMalformedEnvKey as Pu, isTruthyCfnBoolean as Q, AWS_CREDENTIAL_ENV_KEYS as Qa, shareLogOnlyValues as Qc, readsNoEchoDeleteValues as Qi, orphansAfterRollback as Ql, computeParameterTaint as Qn, malformedResourceEntriesWarning as Qo, supersededResourcesOf as Qr, coerceWarmThroughput as Qs, sameJournaledOrphans as Qt, resolveSkipPrefix as Qu, INDEX_SETTLE_POLL_INTERVAL_MS as R, s3BucketWebsiteUrl as Ra, valueAtCoordinate as Rc, planTagDiff as Ri, isAccessDenied$1 as Rl, inheritProducerRegions as Rn, malformedDriftResourcePropertiesWarning as Ro, bold as Rr, findActionableSilentDrops as Rs, recordDisplacedSkips as Rt, redactedDockerCause as Ru, indexDeclaresContributorInsights as S, reEnableInstanceApiTermination as Sa, sameLambdaFunctionAddress as Sc, defineOwnKey as Sd, effectiveDeletionPolicy as Si, recordMaskOnlyValue as Sl, equalModuloMarkedMask as Sn, parameterInputsFor as So, formatDestructiveChange as Sr, refuseMalformedResourcePropertiesForExport as Ss, isSecretBearingReferenceString as St, validateContainerRepoName as Su, readContributorInsightsSpec as T, isUsableAttemptedName as Ta, canonicalCoordinates as Tc, nullPrototypeRecord as Td, unsupportedFinalSnapshotError as Ti, recordNoEchoParameterFreshValue as Tl, demoteSupersededOrphans as Tn, JSON_LISTING_HOLE_VALUE as To, movedToHint as Tr, refuseMalformedResourcesForDestroy as Ts, makeCanonicalizePropertiesFn as Tt, resolveDockerContextDirectory as Tu, waitForIndexesSettled as U, outputReferenceProvenanceOf as Ua, snapshotPassProvenance as Uc, definedAttributes as Ui, acceptedCreateOnlyDropsOf as Ul, updatePartialMessage as Un, malformedLocalResourcesWarning as Uo, yellow as Ur, NO_CC_HANDLERS_REASON as Us, getCurrentNestedStackContext as Ut, getDockerImageBySourceHash as Uu, maskedLogger as V, refuseUnreadableCdkCrossAccountRefs as Va, redactForState as Vc, tagMapAsList as Vi, withStackInstanceIdWithheld as Vl, redactedDeleteAddressFields as Vn, malformedLocalOutputsWarning as Vo, green as Vr, unwrittenCreateOnlyReplacement as Vs, withNestedRevertRun as Vt, warnFinchArgvExposure as Vu, isTtlAlreadyDisabled as W, recordedOutputReferenceRegions as Wa, carryLogOnlyValues as Wc, stringifyIfAssigned as Wi, describeRegionValueKind as Wl, updatePartialReason as Wn, malformedOrphanRecordsRefusalMessage as Wo, addSuperseded as Wr, hasNoCloudControlHandlers as Ws, withNestedStackContext as Wt, Synthesizer as Wu, S3_AUTO_DELETE_OBJECTS_TAG as X, isIamRoleArn as Xa, recordLogOnlyParameterValue as Xc, waitForLambdaFunctionActive as Xi, importableOutputs as Xl, retiredNameGenerationsLeaving as Xn, malformedOutputsWarning as Xo, supersededHeldByOtherTypeWarning as Xr, renderStatefulReason as Xs, loadJournaledOrphans as Xt, resolveAutoAssetStorage as Xu, ECR_AUTO_DELETE_IMAGES_TAG as Y, explicitRoleArnOrThrow as Ya, printingCorpusOf as Yc, wouldReturnToSdkProvider as Yi, importableOutputKeys as Yl, retiredNameGenerationsAfter as Yn, malformedOutputsRefusalMessage as Yo, supersededAfterRollback as Yr, isStatefulRecreateTargetSync as Ys, journaledOrphanLines as Yt, resolveApp as Yu, hasCdkAutoDeleteTag as Z, sendableAssumeRoleCommand as Za, recordLogOnlyValue as Zc, TemplateNoEchoReresolver as Zi, isReadableBag as Zl, withNameGenerationReached as Zn, malformedRenderedContainersWarning as Zo, supersededHolderOf as Zr, WARM_THROUGHPUT_MEMBERS as Zs, makeForeignHolderScan as Zt, resolveCaptureObservedState as Zu, streamMemberRefusals as _, disableInstanceApiTermination as _a, dbInstanceEngineChangeIsInPlace as _c, StageLoadError as _d, ATOMIC_FINAL_SNAPSHOT_TYPES as _i, recordAttributeIdCopy as _l, removeProtectionTypeList as _n, isStalePlaceholderArnAttribute as _o, DEFAULT_RESOURCE_TIMEOUT_MS as _r, refuseMalformedResourceEntriesForImport as _s, readRecordedConditionVerdicts as _t, getBootstrapMarkerKey as _u, isProtectionValueActive as a, CloudControlProvider as aa, configIntegerRefusal as ac, CFN_TEMPLATE_BODY_LIMIT as ad, createReadOnlyAttributeHealerFactory as ai, withPhysicalNameCopies as al, readRefactorMarkerOnce as an, regionLessSecretName as ao, secretBearing as ar, refuseMalformedNestedChildOutputs as as, deferredServiceTokenWarning as at, AssetPublisher as au, CONTRIBUTOR_INSIGHTS_KEY as b, observeThenDisableInstanceApiTermination as ba, canonicalLambdaFunctionName as bc, parseFailureDebugDetail as bd, ccRoutedFinalSnapshotError as bi, carriesSecretMask as bl, withUnprovenUnsettled as bn, parseWebACLArn as bo, constructPathOf as br, refuseMalformedResourcePropertiesForDestroy as bs, withResourceDeadline as bt, readBootstrapMarkerBody as bu, DynamoDBGlobalTableProvider as c, unchangedBehindSecretReference as ca, replayWarn as cc, findLargeInlineResources as cd, maskEventTextWithBoundBags as ci, dynamicReferenceTokens as cl, refuseRefactorMarker as cn, parameterTypeMayLoseSecretIdentity as co, carriedExportAliasExposure as cr, refuseMalformedOrphans as cs, childTemplateLoader as ct, WorkGraph as cu, declaredStreamPolicyMember as d, deleteIndeterminateGuards as da, requireConfigString as dc, decodeListingKey as dd, secretNamePrintingBag as di, spelledKeysOf as dl, hasPendingMovesOut as dn, carriesDynamicReference as do, isWholeDynamicReferenceValue as dr, refuseMalformedOutputs as ds, listNestedTemplateRows as dt, loadPublishableAssetManifest as du, getCurrentResourceSecrets as ea, toCfnInteger as ec, resolveStateBucketWithDefaultAndSource as ed, noEchoAttributeNamesOf as ei, createSecretMasker as el, chunks as en, callerEnvCredentials as eo, reachableDivergentParameters as er, malformedResourcesWarning as es, markRefusedBeforeApplying as et, shouldRetainResource as eu, declaredStreamTagsMember as f, deleteLeftInPlace as fa, prefetchCreateOnlyPropertyPaths as fc, expectedOwnerParam as fd, secretNamePrintingBags as fi, identityKeyFor as fl, pendingMovesOutOf as fn, carriesFetchableDynamicReference as fo, noEchoParameterValueSeed as fr, refuseMalformedOutputsForDestroy as fs, renderNestedTemplateTreeDefect as ft, rewriteTemplateAssetReferences as fu, streamDeclaresTags as g, markWaitAbandoned as ga, blockDeviceMappingsDifferOnlyInDeleteOnTermination as gc, AssemblyReader as gd, storedSecretNameNeedles as gi, physicalNameCopiesOf as gl, replayRollback as gn, cfnRefValueFromPhysicalId as go, bindingSkippedOutputs as gr, refuseMalformedResourceEntriesForDestroy as gs, parentSuppliedValues as gt, ensureAssetStorage as gu, streamDeclaresPolicy as h, isWaitAbandonedError as ha, withRetry as hc, derivePartitionAndUrlSuffix as hd, stateSecretNameNeedles as hi, recoverMaskedOutput as hl, replayFailedOperations as hn, AWS_NO_VALUE as ho, isExportAliasCollision as hr, refuseMalformedResourceEntriesForDeploy as hs, conditionInputsFrom as ht, assertAssetBucketRegion as hu, PROTECTION_PROPERTY_BY_TYPE as i, customResourceResponseExpirationWarning as ia, configBooleanRefusal as ic, ssmResolvedValueType as id, withAttemptedItemsMasked as ii, scrubResourceRecord as il, readRefactorMarker as in, producerRegionsFromState as io, exportAliasCollisionScrubWarning as ir, refuseDivergentRecordRegionForDestroy as is, inheritedProvenanceForChildDiff as it, timePhase as iu, DYNAMODB_DELETE_POLL_COST_MS as j, IntrinsicFunctionResolver as ja, noEchoCoordinatesOf as jc, resolveAssemblyPath as jd, DeploymentEventsReader as ji, isLockInfoExpired as jl, recordUnderIdIsNotOwn as jn, deployRefusesOrphanRowsReason as jo, parseMappingFile as jr, repairMalformedResourceEntriesForReadOnly as js, recordRetainedForReadoption as jt, formatDockerLoginError as ju, DYNAMODB_DELETE_DEADLINE_MARGIN_MS as k, withUnsettledProperties as ka, maskWholeValue as kc, displayAssemblyPath as kd, withCreateTokenLedger as ki, isSingleDynamicReferenceToken as kl, planRollback as kn, UNREADABLE_RESOURCES_MAP_ROW as ko, looselyEqual as kr, repairMalformedOrphansForReadOnly as ks, resolvePendingCloudControlRequests as kt, dockerSpawnEnvWithSensitive as ku, STREAM_POLICY_KEY as l, RollbackInlinePolicyWriters as la, requireConfigArray as lc, uploadCfnTemplate as ld, namingSecretsWithRecordedNoEcho as li, isUncertifiedBaselineMaskPosition as ll, sameMove as ln, getAccountInfo as lo, exportNameNoEchoParameters as lr, refuseMalformedOrphansForDestroy as ls, findNestedTemplateTreeDefect as lt, buildAssetRedirectMap as lu, reverseMapStreamPolicy as m, withIndeterminateGuard as ma, describeTypeWithThrottleRetry as mc, canonicalizeRegion as md, secretNamedRecordNeedles as mi, recordNestedStackParameterExpressions as ml, refusePendingMovesOut as mn, keepsSecretReferenceToken as mo, collectPublishedOutputNames as mr, refuseMalformedResourceEntries as ms, conditionFingerprint as mt, BOOTSTRAP_MARKER_PREFIX as mu, recordedProtectionEvidence as n, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as na, coerceCfnBoolean as nc, stateBucketExistenceConfirmed as nd, noEchoExactEchoLeavesOf as ni, maskSecretsInError as nl, lookupEachName as nn, classifyRecordedSecretRegion as no, WITHHELD_NAME_DISPLAY as nr, malformedStateRefusalMessage as ns, computeImplicitDeleteEdges as nt, PhaseClock as nu, perType as o, slowCcOperationTimeoutMs as oa, configStringRefusal as oc, CFN_TEMPLATE_URL_LIMIT as od, completedReplayEntries as oi, withoutPhysicalNameCopies as ol, refactorMarkerMovesOf as on, coerceParameterTypedValue as oo, secretBearingStateKeyWarning as or, refuseMalformedOrphanRecords as os, findServiceTokenRefusals as ot, isSensitiveAttributeName as ou, planStreamMemberOps as p, deleteSkipReason as pa, templateResourceTypes as pc, PARTITION_TABLE as pd, secretNamedAttributeNamesOf as pi, inheritNestedStackParameterAssociations as pl, pendingMovesRefusalMessage as pn, isNamelessDynamicReferenceError as po, collectDeclaredOutputNames as pr, refuseMalformedResourceAttributesForOrphan as ps, templateIdentity as pt, AssetModeResolver as pu, readTtlSpec as q, assertFlagRoleArn as qa, literalSplitDelimitersOf as qc, ccBrokenReason as qi, hasReasonlessBaselineRefusal as ql, nameScopeOf as qn, malformedOrphansRefusalMessage as qo, isSupersededResourceRecord as qr, MULTI_REGION_RECREATE_BLOCKED_TYPES as qs, dropFailedHint as qt, getLegacyStateBucketName as qu, recordedProtectionNote as r, applyCustomResourceResponseExpiration as ra, coerceCfnInteger as rc, warnDeprecatedNoPrefixCliFlag as rd, noEchoParameterNamesOf as ri, maskSecretsInText as rl, withApiLimit as rn, classifyReplaySecretRegion as ro, displayTextOrWithheld as rr, previewableOrphanRecords as rs, crossStackOutputProvenanceSource as rt, renderPhaseTimings as ru, readProtection as s, onlySecretReferencesDiffer as sa, readConfigString as sc, MIGRATE_TMP_PREFIX as sd, journaledOrphanPrintingBag as si, DYNAMIC_REFERENCE_TOKEN_SCAN as sl, refactorMarkerRefusalMessage as sn, isUnboundTemplateParameter as so, secretSafeKeyDisplay as sr, refuseMalformedOrphanRecordsForDestroy as ss, serviceTokenBlockingReason as st, stringifyValue as su, DeployEngine as t, withPrintingSecrets as ta, toFiniteNumber as tc, resolveUseCdkBootstrapAssets as td, noEchoComparisonForTemplate as ti, errorCauseChain as tl, isAccessDeniedError as tn, envCredentialsAreAssumedRole as to, resourcesNamingDeclaredParameter as tr, malformedScrubResourceEntriesRefusalMessage as ts, IMPLICIT_DELETE_DEPENDENCIES as tt, stackInstanceIdCarriedFrom as tu, STREAM_TAGS_KEY as u, UNSPECIFIED_SKIP_REASON as ua, requireConfigObject as uc, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as ud, orphanRecordsPrintingBag as ui, pathCrossesDottedKey as ul, updateRefactorMarker as un, isImpossibleEmptyStoredAttribute as uo, exportNameSecretExposure as ur, refuseMalformedOrphansForOrphan as us, isAbsoluteAssetPath as ut, createAssetRedirectResolver as uu, streamPolicyMatchesDeclared as v, ec2InstanceProtectionSite as va, ecsServiceLaunchTypeSetOrChanged as vc, processStackMessages as vd, PRE_DELETE_SNAPSHOT_TYPES as vi, recordPhysicalNameCopy as vl, recordAfterRollbackUpdate as vn, lacksRecordedTableArn as vo, DEFAULT_RESOURCE_WARN_AFTER_MS as vr, refuseMalformedResourceEntriesForImportSave as vs, enclosingDeadlineExpired as vt, isCrossRegionRedirect as vu, planIndexContributorInsightsOps as w, INTRINSIC_KEYS as wa, TemplateParser as wc, hasPlainPrototype$1 as wd, refusesFinalSnapshot as wi, recordNoEchoAttributeValues as wl, undeclaredEmptyObservedKeys as wn, declaresNoEcho as wo, hintSidesOf as wr, refuseMalformedResourcesForDeploy as ws, mergeNoChangeOutputs as wt, buildDockerImage as wu, contributorInsightsRefusals as x, reDisableInstanceApiTermination as xa, lambdaFunctionNameForMask as xc, utf8ByteLength as xd, createPreDeleteFinalSnapshot as xi, provenPublicValue as xl, calculateResourceDrift as xn, withSharedDrainBudget as xo, findDestructiveChanges as xr, refuseMalformedResourcePropertiesForDrift as xs, diffSecurity as xt, validateAssetBucketName as xu, streamTagsMatchDeclared as y, isTerminationProtectionPropagationError as ya, emrClusterInstancesReplaced as yc, describeJsonParseFailure as yd, buildFinalSnapshotIdentifier as yi, splitGetAttStringForm as yl, settleUnsettledPrevious as yn, refStateLookupFromResource as yo, maskingRetryLogger as yr, refuseMalformedResourceEntriesForOrphan as ys, enclosingDeadlineRemainingMs as yt, parseBootstrapMarker as yu, TABLE_INDEX_NOUN as z, resolveDynamicReferences as za, liveMatchesUnresolvedTokenFrame as zc, readTagList as zi, isNotImplemented as zl, REDACTED_DELETE_ADDRESS_SKIP_REASON as zn, malformedExportNamesWarning as zo, cyan as zr, findHandledUnwrittenCreateOnly as zs, revertNestedChildFromJournal as zt, runDockerForeground as zu };
|
|
55502
|
-
//# sourceMappingURL=deploy-engine-
|
|
55909
|
+
export { ECR_AUTO_DELETE_IMAGES_TAG as $, explicitRoleArnOrThrow as $a, printingCorpusOf as $c, wouldReturnToSdkProvider as $i, importableOutputKeys as $l, retiredNameGenerationsAfter as $n, malformedOutputsRefusalMessage as $o, supersededAfterRollback as $r, isStatefulRecreateTargetSync as $s, journaledOrphanLines as $t, resolveApp as $u, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as A, unsettledItemsField as Aa, isMarkedCoordinate as Ac, ownValue as Ad, earliestDefined as Ai, recordProvenPublicExpression as Al, isJournaledOrphan as An, STATE_REGION_DIVERGED as Ao, rollbackOrphanIds as Ar, refuseMalformedResourcesForExport as As, makeSiblingClaimReader as At, describeDockerCapturedOutput as Au, deleteTableWithIndexBusyRetry as B, s3BucketDualStackDomainName as Ba, readsNoEchoSource as Bc, DBPROXY_TAGS_WHAT as Bi, applyCrossPrefixScan as Bl, findNestedStackTypeChanges as Bn, isReadableOrphanRecord as Bo, withStackRecords as Br, unreadableResourceEntries as Bs, getNestedRevertRun as Bt, redactDockerArgvValues as Bu, planContributorInsightsOp as C, isTerminationProtectionPropagationError as Ca, emrClusterInstancesReplaced as Cc, describeJsonParseFailure as Cd, buildFinalSnapshotIdentifier as Ci, splitGetAttStringForm as Cl, settleUnsettledPrevious as Cn, refStateLookupFromResource as Co, maskingRetryLogger as Cr, refuseMalformedResourceEntriesForOrphan as Cs, enclosingDeadlineRemainingMs as Ct, parseBootstrapMarker as Cu, reverseMapTableContributorInsights as D, DiffCalculator as Da, DagBuilder as Dc, hasOwnKey as Dd, isFinalSnapshotError as Di, recordMaskOnlyValuesIn as Dl, equalModuloMask as Dn, passedParameterClassesOf as Do, findRefactorHints as Dr, refuseMalformedResourcePropertiesForOrphan as Ds, keptWholeReasonText as Dt, buildDenyExternalAccessPolicy as Du, reverseMapIndexContributorInsights as E, reEnableInstanceApiTermination as Ea, sameLambdaFunctionAddress as Ec, defineOwnKey as Ed, effectiveDeletionPolicy as Ei, recordMaskOnlyValue as El, equalModuloMarkedMask as En, parameterInputsFor as Eo, formatDestructiveChange as Er, refuseMalformedResourcePropertiesForExport as Es, isSecretBearingReferenceString as Et, validateContainerRepoName as Eu, resolveDynamoDbDeleteBudgetClock as F, IntrinsicFunctionResolver as Fa, noEchoCoordinatesOf as Fc, resolveAssemblyPath as Fd, DeploymentEventsReader as Fi, isLockInfoExpired as Fl, recordUnderIdIsNotOwn as Fn, deployRefusesOrphanRowsReason as Fo, parseMappingFile as Fr, repairMalformedResourceEntriesForReadOnly as Fs, recordRetainedForReadoption as Ft, formatDockerLoginError as Fu, readbackVectorIndexes as G, refuseUnreadableCdkCrossAccountRefs as Ga, redactForState as Gc, tagMapAsList as Gi, withStackInstanceIdWithheld as Gl, redactedDeleteAddressFields as Gn, malformedLocalOutputsWarning as Go, green as Gr, unwrittenCreateOnlyReplacement as Gs, withNestedRevertRun as Gt, warnFinchArgvExposure as Gu, relayedIndexBusyDelete as H, s3BucketWebsiteUrl as Ha, valueAtCoordinate as Hc, planTagDiff as Hi, isAccessDenied$1 as Hl, inheritProducerRegions as Hn, malformedDriftResourcePropertiesWarning as Ho, bold as Hr, findActionableSilentDrops as Hs, recordDisplacedSkips as Ht, redactedDockerCause as Hu, resolveDynamoDbDeleteBudgetMs as I, poisonRenderedSpellingsCollidingIn as Ia, noEchoLeavesOf as Ic, injectAwsRegion as Id, DeploymentEventsStore as Ii, S3StateBackend as Il, replacementNeverSwapped as In, displayLogicalId as Io, proposeRenames as Ir, repairMalformedResourcePropertiesForReadOnly as Is, NESTED_PENDING_PARENT_REASON as It, getDockerCmd as Iu, isTtlAlreadyDisabled as J, recordedOutputReferenceRegions as Ja, carryLogOnlyValues as Jc, stringifyIfAssigned as Ji, describeRegionValueKind as Jl, updatePartialReason as Jn, malformedOrphanRecordsRefusalMessage as Jo, addSuperseded as Jr, hasNoCloudControlHandlers as Js, withNestedStackContext as Jt, Synthesizer as Ju, vectorIndexesForCreate as K, keepHeldTokenProvenance as Ka, recordReferenceProvenanceEntry as Kc, tagPlanWarning as Ki, splitImportedOps as Kl, redactedDeleteAddressSkip as Kn, malformedLocalResourceEntriesWarning as Ko, red as Kr, withoutSilentDropProperties as Ks, collectNestedChildUnaddressed as Kt, AssetManifestLoader as Ku, DELETE_INDEX_WAIT_PROCEED_NOTE as L, isSettledInstanceState as La, noEchoOutputsComparison as Lc, injectedAwsRegionValue as Ld, extractDeploymentEventError as Li, rebuildClientForBucketRegion as Ll, resolveReplacementOldType as Ln, hasReadableOrphans as Lo, awaitInFlightSibling as Lr, repairMalformedResourcesForReadOnly as Ls, displacedOpClause as Lt, isDockerClientEnvKey as Lu, beginDeleteWait as M, unsettledPropertiesOf as Ma, maskReadbackAtCoordinates as Mc, describeFileReadFailure as Md, reserveStackCreateToken as Mi, WHOLE_DYNAMIC_REFERENCE_PATTERN as Ml, planFailedOps as Mn, UNREADABLE_ORPHANS_CONTAINER_ROW as Mo, isPairableType as Mr, repairMalformedOrphanRecordsForReadOnly as Ms, pendingRequestCount as Mt, describeDockerFailure as Mu, compensateRemovedDeletionProtection as N, withUnsettledProperties as Na, maskWholeValue as Nc, displayAssemblyPath as Nd, withCreateTokenLedger as Ni, isSingleDynamicReferenceToken as Nl, planRollback as Nn, UNREADABLE_RESOURCES_MAP_ROW as No, looselyEqual as Nr, repairMalformedOrphansForReadOnly as Ns, resolvePendingCloudControlRequests as Nt, dockerSpawnEnvWithSensitive as Nu, stripIndexContributorInsights as O, INTRINSIC_KEYS as Oa, TemplateParser as Oc, hasPlainPrototype$1 as Od, refusesFinalSnapshot as Oi, recordNoEchoAttributeValues as Ol, undeclaredEmptyObservedKeys as On, declaresNoEcho as Oo, hintSidesOf as Or, refuseMalformedResourcesForDeploy as Os, mergeNoChangeOutputs as Ot, buildDockerImage as Ou, deleteBudgetKey as P, withoutUnsettledProperties as Pa, maskedLeafCoordinatesOf as Pc, renderAssemblyPathEscape as Pd, acquireIdempotencyToken as Pi, LockManager as Pl, recheckFailedPlan as Pn, accountArgs as Po, mappingPairs as Pr, repairMalformedOutputsForReadOnly as Ps, keptForRetainedRecord as Pt, finchSecretArgvRefusal as Pu, sendTtlWaitingOutRateLimit as Q, assertSendableRoleArn as Qa, logOnlyValueCount as Qc, isCustomResource as Qi, hasUnverifiableParameterRefusal as Ql, retiredAfterRollback as Qn, malformedOrphansWarning as Qo, removeSuperseded as Qr, isStatefulRecreateTargetForReplace as Qs, isHandledOrphan as Qt, loadCdkJson as Qu, INDEX_SETTLE_POLL_INTERVAL_MS as R, s3BucketArn as Ra, passedNoEchoParametersOf as Rc, clearBucketRegionCache as Rd, isRefusedByName as Ri, CrossPrefixReadError as Rl, seedsDeleteFirstGuard as Rn, hasReadableOutputs as Ro, destroyStackRecordsView as Rr, unpreviewableOrphanRecords as Rs, displacedPhysicalIdShown as Rt, isMalformedEnvKey as Ru, indexDeclaresContributorInsights as S, ec2InstanceProtectionSite as Sa, ecsServiceLaunchTypeSetOrChanged as Sc, processStackMessages as Sd, PRE_DELETE_SNAPSHOT_TYPES as Si, recordPhysicalNameCopy as Sl, recordAfterRollbackUpdate as Sn, lacksRecordedTableArn as So, DEFAULT_RESOURCE_WARN_AFTER_MS as Sr, refuseMalformedResourceEntriesForImportSave as Ss, enclosingDeadlineExpired as St, isCrossRegionRedirect as Su, readContributorInsightsSpec as T, reDisableInstanceApiTermination as Ta, lambdaFunctionNameForMask as Tc, utf8ByteLength as Td, createPreDeleteFinalSnapshot as Ti, provenPublicValue as Tl, calculateResourceDrift as Tn, withSharedDrainBudget as To, findDestructiveChanges as Tr, refuseMalformedResourcePropertiesForDrift as Ts, diffSecurity as Tt, validateAssetBucketName as Tu, waitForIndexesSettled as U, resolveDynamicReferences as Ua, liveMatchesUnresolvedTokenFrame as Uc, readTagList as Ui, isNotImplemented as Ul, REDACTED_DELETE_ADDRESS_SKIP_REASON as Un, malformedExportNamesWarning as Uo, cyan as Ur, findHandledUnwrittenCreateOnly as Us, revertNestedChildFromJournal as Ut, runDockerForeground as Uu, maskedLogger as V, s3BucketRegionalDomainName as Va, recordedNoEchoValuesOf as Vc, DBPROXY_TAG_OPTIONS as Vi, crossPrefixDeniedWarning as Vl, getCurrentProducerRegions as Vn, isReadableResourceEntry as Vo, replacedDeleteFailureVerdict as Vr, withheldAccountClause as Vs, nestedChildStackName as Vt, redactedCause as Vu, planVectorIndexUpdates as W, producerLookupOver as Wa, markSameGenerationBag as Wc, refuseMalformedDesiredTags as Wi, stackInstanceIdOf as Wl, isRedactedRecordedValue as Wn, malformedExportSourceWarning as Wo, gray as Wr, findSilentDropProperties as Ws, revertedNestedRowIds as Wt, runDockerStreaming as Wu, planTimeToLive as X, applyRoleArnIfSet as Xa, hasMaskableValues as Xc, ProviderRegistry as Xi, hasReadableExportSet as Xl, nameGenerationHighWaterOf as Xn, malformedOrphanRowsKeptWarning as Xo, holdsSupersededResources as Xr, shownType as Xs, dropFailedCommands as Xt, getDefaultStateBucketName as Xu, isTtlRateLimited as Y, recordedReferenceRegions as Ya, createUnionSecretMasker as Yc, CC_BROKEN_REASON as Yi, exportNamesCarriedFrom as Yl, nameGenerationCarriedFrom as Yn, malformedOrphanRecordsWarning as Yo, deleteSupersededEntry as Yr, findReplacedReadersOfRecreateTargets as Ys, deleteJournaledOrphans as Yt, synthesisStatusMessage as Yu, readTtlSpec as Z, assertFlagRoleArn as Za, literalSplitDelimitersOf as Zc, ccBrokenReason as Zi, hasReasonlessBaselineRefusal as Zl, nameScopeOf as Zn, malformedOrphansRefusalMessage as Zo, isSupersededResourceRecord as Zr, MULTI_REGION_RECREATE_BLOCKED_TYPES as Zs, dropFailedHint as Zt, getLegacyStateBucketName as Zu, streamMemberRefusals as _, deleteSkipReason as _a, templateResourceTypes as _c, PARTITION_TABLE as _d, secretNamedAttributeNamesOf as _i, inheritNestedStackParameterAssociations as _l, pendingMovesRefusalMessage as _n, isNamelessDynamicReferenceError as _o, collectDeclaredOutputNames as _r, refuseMalformedResourceAttributesForOrphan as _s, templateIdentity as _t, AssetModeResolver as _u, isProtectionValueActive as a, withPrintingSecrets as aa, toFiniteNumber as ac, resolveUseCdkBootstrapAssets as ad, noEchoComparisonForTemplate as ai, errorCauseChain as al, isAccessDeniedError as an, envCredentialsAreAssumedRole as ao, resourcesNamingDeclaredParameter as ar, malformedScrubResourceEntriesRefusalMessage as as, IMPLICIT_DELETE_DEPENDENCIES as at, stackInstanceIdCarriedFrom as au, CONTRIBUTOR_INSIGHTS_KEY as b, markWaitAbandoned as ba, blockDeviceMappingsDifferOnlyInDeleteOnTermination as bc, AssemblyReader as bd, storedSecretNameNeedles as bi, physicalNameCopiesOf as bl, replayRollback as bn, cfnRefValueFromPhysicalId as bo, bindingSkippedOutputs as br, refuseMalformedResourceEntriesForDestroy as bs, parentSuppliedValues as bt, ensureAssetStorage as bu, DynamoDBGlobalTableProvider as c, customResourceResponseExpirationWarning as ca, configBooleanRefusal as cc, ssmResolvedValueType as cd, withAttemptedItemsMasked as ci, scrubResourceRecord as cl, readRefactorMarker as cn, producerRegionsFromState as co, exportAliasCollisionScrubWarning as cr, refuseDivergentRecordRegionForDestroy as cs, inheritedProvenanceForChildDiff as ct, timePhase as cu, declaredStreamPolicyMember as d, onlySecretReferencesDiffer as da, readConfigString as dc, MIGRATE_TMP_PREFIX as dd, journaledOrphanPrintingBag as di, DYNAMIC_REFERENCE_TOKEN_SCAN as dl, refactorMarkerRefusalMessage as dn, isUnboundTemplateParameter as do, secretSafeKeyDisplay as dr, refuseMalformedOrphanRecordsForDestroy as ds, serviceTokenBlockingReason as dt, stringifyValue as du, waitForLambdaFunctionActive as ea, renderStatefulReason as ec, resolveAutoAssetStorage as ed, supersededHeldByOtherTypeWarning as ei, recordLogOnlyParameterValue as el, loadJournaledOrphans as en, isIamRoleArn as eo, retiredNameGenerationsLeaving as er, malformedOutputsWarning as es, S3_AUTO_DELETE_OBJECTS_TAG as et, importableOutputs as eu, declaredStreamTagsMember as f, unchangedBehindSecretReference as fa, replayWarn as fc, findLargeInlineResources as fd, maskEventTextWithBoundBags as fi, dynamicReferenceTokens as fl, refuseRefactorMarker as fn, parameterTypeMayLoseSecretIdentity as fo, carriedExportAliasExposure as fr, refuseMalformedOrphans as fs, childTemplateLoader as ft, WorkGraph as fu, streamDeclaresTags as g, deleteLeftInPlace as ga, prefetchCreateOnlyPropertyPaths as gc, expectedOwnerParam as gd, secretNamePrintingBags as gi, identityKeyFor as gl, pendingMovesOutOf as gn, carriesFetchableDynamicReference as go, noEchoParameterValueSeed as gr, refuseMalformedOutputsForDestroy as gs, renderNestedTemplateTreeDefect as gt, rewriteTemplateAssetReferences as gu, streamDeclaresPolicy as h, deleteIndeterminateGuards as ha, requireConfigString as hc, decodeListingKey as hd, secretNamePrintingBag as hi, spelledKeysOf as hl, hasPendingMovesOut as hn, carriesDynamicReference as ho, isWholeDynamicReferenceValue as hr, refuseMalformedOutputs as hs, listNestedTemplateRows as ht, loadPublishableAssetManifest as hu, PROTECTION_PROPERTY_BY_TYPE as i, getCurrentResourceSecrets as ia, toCfnInteger as ic, resolveStateBucketWithDefaultAndSource as id, noEchoAttributeNamesOf as ii, createSecretMasker as il, chunks as in, callerEnvCredentials as io, reachableDivergentParameters as ir, malformedResourcesWarning as is, markRefusedBeforeApplying as it, shouldRetainResource as iu, DYNAMODB_DELETE_POLL_COST_MS as j, unsettledItemsOf as ja, maskAtCoordinates as jc, absoluteAssemblyPathEscape as jd, ledgerForStack as ji, wholeStringLeavesOf as jl, isReplacementOrphan as jn, STATE_RESOURCES_MALFORMED as jo, withMovedTo as jr, refuseMalformedState as js, planOrphanAdoption as jt, describeDockerExecFailure as ju, DYNAMODB_DELETE_DEADLINE_MARGIN_MS as k, isUsableAttemptedName as ka, canonicalCoordinates as kc, nullPrototypeRecord as kd, unsupportedFinalSnapshotError as ki, recordNoEchoParameterFreshValue as kl, demoteSupersededOrphans as kn, JSON_LISTING_HOLE_VALUE as ko, movedToHint as kr, refuseMalformedResourcesForDestroy as ks, makeCanonicalizePropertiesFn as kt, resolveDockerContextDirectory as ku, STREAM_POLICY_KEY as l, CloudControlProvider as la, configIntegerRefusal as lc, CFN_TEMPLATE_BODY_LIMIT as ld, createReadOnlyAttributeHealerFactory as li, withPhysicalNameCopies as ll, readRefactorMarkerOnce as ln, regionLessSecretName as lo, secretBearing as lr, refuseMalformedNestedChildOutputs as ls, deferredServiceTokenWarning as lt, AssetPublisher as lu, reverseMapStreamPolicy as m, UNSPECIFIED_SKIP_REASON as ma, requireConfigObject as mc, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as md, orphanRecordsPrintingBag as mi, pathCrossesDottedKey as ml, updateRefactorMarker as mn, isImpossibleEmptyStoredAttribute as mo, exportNameSecretExposure as mr, refuseMalformedOrphansForOrphan as ms, isAbsoluteAssetPath as mt, createAssetRedirectResolver as mu, recordedProtectionEvidence as n, readsNoEchoDeleteValues as na, coerceWarmThroughput as nc, resolveSkipPrefix as nd, supersededResourcesOf as ni, shareLogOnlyValues as nl, sameJournaledOrphans as nn, AWS_CREDENTIAL_ENV_KEYS as no, computeParameterTaint as nr, malformedResourceEntriesWarning as ns, isTruthyCfnBoolean as nt, orphansAfterRollback as nu, perType as o, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as oa, coerceCfnBoolean as oc, stateBucketExistenceConfirmed as od, noEchoExactEchoLeavesOf as oi, maskSecretsInError as ol, lookupEachName as on, classifyRecordedSecretRegion as oo, WITHHELD_NAME_DISPLAY as or, malformedStateRefusalMessage as os, computeImplicitDeleteEdges as ot, PhaseClock as ou, planStreamMemberOps as p, RollbackInlinePolicyWriters as pa, requireConfigArray as pc, uploadCfnTemplate as pd, namingSecretsWithRecordedNoEcho as pi, isUncertifiedBaselineMaskPosition as pl, sameMove as pn, getAccountInfo as po, exportNameNoEchoParameters as pr, refuseMalformedOrphansForDestroy as ps, findNestedTemplateTreeDefect as pt, buildAssetRedirectMap as pu, vectorIndexesSettled as q, outputReferenceProvenanceOf as qa, snapshotPassProvenance as qc, definedAttributes as qi, acceptedCreateOnlyDropsOf as ql, updatePartialMessage as qn, malformedLocalResourcesWarning as qo, yellow as qr, NO_CC_HANDLERS_REASON as qs, getCurrentNestedStackContext as qt, getDockerImageBySourceHash as qu, recordedProtectionNote as r, isCustomResourceType as ra, isWarmThroughputDecrease as rc, resolveStateBucketWithDefault as rd, withoutSuperseded as ri, unionOfSecretBags as rl, formatResourceLine as rn, applyCallerIdentityCredentials as ro, namesAnyDeclaredParameter as rr, malformedResourcePropertiesWarning as rs, getPriorAttempts as rt, orphansCarriedFrom as ru, readProtection as s, applyCustomResourceResponseExpiration as sa, coerceCfnInteger as sc, warnDeprecatedNoPrefixCliFlag as sd, noEchoParameterNamesOf as si, maskSecretsInText as sl, withApiLimit as sn, classifyReplaySecretRegion as so, displayTextOrWithheld as sr, previewableOrphanRecords as ss, crossStackOutputProvenanceSource as st, renderPhaseTimings as su, DeployEngine as t, TemplateNoEchoReresolver as ta, WARM_THROUGHPUT_MEMBERS as tc, resolveCaptureObservedState as td, supersededHolderOf as ti, recordLogOnlyValue as tl, makeForeignHolderScan as tn, sendableAssumeRoleCommand as to, withNameGenerationReached as tr, malformedRenderedContainersWarning as ts, hasCdkAutoDeleteTag as tt, isReadableBag as tu, STREAM_TAGS_KEY as u, slowCcOperationTimeoutMs as ua, configStringRefusal as uc, CFN_TEMPLATE_URL_LIMIT as ud, completedReplayEntries as ui, withoutPhysicalNameCopies as ul, refactorMarkerMovesOf as un, coerceParameterTypedValue as uo, secretBearingStateKeyWarning as ur, refuseMalformedOrphanRecords as us, findServiceTokenRefusals as ut, isSensitiveAttributeName as uu, streamPolicyMatchesDeclared as v, withIndeterminateGuard as va, describeTypeWithThrottleRetry as vc, canonicalizeRegion as vd, secretNamedRecordNeedles as vi, recordNestedStackParameterExpressions as vl, refusePendingMovesOut as vn, keepsSecretReferenceToken as vo, collectPublishedOutputNames as vr, refuseMalformedResourceEntries as vs, conditionFingerprint as vt, BOOTSTRAP_MARKER_PREFIX as vu, planIndexContributorInsightsOps as w, observeThenDisableInstanceApiTermination as wa, canonicalLambdaFunctionName as wc, parseFailureDebugDetail as wd, ccRoutedFinalSnapshotError as wi, carriesSecretMask as wl, withUnprovenUnsettled as wn, parseWebACLArn as wo, constructPathOf as wr, refuseMalformedResourcePropertiesForDestroy as ws, withResourceDeadline as wt, readBootstrapMarkerBody as wu, contributorInsightsRefusals as x, disableInstanceApiTermination as xa, dbInstanceEngineChangeIsInPlace as xc, StageLoadError as xd, ATOMIC_FINAL_SNAPSHOT_TYPES as xi, recordAttributeIdCopy as xl, removeProtectionTypeList as xn, isStalePlaceholderArnAttribute as xo, DEFAULT_RESOURCE_TIMEOUT_MS as xr, refuseMalformedResourceEntriesForImport as xs, readRecordedConditionVerdicts as xt, getBootstrapMarkerKey as xu, streamTagsMatchDeclared as y, isWaitAbandonedError as ya, withRetry as yc, derivePartitionAndUrlSuffix as yd, stateSecretNameNeedles as yi, recoverMaskedOutput as yl, replayFailedOperations as yn, AWS_NO_VALUE as yo, isExportAliasCollision as yr, refuseMalformedResourceEntriesForDeploy as ys, conditionInputsFrom as yt, assertAssetBucketRegion as yu, TABLE_INDEX_NOUN as z, s3BucketDomainName as za, readbackPathFor as zc, resolveBucketRegion as zd, markDeleteStarted as zi, CrossPrefixScanCache as zl, orphanNeedsIdentity as zn, hasReadableResources as zo, getStackRecords as zr, unreadableOrphanRecords as zs, dropSettledNestedJournals as zt, partitionSensitiveEnv as zu };
|
|
55910
|
+
//# sourceMappingURL=deploy-engine-ClIUqDQL.js.map
|