@go-to-k/cdkd 0.306.0 → 0.307.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-DrREeZeh.js → asg-provider-oKlrkJeO.js} +4 -4
- package/dist/{asg-provider-DrREeZeh.js.map → asg-provider-oKlrkJeO.js.map} +1 -1
- package/dist/{aws-clients-DhsLtXsN.js → aws-clients-Bu9EMILF.js} +3 -4
- package/dist/aws-clients-Bu9EMILF.js.map +1 -0
- package/dist/{aws-failure-text-Durl920o.js → aws-failure-text-NSBdKPYK.js} +7 -1
- package/dist/aws-failure-text-NSBdKPYK.js.map +1 -0
- package/dist/cli.js +2 -2
- package/dist/{db-instance-modify-retry-DvidzfJp.js → db-instance-modify-retry-DOJPkECL.js} +3 -3
- package/dist/{db-instance-modify-retry-DvidzfJp.js.map → db-instance-modify-retry-DOJPkECL.js.map} +1 -1
- package/dist/{deploy-engine-Bjr-FAuZ.js → deploy-engine-BOgsnnk0.js} +477 -49
- package/dist/deploy-engine-BOgsnnk0.js.map +1 -0
- package/dist/{iam-policy-targets-BbtwI9vN.js → iam-policy-targets-TFGunWmV.js} +56 -56
- package/dist/{iam-policy-targets-BbtwI9vN.js.map → iam-policy-targets-TFGunWmV.js.map} +1 -1
- package/dist/{iam-role-provider-BJ26M4Ez.js → iam-role-provider-DfDYgfqK.js} +5 -5
- package/dist/{iam-role-provider-BJ26M4Ez.js.map → iam-role-provider-DfDYgfqK.js.map} +1 -1
- package/dist/index.js +5 -5
- package/dist/{neptune-provider-D_3VAhFf.js → neptune-provider-DvuvSkfJ.js} +5 -5
- package/dist/{neptune-provider-D_3VAhFf.js.map → neptune-provider-DvuvSkfJ.js.map} +1 -1
- package/dist/{program-CcYD-_fU.js → program-DU5UlgkO.js} +7 -7
- package/dist/{program-CcYD-_fU.js.map → program-DU5UlgkO.js.map} +1 -1
- package/dist/{provider-classes-C_AbFNEi.js → provider-classes-CPMW_2-R.js} +701 -175
- package/dist/provider-classes-CPMW_2-R.js.map +1 -0
- package/dist/{rds-provider-Dps9UxBz.js → rds-provider-DcBsBQLi.js} +5 -5
- package/dist/{rds-provider-Dps9UxBz.js.map → rds-provider-DcBsBQLi.js.map} +1 -1
- package/dist/{version-CZkNvTWF.js → version-Dhhyrf1v.js} +2 -2
- package/dist/{version-CZkNvTWF.js.map → version-Dhhyrf1v.js.map} +1 -1
- package/package.json +2 -2
- package/dist/aws-clients-DhsLtXsN.js.map +0 -1
- package/dist/aws-failure-text-Durl920o.js.map +0 -1
- package/dist/deploy-engine-Bjr-FAuZ.js.map +0 -1
- package/dist/provider-classes-C_AbFNEi.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { c as __exportAll, r as getAwsClients } from "./aws-clients-
|
|
2
|
-
import { A as isNameGeneration, B as SECRET_REF_MAX_CODE_POINTS, D as getCurrentStackInstanceId, E as getCurrentSkipPrefix, F as withSkipPrefix, G as displayAwsMessage, H as UNRENDERABLE, I as withStackScope, J as displayStackName, K as displayIdent, L as withStackScopeBeforeStateRead, N as stackInstanceNameSuffix, O as getCurrentStackName, P as withNameGeneration, Q as safeMsg, R as withoutGeneratedFallbackName, S as fallbackNamePropertyFor, T as generatedNameFor, U as asIsMessage, V as STACK_REF_MAX_CODE_POINTS, Y as isPasteableIdent, Z as plainIdentOr, a as safeStringify$1, c as isStdoutReservedForPayload, et as terminalSafe, f as currentLogLineMasker, j as looksLikeCdkdGeneratedName, m as getLiveRenderer, n as describeAwsFailure, p as installLogLineMaskerSource, q as displaySafe, s as getLogger, t as VERBOSE_POINTER, tt as truncateCodePoints, v as applyDefaultNameForFallback, w as generateResourceNameWithFallback, x as explicitNamePropertyFor, y as currentNameGeneration, z as SAFE_MSG_ALTERED_CHAR } from "./aws-failure-text-
|
|
3
|
-
import { $n as isUpdateUnsupportedError, An as StateError, At as carryCreatedBeforeFailure, B as compensateProtectionFlip, Bn as UNSHOWABLE_VALUE, Bt as replayMadeAnotherResource, Cr as markNonRetryable, Ct as createMaskedLogSinks, D as markNotGone, Dn as ResourceUpdateNotSupportedError, Dt as maskerOrIdentity, E as isMarkedNotGone, En as ResourceTimeoutError, Et as maskDeep, F as refusalTypeShown, Fn as normalizeAwsError, Ft as isAuxiliaryFailure, Gn as physicalIdShownBesideCommand, Gt as formatLockExpiry, H as deleteWithProtectionCompensation, Ht as buildForceUnlockCommand, It as isAuxiliaryMarkOf, J as observeThenDisableProtection, Jn as shellBoundedDisplay, Jt as recoveryCommandFlags, K as isTerminalDeleteFailure, Kn as plainOrDescribed, Kt as formatLockOperation, L as resolveExplicitPhysicalId, Lt as markAuxiliaryFailure, M as isQuotableImportValue, Mt as createdBeforeFailure, N as normalizeAwsTagsToCfn, Nt as createdResourceIdentityBeforeFailure, O as assertRegionMatch, Ot as withDerivedNameMasks, P as quotedRemedyLogicalId, Pn as isSoftAbort, Pt as hasCreatedBeforeFailure, Qt as injectiveKey, Rn as SHELL_ACTIVE, Rt as markCreatedBeforeFailure, Sn as MalformedProducerRecordRefusalError, Sr as isThrottlingError, St as stateOrphanRecordRemedy, T as RESOURCE_NOT_FOUND, Tn as ProvisioningError, Tr as wrapMaskedAwsError, Tt as isSecretDerivedValue, Un as isInertUnquoted, Vn as commandHole, Vt as UNREPRODUCIBLE_LOCK_CLAUSE, Wn as pasteableCommand, Xn as withheldTargetClause, Xt as CUSTOM_RESOURCE_RESPONSE_PREFIX, Y as protectionFlipKey, Yn as shellQuote, Yt as sanitizeRecoveryValue, Z as runDeleteAttempt, Zt as DEFAULT_STATE_PREFIX, _n as IntrinsicResolutionRefusalError, _r as isRetryableTransientError, an as ambientCredentialConfig, at as protectedReplacementAdvice, bn as LockError, bt as resourceTypeShown, cn as AccountIdUnavailableError, cr as escapeRegExp$3,
|
|
1
|
+
import { c as __exportAll, r as getAwsClients } from "./aws-clients-Bu9EMILF.js";
|
|
2
|
+
import { A as isNameGeneration, B as SECRET_REF_MAX_CODE_POINTS, D as getCurrentStackInstanceId, E as getCurrentSkipPrefix, F as withSkipPrefix, G as displayAwsMessage, H as UNRENDERABLE, I as withStackScope, J as displayStackName, K as displayIdent, L as withStackScopeBeforeStateRead, N as stackInstanceNameSuffix, O as getCurrentStackName, P as withNameGeneration, Q as safeMsg, R as withoutGeneratedFallbackName, S as fallbackNamePropertyFor, T as generatedNameFor, U as asIsMessage, V as STACK_REF_MAX_CODE_POINTS, Y as isPasteableIdent, Z as plainIdentOr, a as safeStringify$1, c as isStdoutReservedForPayload, et as terminalSafe, f as currentLogLineMasker, j as looksLikeCdkdGeneratedName, m as getLiveRenderer, n as describeAwsFailure, p as installLogLineMaskerSource, q as displaySafe, s as getLogger, t as VERBOSE_POINTER, tt as truncateCodePoints, v as applyDefaultNameForFallback, w as generateResourceNameWithFallback, x as explicitNamePropertyFor, y as currentNameGeneration, z as SAFE_MSG_ALTERED_CHAR } from "./aws-failure-text-NSBdKPYK.js";
|
|
3
|
+
import { $n as isUpdateUnsupportedError, An as StateError, At as carryCreatedBeforeFailure, B as compensateProtectionFlip, Bn as UNSHOWABLE_VALUE, Bt as replayMadeAnotherResource, Cr as markNonRetryable, Ct as createMaskedLogSinks, D as markNotGone, Dn as ResourceUpdateNotSupportedError, Dt as maskerOrIdentity, E as isMarkedNotGone, En as ResourceTimeoutError, Et as maskDeep, F as refusalTypeShown, Fn as normalizeAwsError, Ft as isAuxiliaryFailure, Gn as physicalIdShownBesideCommand, Gt as formatLockExpiry, H as deleteWithProtectionCompensation, Ht as buildForceUnlockCommand, It as isAuxiliaryMarkOf, J as observeThenDisableProtection, Jn as shellBoundedDisplay, Jt as recoveryCommandFlags, K as isTerminalDeleteFailure, Kn as plainOrDescribed, Kt as formatLockOperation, L as resolveExplicitPhysicalId, Lt as markAuxiliaryFailure, M as isQuotableImportValue, Mt as createdBeforeFailure, N as normalizeAwsTagsToCfn, Nt as createdResourceIdentityBeforeFailure, O as assertRegionMatch, Ot as withDerivedNameMasks, P as quotedRemedyLogicalId, Pn as isSoftAbort, Pt as hasCreatedBeforeFailure, Qt as injectiveKey, Rn as SHELL_ACTIVE, Rt as markCreatedBeforeFailure, Sn as MalformedProducerRecordRefusalError, Sr as isThrottlingError, St as stateOrphanRecordRemedy, T as RESOURCE_NOT_FOUND, Tn as ProvisioningError, Tr as wrapMaskedAwsError, Tt as isSecretDerivedValue, Un as isInertUnquoted, Vn as commandHole, Vt as UNREPRODUCIBLE_LOCK_CLAUSE, Wn as pasteableCommand, Xn as withheldTargetClause, Xt as CUSTOM_RESOURCE_RESPONSE_PREFIX, Y as protectionFlipKey, Yn as shellQuote, Yt as sanitizeRecoveryValue, Z as runDeleteAttempt, Zt as DEFAULT_STATE_PREFIX, _n as IntrinsicResolutionRefusalError, _r as isRetryableTransientError, an as ambientCredentialConfig, at as protectedReplacementAdvice, bn as LockError, bt as resourceTypeShown, cn as AccountIdUnavailableError, cr as escapeRegExp$3, ct as monotonicNowMs, d as prepareRemovalForUpdate, er as hasReplayMayCollide, et as DELETION_PROTECTION_DOC_POINTER, f as removalWarning, fn as CrossAccountSecretRefusalError, fr as formatRetryClassificationSignals, ft as isInterruptedWaitError, gn as DynamicReferenceRegionAmbiguousError, gr as isIamPropagationError, gt as compositeIdSeparatorRefusal, hn as DeploymentNotApprovedError, i as holdsSecretDerivedEntry, in as ambientClientDefaults, ir as isReplayedNameCollisionFrom, it as pasteableAwsCommand, jn as SynthesisError, kt as RETRY_AUXILIARY_OWNER, l as withUnchangedSecretPrincipalLists, ln as AssetError, lr as stripControlChars, m as withoutInjectedRemovals, mr as isAmbiguousOutcomeError, mt as canonicalizeRoute53QueryName, nr as isNameCooldownError, on as clientDefaultsFor, or as markReplayMayCollide, pn as DependencyError, pr as isAmbiguousCcHandlerErrorCode, pt as startInterruptWatch, qn as quotedOrDescribed, qt as formatLockOwner, rn as withPasteableAwsProfile, rr as isRecreateRetryableError, sn as credentialFingerprint, sr as relayedNameCollision, st as ElapsedBudgetRegistry, tn as producerRecordKey, tr as isNameCollisionErrorFrom, un as CdkdError, vr as isTransientServerError, vt as logicalIdShown, w as withoutServerErrorRetries, wr as markRedactedCause, wt as createMaskedRetryLogger, xn as MacroExpansionError, xr as isMarkedNonRetryable, xt as segmentAfterAnchor, yr as retryClassificationText, z as ProtectionFlipRegistry, zn as SHELL_ACTIVE_WHY } from "./iam-policy-targets-TFGunWmV.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-Dhhyrf1v.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";
|
|
@@ -10,7 +10,7 @@ import { CloudControlClient, CreateResourceCommand, DeleteResourceCommand, GetRe
|
|
|
10
10
|
import { PublishCommand, SNSClient } from "@aws-sdk/client-sns";
|
|
11
11
|
import { GetFunctionCommand, GetFunctionConfigurationCommand, GetFunctionUrlConfigCommand, InvokeCommand, LambdaClient, UpdateFunctionConfigurationCommand, waitUntilFunctionActiveV2, waitUntilFunctionUpdatedV2 } from "@aws-sdk/client-lambda";
|
|
12
12
|
import { AssumeRoleCommand, GetCallerIdentityCommand, STSClient } from "@aws-sdk/client-sts";
|
|
13
|
-
import { CreateSnapshotCommand, DeleteVolumeCommand, DescribeAvailabilityZonesCommand, DescribeImagesCommand, DescribeInstanceAttributeCommand, DescribeInstancesCommand, DescribeLaunchTemplatesCommand, DescribeRouteTablesCommand, DescribeSecurityGroupsCommand, DescribeSnapshotsCommand, DescribeSubnetsCommand, DescribeVolumesCommand, DescribeVpcsCommand, DescribeVpnGatewaysCommand, EC2Client, ModifyInstanceAttributeCommand } from "@aws-sdk/client-ec2";
|
|
13
|
+
import { CreateSnapshotCommand, DeleteVolumeCommand, DescribeAvailabilityZonesCommand, DescribeImagesCommand, DescribeInstanceAttributeCommand, DescribeInstancesCommand, DescribeLaunchTemplatesCommand, DescribeNatGatewaysCommand, DescribeRouteTablesCommand, DescribeSecurityGroupsCommand, DescribeSnapshotsCommand, DescribeSubnetsCommand, DescribeVolumesCommand, DescribeVpcsCommand, DescribeVpnGatewaysCommand, EC2Client, ModifyInstanceAttributeCommand } from "@aws-sdk/client-ec2";
|
|
14
14
|
import { CreateTableCommand, DeleteTableCommand, DescribeContinuousBackupsCommand, DescribeContributorInsightsCommand, DescribeKinesisStreamingDestinationCommand, DescribeTableCommand, DescribeTimeToLiveCommand, DynamoDBClient, ListTagsOfResourceCommand, ResourceNotFoundException as ResourceNotFoundException$1, TagResourceCommand as TagResourceCommand$2, UntagResourceCommand as UntagResourceCommand$2, UpdateTableCommand, UpdateTimeToLiveCommand } from "@aws-sdk/client-dynamodb";
|
|
15
15
|
import { CloudFormationClient, CreateChangeSetCommand, DeleteStackCommand, DescribeChangeSetCommand, DescribeStacksCommand, DescribeTypeCommand, GetTemplateCommand, ListExportsCommand, waitUntilChangeSetCreateComplete } from "@aws-sdk/client-cloudformation";
|
|
16
16
|
import { GetRestApiCommand } from "@aws-sdk/client-api-gateway";
|
|
@@ -2360,7 +2360,7 @@ async function resolveStateBucketWithDefaultAndSource(cliBucket, region, legacyF
|
|
|
2360
2360
|
logger.debug("No state bucket specified, resolving default from account...");
|
|
2361
2361
|
const { GetCallerIdentityCommand } = await import("@aws-sdk/client-sts");
|
|
2362
2362
|
const { S3Client, HeadBucketCommand, ListObjectsV2Command } = await import("@aws-sdk/client-s3");
|
|
2363
|
-
const { getAwsClients } = await import("./aws-clients-
|
|
2363
|
+
const { getAwsClients } = await import("./aws-clients-Bu9EMILF.js").then((n) => n.n);
|
|
2364
2364
|
const { expectedOwnerParam, recordResolvedAccountId } = await Promise.resolve().then(() => expected_bucket_owner_exports);
|
|
2365
2365
|
const probeDeps = {
|
|
2366
2366
|
HeadBucketCommand,
|
|
@@ -12614,6 +12614,9 @@ function glueTableNameChanged(oldValue, newValue) {
|
|
|
12614
12614
|
if (oldName === void 0 || newName === void 0) return false;
|
|
12615
12615
|
return oldName.toLowerCase() !== newName.toLowerCase();
|
|
12616
12616
|
}
|
|
12617
|
+
function natZoneAddressesAddedToAutomaticGateway(oldValue, newValue) {
|
|
12618
|
+
return oldValue == null && newValue != null;
|
|
12619
|
+
}
|
|
12617
12620
|
var ReplacementRulesRegistry = class {
|
|
12618
12621
|
logger = getLogger().child("ReplacementRulesRegistry");
|
|
12619
12622
|
rules = /* @__PURE__ */ new Map();
|
|
@@ -12938,6 +12941,10 @@ var ReplacementRulesRegistry = class {
|
|
|
12938
12941
|
"KeyName",
|
|
12939
12942
|
"NetworkInterfaces"
|
|
12940
12943
|
]) });
|
|
12944
|
+
this.rules.set("AWS::EC2::NatGateway", {
|
|
12945
|
+
replacementProperties: /* @__PURE__ */ new Set(),
|
|
12946
|
+
conditionalReplacements: /* @__PURE__ */ new Map([["AvailabilityZoneAddresses", natZoneAddressesAddedToAutomaticGateway]])
|
|
12947
|
+
});
|
|
12941
12948
|
this.rules.set("AWS::EC2::Volume", {
|
|
12942
12949
|
replacementProperties: /* @__PURE__ */ new Set([
|
|
12943
12950
|
"AvailabilityZone",
|
|
@@ -16680,21 +16687,19 @@ const PROPERTY_COVERAGE_BY_TYPE = /* @__PURE__ */ new Map([
|
|
|
16680
16687
|
["AWS::EC2::NatGateway", {
|
|
16681
16688
|
handled: /* @__PURE__ */ new Set([
|
|
16682
16689
|
"AllocationId",
|
|
16690
|
+
"AvailabilityMode",
|
|
16691
|
+
"AvailabilityZoneAddresses",
|
|
16683
16692
|
"ConnectivityType",
|
|
16684
16693
|
"PrivateIpAddress",
|
|
16685
16694
|
"SecondaryAllocationIds",
|
|
16686
16695
|
"SecondaryPrivateIpAddressCount",
|
|
16687
16696
|
"SecondaryPrivateIpAddresses",
|
|
16688
16697
|
"SubnetId",
|
|
16689
|
-
"Tags"
|
|
16690
|
-
|
|
16691
|
-
silentDrop: /* @__PURE__ */ new Map([
|
|
16692
|
-
["AvailabilityMode", "not yet implemented by cdkd"],
|
|
16693
|
-
["AvailabilityZoneAddresses", "not yet implemented by cdkd"],
|
|
16694
|
-
["MaxDrainDurationSeconds", "write-only address-drain timeout with no CreateNatGateway member and no NAT gateway modify API; only ec2:DisassociateNatGatewayAddress / UnassignPrivateNatGatewayAddress accept it, and cdkd rejects NatGateway updates outright — routed via Cloud Control instead"],
|
|
16695
|
-
["VpcId", "AWS derives the VPC from SubnetId; the ec2:CreateNatGateway API has no VpcId parameter"]
|
|
16698
|
+
"Tags",
|
|
16699
|
+
"VpcId"
|
|
16696
16700
|
]),
|
|
16697
|
-
|
|
16701
|
+
silentDrop: /* @__PURE__ */ new Map([["MaxDrainDurationSeconds", "write-only address-drain timeout with no CreateNatGateway member and no NAT gateway modify API; only ec2:DisassociateNatGatewayAddress / UnassignPrivateNatGatewayAddress accept it, and the cdkd NatGateway update releases only the AvailabilityZoneAddresses of a regional gateway, never the secondary addresses of a zonal one — routed via Cloud Control instead"]]),
|
|
16702
|
+
createOnlyDrops: /* @__PURE__ */ new Set(),
|
|
16698
16703
|
readOnly: /* @__PURE__ */ new Set([
|
|
16699
16704
|
"AutoProvisionZones",
|
|
16700
16705
|
"AutoScalingIps",
|
|
@@ -24052,6 +24057,68 @@ async function constructAttributeForComputeTypes(resolver, attributeName, contex
|
|
|
24052
24057
|
}
|
|
24053
24058
|
default: return guardedPhysicalIdFallback(resolver, logicalId, attributeName, resourceType, physicalId, context);
|
|
24054
24059
|
}
|
|
24060
|
+
if (resourceType === "AWS::EC2::NatGateway") {
|
|
24061
|
+
if (attributeName === "NatGatewayId") return physicalId;
|
|
24062
|
+
if (attributeName === "RouteTableId" || attributeName === "EniId" || attributeName === "AutoProvisionZones" || attributeName === "AutoScalingIps") {
|
|
24063
|
+
const read = async () => {
|
|
24064
|
+
try {
|
|
24065
|
+
const gateway = (await resolver.clients.clientsForRegion(resolver.explicitRegion).ec2.send(new DescribeNatGatewaysCommand({ NatGatewayIds: [physicalId] }))).NatGateways?.find((g) => g.NatGatewayId === physicalId);
|
|
24066
|
+
const addresses = gateway?.NatGatewayAddresses ?? [];
|
|
24067
|
+
const primary = addresses.find((a) => a.IsPrimary === true) ?? addresses[0];
|
|
24068
|
+
const value = attributeName === "RouteTableId" ? gateway?.RouteTableId : attributeName === "AutoProvisionZones" ? gateway?.AutoProvisionZones : attributeName === "AutoScalingIps" ? gateway?.AutoScalingIps : gateway?.AvailabilityMode === "regional" ? void 0 : primary?.NetworkInterfaceId;
|
|
24069
|
+
return {
|
|
24070
|
+
state: gateway?.State,
|
|
24071
|
+
regional: gateway?.AvailabilityMode === "regional",
|
|
24072
|
+
value: typeof value === "string" && value !== "" ? value : void 0
|
|
24073
|
+
};
|
|
24074
|
+
} catch (err) {
|
|
24075
|
+
return refuseUnservedAttribute(resolver, {
|
|
24076
|
+
logicalId,
|
|
24077
|
+
attributeName,
|
|
24078
|
+
resourceType,
|
|
24079
|
+
physicalId,
|
|
24080
|
+
context,
|
|
24081
|
+
observed: describeFailureObserved(resolver, "DescribeNatGateways", err, context),
|
|
24082
|
+
remedy: "Fix the read (the ec2:DescribeNatGateways permission, or the region) and deploy again."
|
|
24083
|
+
});
|
|
24084
|
+
}
|
|
24085
|
+
};
|
|
24086
|
+
let observedRead = await read();
|
|
24087
|
+
if (observedRead.value === void 0 && observedRead.state === "pending") {
|
|
24088
|
+
const watch = startInterruptWatch(`NAT gateway ${logicalId} attribute wait`);
|
|
24089
|
+
try {
|
|
24090
|
+
for (let poll = 0; poll < natGatewayAttributeWait.polls && observedRead.state === "pending"; poll++) {
|
|
24091
|
+
if (watch.isInterrupted()) throw watch.onInterrupted();
|
|
24092
|
+
await natGatewayAttributeWait.sleep(natGatewayAttributeWait.delayMs);
|
|
24093
|
+
observedRead = await read();
|
|
24094
|
+
}
|
|
24095
|
+
} finally {
|
|
24096
|
+
watch.dispose();
|
|
24097
|
+
}
|
|
24098
|
+
}
|
|
24099
|
+
if (observedRead.value !== void 0) return observedRead.value;
|
|
24100
|
+
if (observedRead.state === "pending") return refuseUnservedAttribute(resolver, {
|
|
24101
|
+
logicalId,
|
|
24102
|
+
attributeName,
|
|
24103
|
+
resourceType,
|
|
24104
|
+
physicalId,
|
|
24105
|
+
context,
|
|
24106
|
+
observed: "the NAT gateway was still pending when the attribute wait ran out",
|
|
24107
|
+
remedy: "Check the gateway with `aws ec2 describe-nat-gateways`, then deploy again once it is available."
|
|
24108
|
+
});
|
|
24109
|
+
const remedy = observedRead.state === "available" ? attributeName === "EniId" && observedRead.regional ? "The gateway is available and has no such value: a regional NAT gateway reports no single EniId. Reference another attribute." : attributeName !== "EniId" && !observedRead.regional ? "The gateway is available, and AWS reports no such value for this zonal gateway; the attribute is set on regional NAT gateways. Reference another attribute." : "The gateway is available and AWS reports no such value for it; check it with `aws ec2 describe-nat-gateways`." : observedRead.state === "failed" ? "The gateway is failed and has no such attribute to serve; fix the gateway and deploy again." : observedRead.state === void 0 ? "DescribeNatGateways no longer returns the gateway; check it in the console." : "The gateway is deleted or being deleted and has no such attribute to serve.";
|
|
24110
|
+
return refuseUnservedAttribute(resolver, {
|
|
24111
|
+
logicalId,
|
|
24112
|
+
attributeName,
|
|
24113
|
+
resourceType,
|
|
24114
|
+
physicalId,
|
|
24115
|
+
context,
|
|
24116
|
+
observed: `DescribeNatGateways reports no ${displayMasked(resolver, attributeName, context)}`,
|
|
24117
|
+
remedy
|
|
24118
|
+
});
|
|
24119
|
+
}
|
|
24120
|
+
return guardedPhysicalIdFallback(resolver, logicalId, attributeName, resourceType, physicalId, context);
|
|
24121
|
+
}
|
|
24055
24122
|
if (resourceType === "AWS::EC2::LaunchTemplate") {
|
|
24056
24123
|
if (attributeName === "LatestVersionNumber" || attributeName === "DefaultVersionNumber") {
|
|
24057
24124
|
try {
|
|
@@ -24112,6 +24179,11 @@ async function constructAttributeForComputeTypes(resolver, attributeName, contex
|
|
|
24112
24179
|
}
|
|
24113
24180
|
return NOT_CONSTRUCTED;
|
|
24114
24181
|
}
|
|
24182
|
+
const natGatewayAttributeWait = {
|
|
24183
|
+
polls: 60,
|
|
24184
|
+
delayMs: 1e4,
|
|
24185
|
+
sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms))
|
|
24186
|
+
};
|
|
24115
24187
|
|
|
24116
24188
|
//#endregion
|
|
24117
24189
|
//#region src/deployment/intrinsic-resolver/functions.ts
|
|
@@ -28394,7 +28466,7 @@ var CloudControlProvider = class {
|
|
|
28394
28466
|
const indeterminateGuard = await this.confirmDeleteTargetIdentity(logicalId, resourceType, physicalId, context);
|
|
28395
28467
|
if (context?.removeProtection === true && resourceType === "AWS::AutoScaling::AutoScalingGroup") {
|
|
28396
28468
|
this.logger.debug(`Delegating protected AutoScalingGroup ${logicalId} delete to the SDK ASGProvider (Cloud Control cannot force-delete a protected ASG)`);
|
|
28397
|
-
const { ASGProvider } = await import("./asg-provider-
|
|
28469
|
+
const { ASGProvider } = await import("./asg-provider-oKlrkJeO.js");
|
|
28398
28470
|
const delegateRegion = ambientRegion();
|
|
28399
28471
|
let asgProvider = this.asgDeleteDelegates.get(delegateRegion);
|
|
28400
28472
|
if (asgProvider === void 0) {
|
|
@@ -28503,7 +28575,7 @@ var CloudControlProvider = class {
|
|
|
28503
28575
|
const family = SDK_DELETE_FAMILIES.get(resourceType);
|
|
28504
28576
|
const cached = this.sdkDeleteDelegates.get(family);
|
|
28505
28577
|
if (cached !== void 0 && cached.region === ccRegion) return cached.provider;
|
|
28506
|
-
const provider = family === "rds" ? new (await (import("./rds-provider-
|
|
28578
|
+
const provider = family === "rds" ? new (await (import("./rds-provider-DcBsBQLi.js"))).RDSProvider({ region: ccRegion }) : new (await (import("./neptune-provider-DvuvSkfJ.js"))).NeptuneProvider({ region: ccRegion });
|
|
28507
28579
|
this.sdkDeleteDelegates.set(family, {
|
|
28508
28580
|
region: ccRegion,
|
|
28509
28581
|
provider
|
|
@@ -46590,15 +46662,17 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
46590
46662
|
}
|
|
46591
46663
|
if (sdkIndexes.length > 0) createParams.GlobalSecondaryIndexes = sdkIndexes;
|
|
46592
46664
|
if (properties["LocalSecondaryIndexes"]) createParams.LocalSecondaryIndexes = properties["LocalSecondaryIndexes"];
|
|
46593
|
-
|
|
46594
|
-
|
|
46595
|
-
const
|
|
46596
|
-
if (
|
|
46597
|
-
|
|
46665
|
+
const sseEnabledRefusal = configBooleanRefusal(properties["SSESpecification"], "SSEEnabled", "AWS::DynamoDB::GlobalTable SSESpecification");
|
|
46666
|
+
if (sseEnabledRefusal !== void 0) {
|
|
46667
|
+
const onReplay = replayWarn(log, context).onUnusable;
|
|
46668
|
+
if (!onReplay) throw new ProvisioningError(log.mask(`AWS::DynamoDB::GlobalTable ${logicalId}: ${sseEnabledRefusal}. Nothing was created; fix the template value`), resourceType, logicalId);
|
|
46669
|
+
onReplay(`${sseEnabledRefusal}. Encryption is enabled, the block's default.`);
|
|
46598
46670
|
}
|
|
46671
|
+
if (properties["SSESpecification"]) createParams.SSESpecification = toSdkTableSseSpecification(properties["SSESpecification"], readReplicaKmsMasterKeyId(localReplicaEntry(properties, currentRegion)));
|
|
46599
46672
|
const dpeResolved = extractLocalDeletionProtection(properties, currentRegion);
|
|
46600
46673
|
if (dpeResolved !== void 0) createParams.DeletionProtectionEnabled = dpeResolved;
|
|
46601
|
-
|
|
46674
|
+
const localTableClass = extractLocalTableClass(properties, currentRegion);
|
|
46675
|
+
if (localTableClass !== void 0) createParams.TableClass = localTableClass;
|
|
46602
46676
|
const createCeilings = collectTableOnDemandCeilings(properties, currentRegion, diagnostics, maskSecrets);
|
|
46603
46677
|
const createOnDemand = {
|
|
46604
46678
|
...createCeilings.read.value !== void 0 && { MaxReadRequestUnits: createCeilings.read.value },
|
|
@@ -46678,12 +46752,20 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
46678
46752
|
const region = replica.RegionName;
|
|
46679
46753
|
if (!region || region === currentRegion) continue;
|
|
46680
46754
|
try {
|
|
46755
|
+
const declared = readReplicaDeletionProtection(localReplicaEntry(wiringProperties, region), region);
|
|
46756
|
+
try {
|
|
46757
|
+
if ((declared === true ? await this.getRegionalClient(region).send(new DescribeTableCommand({ TableName: tableName })) : void 0)?.Table?.DeletionProtectionEnabled === true) await this.setReplicaDeletionProtection(tableName, region, false, logicalId, maskSecrets);
|
|
46758
|
+
} catch (flipError) {
|
|
46759
|
+
if (isInterruptedWaitError(flipError)) throw flipError;
|
|
46760
|
+
log.debug(`Partial-create cleanup: could not turn off deletion protection on the ${region} replica of ${log.value(tableName)}: ` + log.mask(describeAwsFailure(flipError).detail));
|
|
46761
|
+
}
|
|
46681
46762
|
await this.dynamoDBClient.send(new UpdateTableCommand({
|
|
46682
46763
|
TableName: tableName,
|
|
46683
46764
|
ReplicaUpdates: [{ Delete: { RegionName: region } }]
|
|
46684
46765
|
}));
|
|
46685
46766
|
await this.waitForReplicaGone(tableName, region, logicalId, void 0, void 0, maskSecrets);
|
|
46686
46767
|
} catch (replicaCleanupErr) {
|
|
46768
|
+
if (isInterruptedWaitError(replicaCleanupErr)) throw replicaCleanupErr;
|
|
46687
46769
|
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()}`);
|
|
46688
46770
|
}
|
|
46689
46771
|
}
|
|
@@ -46719,13 +46801,15 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
46719
46801
|
}
|
|
46720
46802
|
async addReplica(tableName, replica, region, logicalId, billingMode, diagnostics, maskSecrets = (text) => text) {
|
|
46721
46803
|
const create = { RegionName: region };
|
|
46722
|
-
|
|
46804
|
+
const kmsMasterKeyId = readReplicaKmsMasterKeyId(replica);
|
|
46805
|
+
if (kmsMasterKeyId !== void 0) create.KMSMasterKeyId = kmsMasterKeyId;
|
|
46723
46806
|
const replicaIndexes = toSdkReplicaGlobalSecondaryIndexes(replica["GlobalSecondaryIndexes"], billingMode, diagnostics, maskSecrets);
|
|
46724
46807
|
if (replicaIndexes) create.GlobalSecondaryIndexes = replicaIndexes;
|
|
46725
46808
|
const tableOverrides = toSdkReplicaThroughputOverrides(replica, billingMode, diagnostics, {}, maskSecrets);
|
|
46726
46809
|
if (tableOverrides.ProvisionedThroughputOverride) create.ProvisionedThroughputOverride = tableOverrides.ProvisionedThroughputOverride;
|
|
46727
46810
|
if (tableOverrides.OnDemandThroughputOverride) create.OnDemandThroughputOverride = tableOverrides.OnDemandThroughputOverride;
|
|
46728
|
-
|
|
46811
|
+
const tableClass = readReplicaTableClass(replica);
|
|
46812
|
+
if (tableClass !== void 0) create.TableClassOverride = tableClass;
|
|
46729
46813
|
const replicaUpdates = [{ Create: create }];
|
|
46730
46814
|
for (let attempt = 1;; attempt++) try {
|
|
46731
46815
|
await this.dynamoDBClient.send(new UpdateTableCommand({
|
|
@@ -46739,6 +46823,259 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
46739
46823
|
await new Promise((resolve) => setTimeout(resolve, REPLICA_COPY_RELEASE_POLL_MS));
|
|
46740
46824
|
}
|
|
46741
46825
|
await this.waitForReplicaActive(tableName, region, logicalId, void 0, maskSecrets);
|
|
46826
|
+
if (readReplicaDeletionProtection(replica, region, (message) => this.logger.warn(maskSecrets(message))) === true) await this.setReplicaDeletionProtection(tableName, region, true, logicalId, maskSecrets);
|
|
46827
|
+
}
|
|
46828
|
+
async setReplicaDeletionProtection(tableName, region, enabled, logicalId, maskSecrets, budget) {
|
|
46829
|
+
await this.sendReplicaDeletionProtection(tableName, region, enabled, logicalId, maskSecrets, { budget });
|
|
46830
|
+
await this.waitForReplicaProtectionSettled(tableName, region, enabled, logicalId, maskSecrets, budget);
|
|
46831
|
+
}
|
|
46832
|
+
async sendReplicaDeletionProtection(tableName, region, enabled, logicalId, maskSecrets, opts = {}) {
|
|
46833
|
+
await this.waitForGlobalTableSettled(tableName, logicalId, maskSecrets, {
|
|
46834
|
+
...opts,
|
|
46835
|
+
region
|
|
46836
|
+
});
|
|
46837
|
+
await this.writeReplicaDeletionProtection(tableName, region, enabled);
|
|
46838
|
+
}
|
|
46839
|
+
async writeReplicaDeletionProtection(tableName, region, enabled) {
|
|
46840
|
+
await this.getRegionalClient(region).send(new UpdateTableCommand({
|
|
46841
|
+
TableName: tableName,
|
|
46842
|
+
DeletionProtectionEnabled: enabled
|
|
46843
|
+
}));
|
|
46844
|
+
}
|
|
46845
|
+
async waitForReplicaProtectionSettled(tableName, region, enabled, logicalId, maskSecrets, budget) {
|
|
46846
|
+
const wait = beginDeleteWait(60, budget);
|
|
46847
|
+
const watch = startInterruptWatch(maskSecrets(`DynamoDB replica ${region} deletion-protection change on ${tableName}`));
|
|
46848
|
+
try {
|
|
46849
|
+
while (wait.nextPoll()) {
|
|
46850
|
+
if (watch.isInterrupted()) throw watch.onInterrupted();
|
|
46851
|
+
const replica = await this.getRegionalClient(region).send(new DescribeTableCommand({ TableName: tableName }));
|
|
46852
|
+
if (replica.Table?.TableStatus === "ACTIVE" && replica.Table.DeletionProtectionEnabled === enabled) {
|
|
46853
|
+
if ((await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName }))).Table?.TableStatus === "ACTIVE") return;
|
|
46854
|
+
}
|
|
46855
|
+
await new Promise((resolve) => setTimeout(resolve, REPLICA_PROTECTION_SETTLE_POLL_MS));
|
|
46856
|
+
}
|
|
46857
|
+
} finally {
|
|
46858
|
+
watch.dispose();
|
|
46859
|
+
}
|
|
46860
|
+
throw new ProvisioningError(maskSecrets(`DeletionProtectionEnabled=${enabled} on the ${region} replica of ${tableName} did not settle within ${wait.pollsRun} polls${wait.note()}`), "AWS::DynamoDB::GlobalTable", logicalId, tableName);
|
|
46861
|
+
}
|
|
46862
|
+
async convergeReplicaDeletionProtection(tableName, logicalId, currentRegion, previousProperties, properties, addedRegions, warn, maskSecrets) {
|
|
46863
|
+
const desired = Array.isArray(properties["Replicas"]) ? properties["Replicas"] : [];
|
|
46864
|
+
for (const entry of desired) {
|
|
46865
|
+
const replica = asRecord(entry);
|
|
46866
|
+
const region = replica?.["Region"];
|
|
46867
|
+
if (typeof region !== "string" || region === currentRegion || addedRegions.has(region)) continue;
|
|
46868
|
+
const declared = readReplicaDeletionProtection(replica, region, warn);
|
|
46869
|
+
if (declared === UNUSABLE) continue;
|
|
46870
|
+
const previous = readReplicaDeletionProtection(localReplicaEntry(previousProperties, region), region);
|
|
46871
|
+
const newDpe = declared ?? false;
|
|
46872
|
+
const oldDpe = previous === UNUSABLE ? void 0 : previous ?? false;
|
|
46873
|
+
if (oldDpe !== void 0 && newDpe !== oldDpe) {
|
|
46874
|
+
if (oldDpe && declared === void 0) warn(`Auto-disabling DeletionProtectionEnabled on the ${region} replica of ${tableName}: the template no longer sets it for that replica. Set it to false explicitly to silence this warning.`);
|
|
46875
|
+
await this.setReplicaDeletionProtection(tableName, region, newDpe, logicalId, maskSecrets);
|
|
46876
|
+
continue;
|
|
46877
|
+
}
|
|
46878
|
+
if (declared === void 0) continue;
|
|
46879
|
+
let live;
|
|
46880
|
+
try {
|
|
46881
|
+
live = (await this.getRegionalClient(region).send(new DescribeTableCommand({ TableName: tableName }))).Table?.DeletionProtectionEnabled;
|
|
46882
|
+
} catch (readError) {
|
|
46883
|
+
this.logger.debug(maskSecrets(`Could not read DeletionProtectionEnabled on the ${region} replica of ${tableName}: ` + describeAwsFailure(readError).detail));
|
|
46884
|
+
}
|
|
46885
|
+
if (typeof live === "boolean" && live !== newDpe) await this.setReplicaDeletionProtection(tableName, region, newDpe, logicalId, maskSecrets);
|
|
46886
|
+
}
|
|
46887
|
+
}
|
|
46888
|
+
async convergeReplicaSettings(tableName, logicalId, currentRegion, properties, addedRegions, maskSecrets) {
|
|
46889
|
+
const kept = (Array.isArray(properties["Replicas"]) ? properties["Replicas"] : []).map(asRecord).filter((r) => typeof r?.["Region"] === "string" && r["Region"] !== currentRegion && !addedRegions.has(r["Region"]));
|
|
46890
|
+
if (kept.every((r) => readReplicaTableClass(r) === void 0)) return;
|
|
46891
|
+
let liveReplicas;
|
|
46892
|
+
let sourceClass;
|
|
46893
|
+
try {
|
|
46894
|
+
const described = await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName }));
|
|
46895
|
+
liveReplicas = described.Table?.Replicas;
|
|
46896
|
+
sourceClass = described.Table?.TableClassSummary?.TableClass;
|
|
46897
|
+
} catch (readError) {
|
|
46898
|
+
this.logger.debug(maskSecrets(`Could not read the replicas of ${tableName} to converge their table class: ` + describeAwsFailure(readError).detail));
|
|
46899
|
+
return;
|
|
46900
|
+
}
|
|
46901
|
+
for (const replica of kept) {
|
|
46902
|
+
const region = replica["Region"];
|
|
46903
|
+
const live = liveReplicas?.find((r) => r.RegionName === region);
|
|
46904
|
+
if (!live) continue;
|
|
46905
|
+
const tableClass = readReplicaTableClass(replica);
|
|
46906
|
+
if (tableClass === void 0) continue;
|
|
46907
|
+
if (tableClass === (live.ReplicaTableClassSummary?.TableClass ?? sourceClass ?? "STANDARD")) {
|
|
46908
|
+
this.logger.debug(maskSecrets(`The ${region} replica of ${tableName} already holds its declared table class`));
|
|
46909
|
+
continue;
|
|
46910
|
+
}
|
|
46911
|
+
this.logger.debug(maskSecrets(`Bringing the ${region} replica of ${tableName} to its declared table class`));
|
|
46912
|
+
try {
|
|
46913
|
+
await this.dynamoDBClient.send(new UpdateTableCommand({
|
|
46914
|
+
TableName: tableName,
|
|
46915
|
+
ReplicaUpdates: [{ Update: {
|
|
46916
|
+
RegionName: region,
|
|
46917
|
+
TableClassOverride: tableClass
|
|
46918
|
+
} }]
|
|
46919
|
+
}));
|
|
46920
|
+
await this.waitForGlobalTableSettled(tableName, logicalId, maskSecrets);
|
|
46921
|
+
} catch (convergeError) {
|
|
46922
|
+
if (isInterruptedWaitError(convergeError)) throw convergeError;
|
|
46923
|
+
this.logger.debug(maskSecrets(`Could not bring the ${region} replica of ${tableName} to its declared table class: ` + describeAwsFailure(convergeError).detail));
|
|
46924
|
+
this.logger.warn(maskSecrets(`The ${region} replica of ${tableName} does not hold its declared TableClass, and setting it failed (${describeAwsFailure(convergeError).summary}). The next deploy that updates this table tries again.`));
|
|
46925
|
+
}
|
|
46926
|
+
}
|
|
46927
|
+
}
|
|
46928
|
+
async applyReplicaKeys(tableName, logicalId, currentRegion, properties, previousProperties, addedRegions, deferredSseUpdate, deferredSseFromTemplate, keylessSseFromTemplate, maskSecrets) {
|
|
46929
|
+
if (!(properties["SSESpecification"] !== void 0 && configBooleanRefusal(properties["SSESpecification"], "SSEEnabled", "AWS::DynamoDB::GlobalTable SSESpecification") === void 0 && toSdkTableSseSpecification(properties["SSESpecification"], void 0).Enabled)) return;
|
|
46930
|
+
const declared = /* @__PURE__ */ new Map();
|
|
46931
|
+
for (const entry of Array.isArray(properties["Replicas"]) ? properties["Replicas"] : []) {
|
|
46932
|
+
const replica = asRecord(entry);
|
|
46933
|
+
const region = replica?.["Region"];
|
|
46934
|
+
if (typeof region === "string") declared.set(region, readReplicaKmsMasterKeyId(replica));
|
|
46935
|
+
}
|
|
46936
|
+
if ([...declared.values()].every((key) => key === void 0)) return;
|
|
46937
|
+
const replicaKeyChanged = [...declared].some(([region, key]) => region !== currentRegion && key !== void 0 && !addedRegions.has(region) && key !== readReplicaKmsMasterKeyId(localReplicaEntry(previousProperties, region)));
|
|
46938
|
+
let liveKeys;
|
|
46939
|
+
try {
|
|
46940
|
+
liveKeys = await this.readLiveKeys(tableName, currentRegion);
|
|
46941
|
+
} catch (readError) {
|
|
46942
|
+
if (replicaKeyChanged || deferredSseFromTemplate || keylessSseFromTemplate) throw readError;
|
|
46943
|
+
this.logger.debug(maskSecrets(`Could not read the KMS keys of ${tableName} to converge them: ` + describeAwsFailure(readError).detail));
|
|
46944
|
+
return;
|
|
46945
|
+
}
|
|
46946
|
+
const templateChanged = replicaKeyChanged || keylessSseFromTemplate && [...declared].some(([region, key]) => region !== currentRegion && key !== void 0) || deferredSseFromTemplate && declared.get(currentRegion) !== liveKeys.get(currentRegion);
|
|
46947
|
+
let request;
|
|
46948
|
+
if (liveKeys.size < 2) {
|
|
46949
|
+
if (deferredSseUpdate === void 0) return;
|
|
46950
|
+
request = {
|
|
46951
|
+
TableName: tableName,
|
|
46952
|
+
SSESpecification: deferredSseUpdate
|
|
46953
|
+
};
|
|
46954
|
+
} else {
|
|
46955
|
+
const built = this.replicaKeysRequest(tableName, logicalId, liveKeys, declared, templateChanged, maskSecrets);
|
|
46956
|
+
if (built === void 0) return;
|
|
46957
|
+
request = built;
|
|
46958
|
+
}
|
|
46959
|
+
try {
|
|
46960
|
+
await this.dynamoDBClient.send(new UpdateTableCommand(request));
|
|
46961
|
+
await this.waitForGlobalTableSettled(tableName, logicalId, maskSecrets);
|
|
46962
|
+
} catch (keyError) {
|
|
46963
|
+
if (templateChanged || isInterruptedWaitError(keyError)) throw keyError;
|
|
46964
|
+
this.logger.debug(maskSecrets(`Could not bring the KMS keys of ${tableName} to the declared ones: ` + describeAwsFailure(keyError).detail));
|
|
46965
|
+
this.logger.warn(maskSecrets(`${tableName} does not hold its declared KMS keys, and setting them failed (${describeAwsFailure(keyError).summary}). The next deploy that updates this table tries again.`));
|
|
46966
|
+
}
|
|
46967
|
+
}
|
|
46968
|
+
async readLiveKeys(tableName, currentRegion) {
|
|
46969
|
+
const described = await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName }));
|
|
46970
|
+
const keys = /* @__PURE__ */ new Map([[currentRegion, described.Table?.SSEDescription?.KMSMasterKeyArn]]);
|
|
46971
|
+
for (const r of described.Table?.Replicas ?? []) if (r.RegionName !== void 0 && r.RegionName !== currentRegion) keys.set(r.RegionName, r.KMSMasterKeyId);
|
|
46972
|
+
return keys;
|
|
46973
|
+
}
|
|
46974
|
+
replicaKeysRequest(tableName, logicalId, liveKeys, declared, templateChanged, maskSecrets) {
|
|
46975
|
+
const drifted = [...liveKeys].some(([region, live]) => {
|
|
46976
|
+
const key = declared.get(region);
|
|
46977
|
+
return isKmsKeyArn(key) && key !== live;
|
|
46978
|
+
});
|
|
46979
|
+
if (!templateChanged && !drifted) {
|
|
46980
|
+
this.logger.debug(maskSecrets(`Every region of ${tableName} already holds its declared KMS key`));
|
|
46981
|
+
return;
|
|
46982
|
+
}
|
|
46983
|
+
const entries = [...liveKeys].map(([region, live]) => ({ Update: {
|
|
46984
|
+
RegionName: region,
|
|
46985
|
+
KMSMasterKeyId: declared.get(region) ?? live
|
|
46986
|
+
} }));
|
|
46987
|
+
const keyless = entries.filter((e) => e.Update.KMSMasterKeyId === void 0);
|
|
46988
|
+
if (keyless.length > 0) {
|
|
46989
|
+
const text = `The KMS keys of ${tableName} were not changed: DynamoDB takes every region's key in one call, and no key is declared or reported for ${keyless.map((e) => e.Update.RegionName).join(", ")}`;
|
|
46990
|
+
if (templateChanged) throw new ProvisioningError(maskSecrets(`${text}. Declare a key for every replica`), "AWS::DynamoDB::GlobalTable", logicalId, tableName);
|
|
46991
|
+
this.logger.warn(maskSecrets(`${text}.`));
|
|
46992
|
+
return;
|
|
46993
|
+
}
|
|
46994
|
+
this.logger.debug(maskSecrets(`Setting the KMS key of every region of ${tableName} in one ReplicaUpdates call`));
|
|
46995
|
+
return {
|
|
46996
|
+
TableName: tableName,
|
|
46997
|
+
ReplicaUpdates: entries
|
|
46998
|
+
};
|
|
46999
|
+
}
|
|
47000
|
+
async sendLocalSettingUpdate(input, fromTemplate, what, tableName, logicalId, maskSecrets) {
|
|
47001
|
+
try {
|
|
47002
|
+
await this.dynamoDBClient.send(new UpdateTableCommand(input));
|
|
47003
|
+
await this.waitForGlobalTableSettled(tableName, logicalId, maskSecrets);
|
|
47004
|
+
} catch (error) {
|
|
47005
|
+
if (fromTemplate || isInterruptedWaitError(error)) throw error;
|
|
47006
|
+
this.logger.debug(maskSecrets(`Could not bring the ${what} of ${tableName} to the declared one: ` + describeAwsFailure(error).detail));
|
|
47007
|
+
this.logger.warn(maskSecrets(`${tableName} does not hold its declared ${what}, and setting it failed (${describeAwsFailure(error).summary}). The next deploy that updates this table tries again.`));
|
|
47008
|
+
}
|
|
47009
|
+
}
|
|
47010
|
+
async waitForGlobalTableSettled(tableName, logicalId, maskSecrets, opts = {}) {
|
|
47011
|
+
const wait = beginDeleteWait(opts.maxPolls ?? 600, opts.budget);
|
|
47012
|
+
const watch = startInterruptWatch(maskSecrets(`DynamoDB global table ${tableName} settling after an update`));
|
|
47013
|
+
try {
|
|
47014
|
+
while (wait.nextPoll()) {
|
|
47015
|
+
if (opts.interruptible !== false && watch.isInterrupted()) throw watch.onInterrupted();
|
|
47016
|
+
const table = (await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName }))).Table;
|
|
47017
|
+
if (table?.TableStatus === "ACTIVE" && table.SSEDescription?.Status !== "UPDATING" && (table.Replicas ?? []).every((r) => r.ReplicaStatus === "ACTIVE")) {
|
|
47018
|
+
if (opts.region === void 0) return;
|
|
47019
|
+
if ((await this.getRegionalClient(opts.region).send(new DescribeTableCommand({ TableName: tableName }))).Table?.TableStatus === "ACTIVE") return;
|
|
47020
|
+
}
|
|
47021
|
+
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
47022
|
+
}
|
|
47023
|
+
} finally {
|
|
47024
|
+
watch.dispose();
|
|
47025
|
+
}
|
|
47026
|
+
throw new ProvisioningError(maskSecrets(`Table ${tableName} and its replicas did not settle within ${wait.pollsRun} polls${wait.note()}`), "AWS::DynamoDB::GlobalTable", logicalId, tableName);
|
|
47027
|
+
}
|
|
47028
|
+
async dropReplicaForDelete(tableName, region, removeProtection, logicalId, budget, maskSecrets) {
|
|
47029
|
+
let flippedOff = false;
|
|
47030
|
+
if (removeProtection) {
|
|
47031
|
+
try {
|
|
47032
|
+
if ((await this.getRegionalClient(region).send(new DescribeTableCommand({ TableName: tableName }))).Table?.DeletionProtectionEnabled === true) {
|
|
47033
|
+
await this.sendReplicaDeletionProtection(tableName, region, false, logicalId, maskSecrets, { budget });
|
|
47034
|
+
flippedOff = true;
|
|
47035
|
+
}
|
|
47036
|
+
} catch (flipError) {
|
|
47037
|
+
if (isInterruptedWaitError(flipError)) throw flipError;
|
|
47038
|
+
this.logger.debug(maskSecrets(`Could not disable DeletionProtectionEnabled on the ${region} replica of ${tableName}: ` + describeAwsFailure(flipError).detail));
|
|
47039
|
+
}
|
|
47040
|
+
if (flippedOff) try {
|
|
47041
|
+
await this.waitForReplicaProtectionSettled(tableName, region, false, logicalId, maskSecrets, budget);
|
|
47042
|
+
} catch (waitError) {
|
|
47043
|
+
await this.restoreReplicaDeletionProtection(tableName, region, logicalId, maskSecrets, isInterruptedWaitError(waitError) ? "the destroy was interrupted" : "its deletion-protection change did not settle");
|
|
47044
|
+
throw waitError;
|
|
47045
|
+
}
|
|
47046
|
+
}
|
|
47047
|
+
try {
|
|
47048
|
+
await this.dynamoDBClient.send(new UpdateTableCommand({
|
|
47049
|
+
TableName: tableName,
|
|
47050
|
+
ReplicaUpdates: [{ Delete: { RegionName: region } }]
|
|
47051
|
+
}));
|
|
47052
|
+
} catch (dropError) {
|
|
47053
|
+
if (flippedOff) await this.restoreReplicaDeletionProtection(tableName, region, logicalId, maskSecrets, "it could not be dropped");
|
|
47054
|
+
throw dropError;
|
|
47055
|
+
}
|
|
47056
|
+
}
|
|
47057
|
+
async restoreReplicaDeletionProtection(tableName, region, logicalId, maskSecrets, reason) {
|
|
47058
|
+
for (let attempt = 1;; attempt++) try {
|
|
47059
|
+
if (attempt === 1) await this.waitForGlobalTableSettled(tableName, logicalId, maskSecrets, {
|
|
47060
|
+
region,
|
|
47061
|
+
maxPolls: 60,
|
|
47062
|
+
interruptible: false
|
|
47063
|
+
}).catch(() => void 0);
|
|
47064
|
+
await this.writeReplicaDeletionProtection(tableName, region, true);
|
|
47065
|
+
return;
|
|
47066
|
+
} catch (restoreError) {
|
|
47067
|
+
if (attempt === 1 && restoreError instanceof Error && restoreError.name === "ThrottlingException") {
|
|
47068
|
+
await new Promise((resolve) => setTimeout(resolve, DELETION_PROTECTION_REFLIP_MS));
|
|
47069
|
+
continue;
|
|
47070
|
+
}
|
|
47071
|
+
try {
|
|
47072
|
+
this.logger.debug(maskSecrets(`Could not restore DeletionProtectionEnabled on the ${region} replica of ${tableName}: ${describeAwsFailure(restoreError).detail}`));
|
|
47073
|
+
const head = maskSecrets(`The ${region} replica of ${tableName} was not deleted (${reason}), and its deletion protection, which this destroy turned off, could not be turned back on (${describeAwsFailure(restoreError).summary}). It is LEFT UNPROTECTED. To restore it, run: `);
|
|
47074
|
+
const command = pasteableAwsCommand(maskSecrets)`aws dynamodb update-table --table-name ${tableName} --deletion-protection-enabled --region ${region}`.render();
|
|
47075
|
+
this.logger.warn(safeMsg`${head}${command}`);
|
|
47076
|
+
} catch {}
|
|
47077
|
+
return;
|
|
47078
|
+
}
|
|
46742
47079
|
}
|
|
46743
47080
|
async waitForRegionalCopyReleased(tableName, region, maskSecrets) {
|
|
46744
47081
|
const client = this.getRegionalClient(region);
|
|
@@ -46782,6 +47119,18 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
46782
47119
|
} catch {
|
|
46783
47120
|
guardRegion = "";
|
|
46784
47121
|
}
|
|
47122
|
+
const protectedReplica = guardRegion === "" || extractLocalDeletionProtection(previousProperties, guardRegion) === true ? void 0 : (Array.isArray(previousProperties["Replicas"]) ? previousProperties["Replicas"] : []).map(asRecord).find((r) => typeof r?.["Region"] === "string" && r["Region"] !== guardRegion && coerceCfnBoolean(r["DeletionProtectionEnabled"]) === true)?.["Region"];
|
|
47123
|
+
if (typeof protectedReplica === "string") return protectedReplacementAdvice({
|
|
47124
|
+
evidence: `cdkd's recorded properties for this table carry DeletionProtectionEnabled: true for the ${protectedReplica} replica`,
|
|
47125
|
+
replaceFlags,
|
|
47126
|
+
disable: {
|
|
47127
|
+
before: "aws dynamodb update-table --table-name",
|
|
47128
|
+
identifier: physicalId,
|
|
47129
|
+
after: "--no-deletion-protection-enabled",
|
|
47130
|
+
caveat: "Run it with --region set to that replica's region.",
|
|
47131
|
+
maskSecrets
|
|
47132
|
+
}
|
|
47133
|
+
});
|
|
46785
47134
|
return extractLocalDeletionProtection(previousProperties, guardRegion) === true ? protectedReplacementAdvice({
|
|
46786
47135
|
evidence: "cdkd's recorded properties for this table carry DeletionProtectionEnabled: true for the deploy region",
|
|
46787
47136
|
replaceFlags,
|
|
@@ -46819,8 +47168,12 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
46819
47168
|
refuse(describeAwsFailure(error).detail, error);
|
|
46820
47169
|
}
|
|
46821
47170
|
if (refusal === void 0 && !deepEqual(properties["StreamSpecification"], previousProperties["StreamSpecification"])) refusal = configStringRefusal(properties["StreamSpecification"], "StreamViewType", "NEW_AND_OLD_IMAGES", "AWS::DynamoDB::GlobalTable StreamSpecification");
|
|
47171
|
+
if (refusal === void 0 && (changed("SSESpecification") || !deepEqual(replicaKeyBlocks(properties), replicaKeyBlocks(previousProperties)))) refusal = configBooleanRefusal(properties["SSESpecification"], "SSEEnabled", "AWS::DynamoDB::GlobalTable SSESpecification");
|
|
46822
47172
|
if (refusal === void 0 && changed("GlobalSecondaryIndexes")) refusal = globalSecondaryIndexesShapeDetail(properties["GlobalSecondaryIndexes"], maskSecrets);
|
|
46823
47173
|
if (refusal !== void 0) refuse(refusal);
|
|
47174
|
+
} else {
|
|
47175
|
+
const sseEnabledRefusal = configBooleanRefusal(properties["SSESpecification"], "SSEEnabled", "AWS::DynamoDB::GlobalTable SSESpecification");
|
|
47176
|
+
if (sseEnabledRefusal !== void 0) warn(`${sseEnabledRefusal}. Encryption is treated as enabled, the block's default.`);
|
|
46824
47177
|
}
|
|
46825
47178
|
const currentRegion = await this.dynamoDBClient.config.region() ?? "";
|
|
46826
47179
|
let effectiveProperties;
|
|
@@ -46884,28 +47237,38 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
46884
47237
|
toSdkReplicaThroughputOverrides(replica, newBilling, diagnostics, {}, maskSecrets);
|
|
46885
47238
|
}
|
|
46886
47239
|
this.reportThroughputDiagnostics(diagnostics, logicalId, physicalId, maskSecrets);
|
|
47240
|
+
let deferredSseUpdate;
|
|
47241
|
+
let deferredSseFromTemplate = false;
|
|
47242
|
+
let keylessSseFromTemplate = false;
|
|
46887
47243
|
const newDpe = extractLocalDeletionProtection(properties, currentRegion);
|
|
46888
47244
|
const oldDpe = extractLocalDeletionProtection(previousProperties, currentRegion);
|
|
46889
47245
|
const awsDpe = describeResp.Table?.DeletionProtectionEnabled;
|
|
46890
47246
|
const flatUpdate = { TableName: physicalId };
|
|
46891
47247
|
let flatChanged = false;
|
|
47248
|
+
let tableClassUpdate;
|
|
47249
|
+
let sseUpdate;
|
|
47250
|
+
let sseFromTemplate = false;
|
|
47251
|
+
let tableClassFromTemplate = false;
|
|
46892
47252
|
if (newDpe !== oldDpe || newDpe !== void 0 && typeof awsDpe === "boolean" && Boolean(newDpe) !== awsDpe) {
|
|
46893
47253
|
if ((oldDpe === true || awsDpe === true) && Boolean(newDpe ?? false) === false && !(newDpe !== void 0)) warn(`Auto-disabling DeletionProtectionEnabled on ${physicalId}: the CDK code does not set 'deletionProtection: true' but AWS has it enabled. AWS will accept DeleteTable on this resource after this deploy. If you meant to keep protection on, set 'deletionProtection: true' in your CDK code; if you meant to disable it explicitly, set 'deletionProtection: false' to silence this warning.`);
|
|
46894
47254
|
flatUpdate.DeletionProtectionEnabled = Boolean(newDpe ?? false);
|
|
46895
47255
|
flatChanged = true;
|
|
46896
47256
|
}
|
|
46897
|
-
|
|
46898
|
-
|
|
46899
|
-
|
|
46900
|
-
|
|
46901
|
-
|
|
46902
|
-
|
|
46903
|
-
|
|
46904
|
-
|
|
46905
|
-
|
|
46906
|
-
|
|
46907
|
-
|
|
46908
|
-
}
|
|
47257
|
+
const tableClassChange = tableClassToSend(extractLocalTableClass(previousProperties, currentRegion), extractLocalTableClass(properties, currentRegion));
|
|
47258
|
+
const declaredTableClass = extractLocalTableClass(properties, currentRegion);
|
|
47259
|
+
const liveTableClass = describeResp.Table?.TableClassSummary?.TableClass ?? "STANDARD";
|
|
47260
|
+
if (tableClassChange !== void 0) {
|
|
47261
|
+
tableClassUpdate = tableClassChange;
|
|
47262
|
+
tableClassFromTemplate = true;
|
|
47263
|
+
} else if (declaredTableClass !== void 0 && declaredTableClass !== liveTableClass) tableClassUpdate = declaredTableClass;
|
|
47264
|
+
const newLocalKmsKey = readReplicaKmsMasterKeyId(localReplicaEntry(properties, currentRegion));
|
|
47265
|
+
if (properties["SSESpecification"] !== void 0 && (!deepEqual(properties["SSESpecification"], previousProperties["SSESpecification"]) || newLocalKmsKey !== readReplicaKmsMasterKeyId(localReplicaEntry(previousProperties, currentRegion)))) {
|
|
47266
|
+
sseUpdate = toSdkTableSseSpecification(properties["SSESpecification"], newLocalKmsKey);
|
|
47267
|
+
sseFromTemplate = true;
|
|
47268
|
+
} else if (properties["SSESpecification"] === void 0 && previousProperties["SSESpecification"] !== void 0 && toSdkTableSseSpecification(previousProperties["SSESpecification"], void 0).Enabled) {
|
|
47269
|
+
sseUpdate = { Enabled: false };
|
|
47270
|
+
sseFromTemplate = true;
|
|
47271
|
+
} else if (isKmsKeyArn(newLocalKmsKey) && properties["SSESpecification"] !== void 0 && configBooleanRefusal(properties["SSESpecification"], "SSEEnabled", "AWS::DynamoDB::GlobalTable SSESpecification") === void 0 && toSdkTableSseSpecification(properties["SSESpecification"], void 0).Enabled && describeResp.Table?.SSEDescription?.KMSMasterKeyArn !== newLocalKmsKey) sseUpdate = toSdkTableSseSpecification(properties["SSESpecification"], newLocalKmsKey);
|
|
46909
47272
|
if (properties["StreamSpecification"] !== void 0 && !deepEqual(properties["StreamSpecification"], previousProperties["StreamSpecification"])) {
|
|
46910
47273
|
let streamSpecUnusable = false;
|
|
46911
47274
|
const streamViewType = readConfigString(properties["StreamSpecification"], "StreamViewType", "NEW_AND_OLD_IMAGES", "AWS::DynamoDB::GlobalTable StreamSpecification", { onUnusable: (message) => {
|
|
@@ -46969,6 +47332,21 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
46969
47332
|
await this.dynamoDBClient.send(new UpdateTableCommand(flatUpdate));
|
|
46970
47333
|
await this.waitForTableActiveAfterUpdate(physicalId, logicalId, void 0, void 0, maskSecrets);
|
|
46971
47334
|
}
|
|
47335
|
+
if (tableClassUpdate !== void 0) await this.sendLocalSettingUpdate({
|
|
47336
|
+
TableName: physicalId,
|
|
47337
|
+
TableClass: tableClassUpdate
|
|
47338
|
+
}, tableClassFromTemplate, "TableClass", physicalId, logicalId, maskSecrets);
|
|
47339
|
+
const liveHasCrossRegionReplica = (describeResp.Table?.Replicas ?? []).some((r) => r.RegionName !== void 0 && r.RegionName !== currentRegion);
|
|
47340
|
+
if (sseUpdate?.KMSMasterKeyId !== void 0 && liveHasCrossRegionReplica) {
|
|
47341
|
+
deferredSseUpdate = sseUpdate;
|
|
47342
|
+
deferredSseFromTemplate = sseFromTemplate;
|
|
47343
|
+
} else if (sseUpdate !== void 0) {
|
|
47344
|
+
await this.sendLocalSettingUpdate({
|
|
47345
|
+
TableName: physicalId,
|
|
47346
|
+
SSESpecification: sseUpdate
|
|
47347
|
+
}, sseFromTemplate, "encryption", physicalId, logicalId, maskSecrets);
|
|
47348
|
+
keylessSseFromTemplate = sseFromTemplate && sseUpdate.KMSMasterKeyId === void 0 && liveHasCrossRegionReplica;
|
|
47349
|
+
}
|
|
46972
47350
|
const gsiHandledByBillingFlip = /* @__PURE__ */ new Set();
|
|
46973
47351
|
if (oldBilling !== newBilling) {
|
|
46974
47352
|
const billingUpdate = {
|
|
@@ -47081,7 +47459,6 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
47081
47459
|
}));
|
|
47082
47460
|
}
|
|
47083
47461
|
const updateAction = { RegionName: region };
|
|
47084
|
-
if (replica["KMSMasterKeyId"] !== void 0) updateAction.KMSMasterKeyId = replica["KMSMasterKeyId"];
|
|
47085
47462
|
const replicaIndexes = toSdkReplicaGlobalSecondaryIndexes(replica["GlobalSecondaryIndexes"], newBilling, void 0, maskSecrets);
|
|
47086
47463
|
if (replicaIndexes) updateAction.GlobalSecondaryIndexes = replicaIndexes;
|
|
47087
47464
|
const replicaOverrides = toSdkReplicaThroughputOverrides(replica, newBilling, void 0, {}, maskSecrets);
|
|
@@ -47094,8 +47471,9 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
47094
47471
|
if (oldReplicaOverrides.ProvisionedThroughputOverride && !replicaOverrides.ProvisionedThroughputOverride) droppedOverrides.push("ReadProvisionedThroughputSettings");
|
|
47095
47472
|
if (droppedOverrides.length > 0) warn(`Cross-region replica ${region} of ${physicalId}: the template no longer declares ${droppedOverrides.map((o) => maskSecrets(o)).join(" / ")}, but DynamoDB offers no way to CLEAR a replica-level throughput override — a -1 sentinel is stored literally, and an empty override block wedges the table in UPDATING. The previous override is STILL IN EFFECT on AWS. Set an explicit value, or remove and re-add the replica, to change it.`);
|
|
47096
47473
|
}
|
|
47097
|
-
|
|
47098
|
-
if (
|
|
47474
|
+
const replicaTableClassChange = tableClassToSend(readReplicaTableClass(oldReplica), readReplicaTableClass(replica));
|
|
47475
|
+
if (replicaTableClassChange !== void 0) updateAction.TableClassOverride = replicaTableClassChange;
|
|
47476
|
+
if (!(updateAction.GlobalSecondaryIndexes !== void 0 || updateAction.TableClassOverride !== void 0 || updateAction.ProvisionedThroughputOverride !== void 0 || updateAction.OnDemandThroughputOverride !== void 0)) {
|
|
47099
47477
|
debug(`Cross-region replica ${region} of ${maskSecrets(physicalId)}: only Tags-style changes detected; UpdateReplica skipped (AWS rejects empty Update actions). Tags propagation handled above via per-region client.`);
|
|
47100
47478
|
continue;
|
|
47101
47479
|
}
|
|
@@ -47105,6 +47483,10 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
47105
47483
|
}));
|
|
47106
47484
|
await this.waitForReplicaActive(physicalId, region, logicalId, void 0, maskSecrets);
|
|
47107
47485
|
}
|
|
47486
|
+
const addedReplicaRegions = new Set(replicaDiff.added.map((r) => r["Region"]));
|
|
47487
|
+
await this.convergeReplicaDeletionProtection(physicalId, logicalId, currentRegion, previousProperties, properties, addedReplicaRegions, warn, maskSecrets);
|
|
47488
|
+
await this.convergeReplicaSettings(physicalId, logicalId, currentRegion, properties, addedReplicaRegions, maskSecrets);
|
|
47489
|
+
await this.applyReplicaKeys(physicalId, logicalId, currentRegion, properties, previousProperties, addedReplicaRegions, deferredSseUpdate, deferredSseFromTemplate, keylessSseFromTemplate, maskSecrets);
|
|
47108
47490
|
const previousTranslatedIndexes = toSdkGlobalSecondaryIndexes(previousProperties, currentRegion, oldBilling, "min", void 0, onUnusablePreviousGsiBlock, maskSecrets);
|
|
47109
47491
|
const previousSdkIndexes = previousGsiUnusable ? buildLiveRecoveryGsiBaseline(desiredSdkIndexes, describeResp.Table?.GlobalSecondaryIndexes, {
|
|
47110
47492
|
carryLiveValues: oldBilling === newBilling && liveBillingMode === newBilling,
|
|
@@ -47579,10 +47961,7 @@ var DynamoDBGlobalTableProvider = class {
|
|
|
47579
47961
|
try {
|
|
47580
47962
|
await this.applyAutoScalingDiff(physicalId, "dynamodb:table:ReadCapacityUnits", {}, void 0, this.getRegionalAutoScalingClient(region), void 0, budget, void 0, progress);
|
|
47581
47963
|
for (const indexName of tableIndexNames) await this.applyAutoScalingDiff(physicalId, "dynamodb:index:ReadCapacityUnits", {}, void 0, this.getRegionalAutoScalingClient(region), indexName, budget, void 0, progress);
|
|
47582
|
-
await this.
|
|
47583
|
-
TableName: physicalId,
|
|
47584
|
-
ReplicaUpdates: [{ Delete: { RegionName: region } }]
|
|
47585
|
-
}));
|
|
47964
|
+
await this.dropReplicaForDelete(physicalId, region, context?.removeProtection === true, logicalId, budget, deleteMask);
|
|
47586
47965
|
progress.stripped = true;
|
|
47587
47966
|
await this.waitForReplicaGone(physicalId, region, logicalId, REPLICA_GONE_WAIT_ATTEMPTS, budget, context?.maskSecrets);
|
|
47588
47967
|
} catch (replicaErr) {
|
|
@@ -48100,11 +48479,57 @@ function localReplicaEntry(props, region) {
|
|
|
48100
48479
|
return raw.find((r) => r?.["Region"] === region);
|
|
48101
48480
|
}
|
|
48102
48481
|
function extractLocalDeletionProtection(props, region) {
|
|
48103
|
-
const
|
|
48104
|
-
|
|
48482
|
+
const local = localReplicaEntry(props, region);
|
|
48483
|
+
const perReplica = coerceCfnBoolean(local?.["DeletionProtectionEnabled"]);
|
|
48484
|
+
if (perReplica !== void 0) return perReplica;
|
|
48105
48485
|
const topLevel = props["DeletionProtectionEnabled"];
|
|
48106
48486
|
return typeof topLevel === "boolean" ? topLevel : void 0;
|
|
48107
48487
|
}
|
|
48488
|
+
function extractAnyDeletionProtection(props, region) {
|
|
48489
|
+
if ((Array.isArray(props["Replicas"]) ? props["Replicas"] : []).some((r) => coerceCfnBoolean(asRecord(r)?.["DeletionProtectionEnabled"]) === true)) return true;
|
|
48490
|
+
return extractLocalDeletionProtection(props, region);
|
|
48491
|
+
}
|
|
48492
|
+
function readReplicaKmsMasterKeyId(replica) {
|
|
48493
|
+
const key = asRecord(asRecord(replica)?.["SSESpecification"])?.["KMSMasterKeyId"];
|
|
48494
|
+
return typeof key === "string" && key !== "" ? key : void 0;
|
|
48495
|
+
}
|
|
48496
|
+
function readReplicaTableClass(replica) {
|
|
48497
|
+
const tableClass = asRecord(replica)?.["TableClass"];
|
|
48498
|
+
return typeof tableClass === "string" && tableClass !== "" ? tableClass : void 0;
|
|
48499
|
+
}
|
|
48500
|
+
const UNUSABLE = Symbol("unusable");
|
|
48501
|
+
function readReplicaDeletionProtection(replica, region, warn) {
|
|
48502
|
+
const refusal = configBooleanRefusal(replica, "DeletionProtectionEnabled", `AWS::DynamoDB::GlobalTable Replicas[${region}]`);
|
|
48503
|
+
if (refusal !== void 0) {
|
|
48504
|
+
warn?.(`${refusal}. The ${region} replica's deletion protection is left as it is.`);
|
|
48505
|
+
return UNUSABLE;
|
|
48506
|
+
}
|
|
48507
|
+
return coerceCfnBoolean(replica?.["DeletionProtectionEnabled"]);
|
|
48508
|
+
}
|
|
48509
|
+
function replicaKeyBlocks(props) {
|
|
48510
|
+
return (Array.isArray(props["Replicas"]) ? props["Replicas"] : []).map((r) => [asRecord(r)?.["Region"], asRecord(r)?.["SSESpecification"]]);
|
|
48511
|
+
}
|
|
48512
|
+
function isKmsKeyArn(key) {
|
|
48513
|
+
return key !== void 0 && /^arn:aws[a-z-]*:kms:[^:]+:\d+:key\//.test(key);
|
|
48514
|
+
}
|
|
48515
|
+
function tableClassToSend(previous, desired) {
|
|
48516
|
+
if (desired !== void 0) return desired !== previous ? desired : void 0;
|
|
48517
|
+
return previous !== void 0 && previous !== "STANDARD" ? "STANDARD" : void 0;
|
|
48518
|
+
}
|
|
48519
|
+
function toSdkTableSseSpecification(block, kmsMasterKeyId) {
|
|
48520
|
+
const sse = asRecord(block) ?? {};
|
|
48521
|
+
return {
|
|
48522
|
+
Enabled: coerceCfnBoolean(sse["SSEEnabled"]) ?? true,
|
|
48523
|
+
...sse["SSEType"] !== void 0 && sse["SSEType"] !== "" && { SSEType: sse["SSEType"] },
|
|
48524
|
+
...kmsMasterKeyId !== void 0 && { KMSMasterKeyId: kmsMasterKeyId }
|
|
48525
|
+
};
|
|
48526
|
+
}
|
|
48527
|
+
function extractLocalTableClass(props, region) {
|
|
48528
|
+
const perReplica = readReplicaTableClass(localReplicaEntry(props, region));
|
|
48529
|
+
if (perReplica !== void 0) return perReplica;
|
|
48530
|
+
const topLevel = props["TableClass"];
|
|
48531
|
+
return typeof topLevel === "string" && topLevel !== "" ? topLevel : void 0;
|
|
48532
|
+
}
|
|
48108
48533
|
function derivePerCallProvisionedThroughput(properties, region, source = "min", diagnostics, maskSecrets = (text) => text) {
|
|
48109
48534
|
const rawReplicas = properties["Replicas"];
|
|
48110
48535
|
const rawRead = (Array.isArray(rawReplicas) ? rawReplicas : []).find((r) => asRecord(r)?.["Region"] === region)?.["ReadProvisionedThroughputSettings"];
|
|
@@ -48182,6 +48607,9 @@ function collectAutoScalingTargets(properties, localRegion) {
|
|
|
48182
48607
|
}
|
|
48183
48608
|
const REPLICA_COPY_RELEASE_POLLS = 180;
|
|
48184
48609
|
const REPLICA_COPY_RELEASE_POLL_MS = 5e3;
|
|
48610
|
+
const DELETION_PROTECTION_REFLIP_MS = 16e3;
|
|
48611
|
+
const REPLICA_PROTECTION_SETTLE_POLLS = 60;
|
|
48612
|
+
const REPLICA_PROTECTION_SETTLE_POLL_MS = 5e3;
|
|
48185
48613
|
const REPLICA_COPY_RELEASE_ATTEMPTS = 3;
|
|
48186
48614
|
function isReplicaCopyExistsRefusal(error) {
|
|
48187
48615
|
return error instanceof Error && /one or more replicas already existed as tables/i.test(error.message);
|
|
@@ -48837,7 +49265,7 @@ const PROTECTION_PROPERTY_BY_TYPE = {
|
|
|
48837
49265
|
"AWS::Neptune::DBCluster": "DeletionProtection",
|
|
48838
49266
|
"AWS::Neptune::DBInstance": "DeletionProtection",
|
|
48839
49267
|
"AWS::DynamoDB::Table": "DeletionProtectionEnabled",
|
|
48840
|
-
"AWS::DynamoDB::GlobalTable": (bag, region) =>
|
|
49268
|
+
"AWS::DynamoDB::GlobalTable": (bag, region) => extractAnyDeletionProtection(bag, region ?? ""),
|
|
48841
49269
|
"AWS::EC2::Instance": "DisableApiTermination",
|
|
48842
49270
|
"AWS::Cognito::UserPool": "DeletionProtection",
|
|
48843
49271
|
"AWS::AutoScaling::AutoScalingGroup": "DeletionProtection",
|
|
@@ -48886,7 +49314,7 @@ function isProtectionValueActive(resourceType, value) {
|
|
|
48886
49314
|
//#endregion
|
|
48887
49315
|
//#region src/provisioning/recorded-protection.ts
|
|
48888
49316
|
const READER_LABELS = {
|
|
48889
|
-
"AWS::DynamoDB::GlobalTable": "DeletionProtectionEnabled
|
|
49317
|
+
"AWS::DynamoDB::GlobalTable": "DeletionProtectionEnabled on the table or a replica",
|
|
48890
49318
|
"AWS::ElasticLoadBalancingV2::LoadBalancer": "LoadBalancerAttributes deletion_protection.enabled"
|
|
48891
49319
|
};
|
|
48892
49320
|
const REPLACEMENT_BLOCKING_VALUES = { "AWS::AutoScaling::AutoScalingGroup": /* @__PURE__ */ new Set(["prevent-all-deletion"]) };
|
|
@@ -52089,5 +52517,5 @@ function sameGenerationClaimsOf(record) {
|
|
|
52089
52517
|
}
|
|
52090
52518
|
|
|
52091
52519
|
//#endregion
|
|
52092
|
-
export { pendingRequestCount as $, malformedLocalResourceEntriesWarning as $a, hasReasonlessBaselineRefusal as $c, keepHeldTokenProvenance as $i, getLegacyStateBucketName as $l, destroyStackRecordsView as $n, NO_CC_HANDLERS_REASON as $o, markDeleteStarted as $r, literalSplitDelimitersOf as $s, seedsDeleteFirstGuard as $t, inheritedProvenanceForChildDiff as A, refStateLookupFromResource as Aa, recordNoEchoAttributeValues as Ac, deleteSkipReason as Ai, buildDockerImage as Al, isWholeDynamicReferenceValue as An, refuseMalformedResourceEntriesForOrphan as Ao, secretNamePrintingBags as Ar, TemplateParser as As, readRefactorMarkerOnce as At, hasPlainPrototype$1 as Au, conditionFingerprint as B, UNREADABLE_RESOURCES_MAP_ROW as Ba, CrossPrefixReadError as Bc, DiffCalculator as Bi, isMalformedEnvKey as Bl, findDestructiveChanges as Bn, repairMalformedOrphansForReadOnly as Bo, effectiveDeletionPolicy as Br, passedNoEchoParametersOf as Bs, replayFailedOperations as Bt, clearBucketRegionCache as Bu, hasCdkAutoDeleteTag as C, carriesFetchableDynamicReference as Ca, recordAttributeIdCopy as Cc, CloudControlProvider as Ci, getBootstrapMarkerKey as Cl, exportAliasCollisionScrubWarning as Cn, refuseMalformedOutputsForDestroy as Co, createReadOnlyAttributeHealerFactory as Cr, templateResourceTypes as Cs, sameJournaledOrphans as Ct, StageLoadError as Cu, IMPLICIT_DELETE_DEPENDENCIES as D, cfnRefValueFromPhysicalId as Da, provenPublicValue as Dc, UNSPECIFIED_SKIP_REASON as Di, validateAssetBucketName as Dl, carriedExportAliasExposure as Dn, refuseMalformedResourceEntriesForDestroy as Do, namingSecretsWithRecordedNoEcho as Dr, lambdaFunctionNameForMask as Ds, lookupEachName as Dt, utf8ByteLength as Du, markRefusedBeforeApplying as E, AWS_NO_VALUE as Ea, carriesSecretMask as Ec, RollbackInlinePolicyWriters as Ei, readBootstrapMarkerBody as El, secretSafeKeyDisplay as En, refuseMalformedResourceEntriesForDeploy as Eo, maskEventTextWithBoundBags as Er, canonicalLambdaFunctionName as Es, isAccessDeniedError as Et, parseFailureDebugDetail as Eu, findNestedTemplateTreeDefect as F, declaresNoEcho as Fa, isSingleDynamicReferenceToken as Fc, ec2InstanceProtectionSite as Fi, dockerSpawnEnvWithSensitive as Fl, bindingSkippedOutputs as Fn, refuseMalformedResourcesForDeploy as Fo, ATOMIC_FINAL_SNAPSHOT_TYPES as Fr, maskWholeValue as Fs, updateRefactorMarker as Ft, displayAssemblyPath as Fu, withResourceDeadline as G, hasReadableOutputs as Ga, isNotImplemented as Gc, s3BucketArn as Gi, runDockerForeground as Gl, rollbackOrphanIds as Gn, unpreviewableOrphanRecords as Go, ledgerForStack as Gr, liveMatchesUnresolvedTokenFrame as Gs, isJournaledOrphan as Gt, parentSuppliedValues as H, deployRefusesOrphanRowsReason as Ha, applyCrossPrefixScan as Hc, IntrinsicFunctionResolver as Hi, redactDockerArgvValues as Hl, findRefactorHints as Hn, repairMalformedResourceEntriesForReadOnly as Ho, refusesFinalSnapshot as Hr, readsNoEchoSource as Hs, removeProtectionTypeList as Ht, isAbsoluteAssetPath as I, JSON_LISTING_HOLE_VALUE as Ia, LockManager as Ic, isTerminationProtectionPropagationError as Ii, finchSecretArgvRefusal as Il, DEFAULT_RESOURCE_TIMEOUT_MS as In, refuseMalformedResourcesForDestroy as Io, PRE_DELETE_SNAPSHOT_TYPES as Ir, maskedLeafCoordinatesOf as Is, hasPendingMovesOut as It, renderAssemblyPathEscape as Iu, keptWholeReasonText as J, isReadableResourceEntry as Ja, splitImportedOps as Jc, s3BucketRegionalDomainName as Ji, AssetManifestLoader as Jl, looselyEqual as Jn, withheldAccountClause as Jo, acquireIdempotencyToken as Jr, recordReferenceProvenanceEntry as Js, planRollback as Jt, diffSecurity as K, hasReadableResources as Ka, stackInstanceIdOf as Kc, s3BucketDomainName as Ki, runDockerStreaming as Kl, withMovedTo as Kn, unreadableOrphanRecords as Ko, reserveStackCreateToken as Kr, markSameGenerationBag as Ks, isReplacementOrphan as Kt, listNestedTemplateRows as L, STATE_REGION_DIVERGED as La, isLockInfoExpired as Lc, observeThenDisableInstanceApiTermination as Li, formatDockerLoginError as Ll, DEFAULT_RESOURCE_WARN_AFTER_MS as Ln, refuseMalformedResourcesForExport as Lo, buildFinalSnapshotIdentifier as Lr, noEchoCoordinatesOf as Ls, pendingMovesOutOf as Lt, resolveAssemblyPath as Lu, findServiceTokenRefusals as M, withSharedDrainBudget as Ma, recordProvenPublicExpression as Mc, isWaitAbandonedError as Mi, describeDockerCapturedOutput as Ml, collectDeclaredOutputNames as Mn, refuseMalformedResourcePropertiesForDrift as Mo, secretNamedRecordNeedles as Mr, isMarkedCoordinate as Ms, refactorMarkerRefusalMessage as Mt, ownValue as Mu, serviceTokenBlockingReason as N, parameterInputsFor as Na, wholeStringLeavesOf as Nc, markWaitAbandoned as Ni, describeDockerExecFailure as Nl, collectPublishedOutputNames as Nn, refuseMalformedResourcePropertiesForExport as No, stateSecretNameNeedles as Nr, maskAtCoordinates as Ns, refuseRefactorMarker as Nt, absoluteAssemblyPathEscape as Nu, computeImplicitDeleteEdges as O, isStalePlaceholderArnAttribute as Oa, recordMaskOnlyValue as Oc, deleteIndeterminateGuards as Oi, validateContainerRepoName as Ol, exportNameNoEchoParameters as On, refuseMalformedResourceEntriesForImport as Oo, orphanRecordsPrintingBag as Or, sameLambdaFunctionAddress as Os, withApiLimit as Ot, defineOwnKey as Ou, childTemplateLoader as P, passedParameterClassesOf as Pa, WHOLE_DYNAMIC_REFERENCE_PATTERN as Pc, disableInstanceApiTermination as Pi, describeDockerFailure as Pl, isExportAliasCollision as Pn, refuseMalformedResourcePropertiesForOrphan as Po, storedSecretNameNeedles as Pr, maskReadbackAtCoordinates as Ps, sameMove as Pt, describeFileReadFailure as Pu, planOrphanAdoption as Q, malformedLocalOutputsWarning as Qa, hasReadableExportSet as Qc, refuseUnreadableCdkCrossAccountRefs as Qi, getDefaultStateBucketName as Ql, awaitInFlightSibling as Qn, withoutSilentDropProperties as Qo, isRefusedByName as Qr, hasMaskableValues as Qs, resolveReplacementOldType as Qt, renderNestedTemplateTreeDefect as R, STATE_RESOURCES_MALFORMED as Ra, S3StateBackend as Rc, reDisableInstanceApiTermination as Ri, getDockerCmd as Rl, maskingRetryLogger as Rn, refuseMalformedState as Ro, ccRoutedFinalSnapshotError as Rr, noEchoLeavesOf as Rs, pendingMovesRefusalMessage as Rt, injectAwsRegion as Ru, S3_AUTO_DELETE_OBJECTS_TAG as S, carriesDynamicReference as Sa, physicalNameCopiesOf as Sc, customResourceResponseExpirationWarning as Si, ensureAssetStorage as Sl, displayTextOrWithheld as Sn, refuseMalformedOutputs as So, noEchoParameterNamesOf as Sr, prefetchCreateOnlyPropertyPaths as Ss, makeForeignHolderScan as St, AssemblyReader as Su, getPriorAttempts as T, keepsSecretReferenceToken as Ta, splitGetAttStringForm as Tc, unchangedBehindSecretReference as Ti, parseBootstrapMarker as Tl, secretBearingStateKeyWarning as Tn, refuseMalformedResourceEntries as To, journaledOrphanPrintingBag as Tr, withRetry as Ts, chunks as Tt, describeJsonParseFailure as Tu, readRecordedConditionVerdicts as U, displayLogicalId as Ua, crossPrefixDeniedWarning as Uc, poisonRenderedSpellingsCollidingIn as Ui, redactedCause as Ul, hintSidesOf as Un, repairMalformedResourcePropertiesForReadOnly as Uo, unsupportedFinalSnapshotError as Ur, recordedNoEchoValuesOf as Us, recordAfterRollbackUpdate as Ut, conditionInputsFrom as V, accountArgs as Va, CrossPrefixScanCache as Vc, INTRINSIC_KEYS as Vi, partitionSensitiveEnv as Vl, formatDestructiveChange as Vn, repairMalformedOutputsForReadOnly as Vo, isFinalSnapshotError as Vr, readbackPathFor as Vs, replayRollback as Vt, resolveBucketRegion as Vu, enclosingDeadlineRemainingMs as W, hasReadableOrphans as Wa, isAccessDenied$1 as Wc, isSettledInstanceState as Wi, redactedDockerCause as Wl, movedToHint as Wn, repairMalformedResourcesForReadOnly as Wo, earliestDefined as Wr, valueAtCoordinate as Ws, demoteSupersededOrphans as Wt, makeCanonicalizePropertiesFn as X, malformedExportNamesWarning as Xa, describeRegionValueKind as Xc, resolveDynamicReferences as Xi, Synthesizer as Xl, parseMappingFile as Xn, findSilentDropProperties as Xo, DeploymentEventsStore as Xr, carryLogOnlyValues as Xs, recordUnderIdIsNotOwn as Xt, mergeNoChangeOutputs as Y, malformedDriftResourcePropertiesWarning as Ya, acceptedCreateOnlyDropsOf as Yc, s3BucketWebsiteUrl as Yi, getDockerImageBySourceHash as Yl, mappingPairs as Yn, findActionableSilentDrops as Yo, DeploymentEventsReader as Yr, snapshotPassProvenance as Ys, recheckFailedPlan as Yt, makeSiblingClaimReader as Z, malformedExportSourceWarning as Za, exportNamesCarriedFrom as Zc, producerLookupOver as Zi, synthesisStatusMessage as Zl, proposeRenames as Zn, unwrittenCreateOnlyReplacement as Zo, extractDeploymentEventError as Zr, createUnionSecretMasker as Zs, replacementNeverSwapped as Zt, deleteTableWithIndexBusyRetry as _, coerceParameterTypedValue as _a, spelledKeysOf as _c, isCustomResourceType as _i, loadPublishableAssetManifest as _l, computeParameterTaint as _n, refuseMalformedOrphanRecords as _o, supersededResourcesOf as _r, readConfigString as _s, dropFailedCommands as _t, decodeListingKey as _u, isProtectionValueActive as a, assertSendableRoleArn as aa, unionOfSecretBags as ac, tagMapAsList as ai, orphansCarriedFrom as al, isRedactedRecordedValue as an, malformedOrphansWarning as ao, gray as ar, isStatefulRecreateTargetSync as as, displacedPhysicalIdShown as at, resolveStateBucketWithDefault as au, waitForIndexesSettled as b, getAccountInfo as ba, recordNestedStackParameterExpressions as bc, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as bi, BOOTSTRAP_MARKER_PREFIX as bl, resourcesNamingDeclaredParameter as bn, refuseMalformedOrphansForDestroy as bo, noEchoComparisonForTemplate as br, requireConfigObject as bs, journaledOrphanLines as bt, canonicalizeRegion as bu, DynamoDBGlobalTableProvider as c, sendableAssumeRoleCommand as ca, maskSecretsInError as cc, stringifyIfAssigned as ci, PhaseClock as cl, updatePartialMessage as cn, malformedRenderedContainersWarning as co, yellow as cr, coerceWarmThroughput as cs, nestedChildStackName as ct, stateBucketExistenceConfirmed as cu, compensateRemovedDeletionProtection as d, callerEnvCredentials as da, withPhysicalNameCopies as dc, ccBrokenReason as di, AssetPublisher as dl, nameGenerationHighWaterOf as dn, malformedResourcesWarning as do, holdsSupersededResources as dr, toFiniteNumber as ds, revertedNestedRowIds as dt, CFN_TEMPLATE_BODY_LIMIT as du, outputReferenceProvenanceOf as ea, logOnlyValueCount as ec, DBPROXY_TAGS_WHAT as ei, hasUnverifiableParameterRefusal as el, orphanNeedsIdentity as en, malformedLocalResourcesWarning as eo, getStackRecords as er, hasNoCloudControlHandlers as es, resolvePendingCloudControlRequests as et, loadCdkJson as eu, deleteBudgetKey as f, envCredentialsAreAssumedRole as fa, withoutPhysicalNameCopies as fc, isCustomResource as fi, isSensitiveAttributeName as fl, nameScopeOf as fn, malformedScrubResourceEntriesRefusalMessage as fo, isSupersededResourceRecord as fr, coerceCfnBoolean as fs, withNestedRevertRun as ft, CFN_TEMPLATE_URL_LIMIT as fu, INDEX_SETTLE_POLL_INTERVAL_MS as g, regionLessSecretName as ga, pathCrossesDottedKey as gc, readsNoEchoDeleteValues as gi, createAssetRedirectResolver as gl, withNameGenerationReached as gn, refuseMalformedNestedChildOutputs as go, supersededHolderOf as gr, configStringRefusal as gs, deleteJournaledOrphans as gt, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as gu, DELETE_INDEX_WAIT_PROCEED_NOTE as h, producerRegionsFromState as ha, isUncertifiedBaselineMaskPosition as hc, TemplateNoEchoReresolver as hi, buildAssetRedirectMap as hl, retiredNameGenerationsLeaving as hn, refuseDivergentRecordRegionForDestroy as ho, supersededHeldByOtherTypeWarning as hr, configIntegerRefusal as hs, withNestedStackContext as ht, uploadCfnTemplate as hu, PROTECTION_PROPERTY_BY_TYPE as i, assertFlagRoleArn as ia, shareLogOnlyValues as ic, refuseMalformedDesiredTags as ii, orphansAfterRollback as il, REDACTED_DELETE_ADDRESS_SKIP_REASON as in, malformedOrphansRefusalMessage as io, cyan as ir, isStatefulRecreateTargetForReplace as is, displacedOpClause as it, resolveSkipPrefix as iu, deferredServiceTokenWarning as j, parseWebACLArn as ja, recordNoEchoParameterFreshValue as jc, withIndeterminateGuard as ji, resolveDockerContextDirectory as jl, noEchoParameterValueSeed as jn, refuseMalformedResourcePropertiesForDestroy as jo, secretNamedAttributeNamesOf as jr, canonicalCoordinates as js, refactorMarkerMovesOf as jt, nullPrototypeRecord as ju, crossStackOutputProvenanceSource as k, lacksRecordedTableArn as ka, recordMaskOnlyValuesIn as kc, deleteLeftInPlace as ki, buildDenyExternalAccessPolicy as kl, exportNameSecretExposure as kn, refuseMalformedResourceEntriesForImportSave as ko, secretNamePrintingBag as kr, DagBuilder as ks, readRefactorMarker as kt, hasOwnKey as ku, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as l, AWS_CREDENTIAL_ENV_KEYS as la, maskSecretsInText as lc, CC_BROKEN_REASON as li, renderPhaseTimings as ll, updatePartialReason as ln, malformedResourceEntriesWarning as lo, addSuperseded as lr, isWarmThroughputDecrease as ls, recordDisplacedSkips as lt, warnDeprecatedNoPrefixCliFlag as lu, resolveDynamoDbDeleteBudgetMs as m, classifyReplaySecretRegion as ma, dynamicReferenceTokens as mc, waitForLambdaFunctionActive as mi, WorkGraph as ml, retiredNameGenerationsAfter as mn, previewableOrphanRecords as mo, supersededAfterRollback as mr, configBooleanRefusal as ms, getCurrentNestedStackContext as mt, findLargeInlineResources as mu, recordedProtectionEvidence as n, recordedReferenceRegions as na, recordLogOnlyParameterValue as nc, planTagDiff as ni, importableOutputs as nl, getCurrentProducerRegions as nn, malformedOrphanRecordsWarning as no, replacedDeleteFailureVerdict as nr, shownType as ns, recordRetainedForReadoption as nt, resolveAutoAssetStorage as nu, perType as o, explicitRoleArnOrThrow as oa, createSecretMasker as oc, tagPlanWarning as oi, shouldRetainResource as ol, redactedDeleteAddressFields as on, malformedOutputsRefusalMessage as oo, green as or, renderStatefulReason as os, dropSettledNestedJournals as ot, resolveStateBucketWithDefaultAndSource as ou, resolveDynamoDbDeleteBudgetClock as p, classifyRecordedSecretRegion as pa, DYNAMIC_REFERENCE_TOKEN_SCAN as pc, wouldReturnToSdkProvider as pi, stringifyValue as pl, retiredAfterRollback as pn, malformedStateRefusalMessage as po, removeSuperseded as pr, coerceCfnInteger as ps, collectNestedChildUnaddressed as pt, MIGRATE_TMP_PREFIX as pu, isSecretBearingReferenceString as q, isReadableOrphanRecord as qa, withStackInstanceIdWithheld as qc, s3BucketDualStackDomainName as qi, warnFinchArgvExposure as ql, isPairableType as qn, unreadableResourceEntries as qo, withCreateTokenLedger as qr, redactForState as qs, planFailedOps as qt, recordedProtectionNote as r, applyRoleArnIfSet as ra, recordLogOnlyValue as rc, readTagList as ri, isReadableBag as rl, inheritProducerRegions as rn, malformedOrphanRowsKeptWarning as ro, bold as rr, MULTI_REGION_RECREATE_BLOCKED_TYPES as rs, NESTED_PENDING_PARENT_REASON as rt, resolveCaptureObservedState as ru, readProtection as s, isIamRoleArn as sa, errorCauseChain as sc, definedAttributes as si, stackInstanceIdCarriedFrom as sl, redactedDeleteAddressSkip as sn, malformedOutputsWarning as so, red as sr, WARM_THROUGHPUT_MEMBERS as ss, getNestedRevertRun as st, resolveUseCdkBootstrapAssets as su, DeployEngine as t, recordedOutputReferenceRegions as ta, printingCorpusOf as tc, DBPROXY_TAG_OPTIONS as ti, importableOutputKeys as tl, findNestedStackTypeChanges as tn, malformedOrphanRecordsRefusalMessage as to, withStackRecords as tr, findReplacedReadersOfRecreateTargets as ts, keptForRetainedRecord as tt, resolveApp as tu, beginDeleteWait as u, applyCallerIdentityCredentials as ua, scrubResourceRecord as uc, ProviderRegistry as ui, timePhase as ul, nameGenerationCarriedFrom as un, malformedResourcePropertiesWarning as uo, deleteSupersededEntry as ur, toCfnInteger as us, revertNestedChildFromJournal as ut, ssmResolvedValueType as uu, maskedLogger as v, isUnboundTemplateParameter as va, identityKeyFor as vc, getCurrentResourceSecrets as vi, rewriteTemplateAssetReferences as vl, namesAnyDeclaredParameter as vn, refuseMalformedOrphanRecordsForDestroy as vo, withoutSuperseded as vr, replayWarn as vs, dropFailedHint as vt, expectedOwnerParam as vu, isTruthyCfnBoolean as w, isNamelessDynamicReferenceError as wa, recordPhysicalNameCopy as wc, slowCcOperationTimeoutMs as wi, isCrossRegionRedirect as wl, secretBearing as wn, refuseMalformedResourceAttributesForOrphan as wo, completedReplayEntries as wr, describeTypeWithThrottleRetry as ws, formatResourceLine as wt, processStackMessages as wu, ECR_AUTO_DELETE_IMAGES_TAG as x, isImpossibleEmptyStoredAttribute as xa, recoverMaskedOutput as xc, applyCustomResourceResponseExpiration as xi, assertAssetBucketRegion as xl, WITHHELD_NAME_DISPLAY as xn, refuseMalformedOrphansForOrphan as xo, noEchoExactEchoLeavesOf as xr, requireConfigString as xs, loadJournaledOrphans as xt, derivePartitionAndUrlSuffix as xu, relayedIndexBusyDelete as y, parameterTypeMayLoseSecretIdentity as ya, inheritNestedStackParameterAssociations as yc, withPrintingSecrets as yi, AssetModeResolver as yl, reachableDivergentParameters as yn, refuseMalformedOrphans as yo, noEchoAttributeNamesOf as yr, requireConfigArray as ys, isHandledOrphan as yt, PARTITION_TABLE as yu, templateIdentity as z, UNREADABLE_ORPHANS_CONTAINER_ROW as za, rebuildClientForBucketRegion as zc, reEnableInstanceApiTermination as zi, isDockerClientEnvKey as zl, constructPathOf as zn, repairMalformedOrphanRecordsForReadOnly as zo, createPreDeleteFinalSnapshot as zr, noEchoOutputsComparison as zs, refusePendingMovesOut as zt, injectedAwsRegionValue as zu };
|
|
52093
|
-
//# sourceMappingURL=deploy-engine-
|
|
52520
|
+
export { planOrphanAdoption as $, malformedLocalOutputsWarning as $a, hasReadableExportSet as $c, refuseUnreadableCdkCrossAccountRefs as $i, getDefaultStateBucketName as $l, awaitInFlightSibling as $n, withoutSilentDropProperties as $o, isRefusedByName as $r, hasMaskableValues as $s, resolveReplacementOldType as $t, inheritedProvenanceForChildDiff as A, lacksRecordedTableArn as Aa, recordMaskOnlyValuesIn as Ac, deleteLeftInPlace as Ai, buildDenyExternalAccessPolicy as Al, exportNameSecretExposure as An, refuseMalformedResourceEntriesForImportSave as Ao, secretNamePrintingBag as Ar, DagBuilder as As, readRefactorMarker as At, hasOwnKey as Au, conditionFingerprint as B, UNREADABLE_ORPHANS_CONTAINER_ROW as Ba, rebuildClientForBucketRegion as Bc, reEnableInstanceApiTermination as Bi, isDockerClientEnvKey as Bl, constructPathOf as Bn, repairMalformedOrphanRecordsForReadOnly as Bo, createPreDeleteFinalSnapshot as Br, noEchoOutputsComparison as Bs, refusePendingMovesOut as Bt, injectedAwsRegionValue as Bu, hasCdkAutoDeleteTag as C, carriesDynamicReference as Ca, physicalNameCopiesOf as Cc, customResourceResponseExpirationWarning as Ci, ensureAssetStorage as Cl, displayTextOrWithheld as Cn, refuseMalformedOutputs as Co, noEchoParameterNamesOf as Cr, prefetchCreateOnlyPropertyPaths as Cs, makeForeignHolderScan as Ct, AssemblyReader as Cu, IMPLICIT_DELETE_DEPENDENCIES as D, AWS_NO_VALUE as Da, carriesSecretMask as Dc, RollbackInlinePolicyWriters as Di, readBootstrapMarkerBody as Dl, secretSafeKeyDisplay as Dn, refuseMalformedResourceEntriesForDeploy as Do, maskEventTextWithBoundBags as Dr, canonicalLambdaFunctionName as Ds, isAccessDeniedError as Dt, parseFailureDebugDetail as Du, markRefusedBeforeApplying as E, keepsSecretReferenceToken as Ea, splitGetAttStringForm as Ec, unchangedBehindSecretReference as Ei, parseBootstrapMarker as El, secretBearingStateKeyWarning as En, refuseMalformedResourceEntries as Eo, journaledOrphanPrintingBag as Er, withRetry as Es, chunks as Et, describeJsonParseFailure as Eu, findNestedTemplateTreeDefect as F, passedParameterClassesOf as Fa, WHOLE_DYNAMIC_REFERENCE_PATTERN as Fc, disableInstanceApiTermination as Fi, describeDockerFailure as Fl, isExportAliasCollision as Fn, refuseMalformedResourcePropertiesForOrphan as Fo, storedSecretNameNeedles as Fr, maskReadbackAtCoordinates as Fs, sameMove as Ft, describeFileReadFailure as Fu, enclosingDeadlineRemainingMs as G, hasReadableOrphans as Ga, isAccessDenied$1 as Gc, isSettledInstanceState as Gi, redactedDockerCause as Gl, movedToHint as Gn, repairMalformedResourcesForReadOnly as Go, earliestDefined as Gr, valueAtCoordinate as Gs, demoteSupersededOrphans as Gt, parentSuppliedValues as H, accountArgs as Ha, CrossPrefixScanCache as Hc, INTRINSIC_KEYS as Hi, partitionSensitiveEnv as Hl, formatDestructiveChange as Hn, repairMalformedOutputsForReadOnly as Ho, isFinalSnapshotError as Hr, readbackPathFor as Hs, replayRollback as Ht, resolveBucketRegion as Hu, isAbsoluteAssetPath as I, declaresNoEcho as Ia, isSingleDynamicReferenceToken as Ic, ec2InstanceProtectionSite as Ii, dockerSpawnEnvWithSensitive as Il, bindingSkippedOutputs as In, refuseMalformedResourcesForDeploy as Io, ATOMIC_FINAL_SNAPSHOT_TYPES as Ir, maskWholeValue as Is, updateRefactorMarker as It, displayAssemblyPath as Iu, isSecretBearingReferenceString as J, isReadableOrphanRecord as Ja, withStackInstanceIdWithheld as Jc, s3BucketDualStackDomainName as Ji, warnFinchArgvExposure as Jl, isPairableType as Jn, unreadableResourceEntries as Jo, withCreateTokenLedger as Jr, redactForState as Js, planFailedOps as Jt, withResourceDeadline as K, hasReadableOutputs as Ka, isNotImplemented as Kc, s3BucketArn as Ki, runDockerForeground as Kl, rollbackOrphanIds as Kn, unpreviewableOrphanRecords as Ko, ledgerForStack as Kr, liveMatchesUnresolvedTokenFrame as Ks, isJournaledOrphan as Kt, listNestedTemplateRows as L, JSON_LISTING_HOLE_VALUE as La, LockManager as Lc, isTerminationProtectionPropagationError as Li, finchSecretArgvRefusal as Ll, DEFAULT_RESOURCE_TIMEOUT_MS as Ln, refuseMalformedResourcesForDestroy as Lo, PRE_DELETE_SNAPSHOT_TYPES as Lr, maskedLeafCoordinatesOf as Ls, hasPendingMovesOut as Lt, renderAssemblyPathEscape as Lu, findServiceTokenRefusals as M, parseWebACLArn as Ma, recordNoEchoParameterFreshValue as Mc, withIndeterminateGuard as Mi, resolveDockerContextDirectory as Ml, noEchoParameterValueSeed as Mn, refuseMalformedResourcePropertiesForDestroy as Mo, secretNamedAttributeNamesOf as Mr, canonicalCoordinates as Ms, refactorMarkerMovesOf as Mt, nullPrototypeRecord as Mu, serviceTokenBlockingReason as N, withSharedDrainBudget as Na, recordProvenPublicExpression as Nc, isWaitAbandonedError as Ni, describeDockerCapturedOutput as Nl, collectDeclaredOutputNames as Nn, refuseMalformedResourcePropertiesForDrift as No, secretNamedRecordNeedles as Nr, isMarkedCoordinate as Ns, refactorMarkerRefusalMessage as Nt, ownValue as Nu, computeImplicitDeleteEdges as O, cfnRefValueFromPhysicalId as Oa, provenPublicValue as Oc, UNSPECIFIED_SKIP_REASON as Oi, validateAssetBucketName as Ol, carriedExportAliasExposure as On, refuseMalformedResourceEntriesForDestroy as Oo, namingSecretsWithRecordedNoEcho as Or, lambdaFunctionNameForMask as Os, lookupEachName as Ot, utf8ByteLength as Ou, childTemplateLoader as P, parameterInputsFor as Pa, wholeStringLeavesOf as Pc, markWaitAbandoned as Pi, describeDockerExecFailure as Pl, collectPublishedOutputNames as Pn, refuseMalformedResourcePropertiesForExport as Po, stateSecretNameNeedles as Pr, maskAtCoordinates as Ps, refuseRefactorMarker as Pt, absoluteAssemblyPathEscape as Pu, makeSiblingClaimReader as Q, malformedExportSourceWarning as Qa, exportNamesCarriedFrom as Qc, producerLookupOver as Qi, synthesisStatusMessage as Ql, proposeRenames as Qn, unwrittenCreateOnlyReplacement as Qo, extractDeploymentEventError as Qr, createUnionSecretMasker as Qs, replacementNeverSwapped as Qt, renderNestedTemplateTreeDefect as R, STATE_REGION_DIVERGED as Ra, isLockInfoExpired as Rc, observeThenDisableInstanceApiTermination as Ri, formatDockerLoginError as Rl, DEFAULT_RESOURCE_WARN_AFTER_MS as Rn, refuseMalformedResourcesForExport as Ro, buildFinalSnapshotIdentifier as Rr, noEchoCoordinatesOf as Rs, pendingMovesOutOf as Rt, resolveAssemblyPath as Ru, S3_AUTO_DELETE_OBJECTS_TAG as S, isImpossibleEmptyStoredAttribute as Sa, recoverMaskedOutput as Sc, applyCustomResourceResponseExpiration as Si, assertAssetBucketRegion as Sl, WITHHELD_NAME_DISPLAY as Sn, refuseMalformedOrphansForOrphan as So, noEchoExactEchoLeavesOf as Sr, requireConfigString as Ss, loadJournaledOrphans as St, derivePartitionAndUrlSuffix as Su, getPriorAttempts as T, isNamelessDynamicReferenceError as Ta, recordPhysicalNameCopy as Tc, slowCcOperationTimeoutMs as Ti, isCrossRegionRedirect as Tl, secretBearing as Tn, refuseMalformedResourceAttributesForOrphan as To, completedReplayEntries as Tr, describeTypeWithThrottleRetry as Ts, formatResourceLine as Tt, processStackMessages as Tu, readRecordedConditionVerdicts as U, deployRefusesOrphanRowsReason as Ua, applyCrossPrefixScan as Uc, IntrinsicFunctionResolver as Ui, redactDockerArgvValues as Ul, findRefactorHints as Un, repairMalformedResourceEntriesForReadOnly as Uo, refusesFinalSnapshot as Ur, readsNoEchoSource as Us, removeProtectionTypeList as Ut, conditionInputsFrom as V, UNREADABLE_RESOURCES_MAP_ROW as Va, CrossPrefixReadError as Vc, DiffCalculator as Vi, isMalformedEnvKey as Vl, findDestructiveChanges as Vn, repairMalformedOrphansForReadOnly as Vo, effectiveDeletionPolicy as Vr, passedNoEchoParametersOf as Vs, replayFailedOperations as Vt, clearBucketRegionCache as Vu, enclosingDeadlineExpired as W, displayLogicalId as Wa, crossPrefixDeniedWarning as Wc, poisonRenderedSpellingsCollidingIn as Wi, redactedCause as Wl, hintSidesOf as Wn, repairMalformedResourcePropertiesForReadOnly as Wo, unsupportedFinalSnapshotError as Wr, recordedNoEchoValuesOf as Ws, recordAfterRollbackUpdate as Wt, mergeNoChangeOutputs as X, malformedDriftResourcePropertiesWarning as Xa, acceptedCreateOnlyDropsOf as Xc, s3BucketWebsiteUrl as Xi, getDockerImageBySourceHash as Xl, mappingPairs as Xn, findActionableSilentDrops as Xo, DeploymentEventsReader as Xr, snapshotPassProvenance as Xs, recheckFailedPlan as Xt, keptWholeReasonText as Y, isReadableResourceEntry as Ya, splitImportedOps as Yc, s3BucketRegionalDomainName as Yi, AssetManifestLoader as Yl, looselyEqual as Yn, withheldAccountClause as Yo, acquireIdempotencyToken as Yr, recordReferenceProvenanceEntry as Ys, planRollback as Yt, makeCanonicalizePropertiesFn as Z, malformedExportNamesWarning as Za, describeRegionValueKind as Zc, resolveDynamicReferences as Zi, Synthesizer as Zl, parseMappingFile as Zn, findSilentDropProperties as Zo, DeploymentEventsStore as Zr, carryLogOnlyValues as Zs, recordUnderIdIsNotOwn as Zt, deleteTableWithIndexBusyRetry as _, regionLessSecretName as _a, pathCrossesDottedKey as _c, readsNoEchoDeleteValues as _i, createAssetRedirectResolver as _l, withNameGenerationReached as _n, refuseMalformedNestedChildOutputs as _o, supersededHolderOf as _r, configStringRefusal as _s, deleteJournaledOrphans as _t, CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION as _u, isProtectionValueActive as a, assertFlagRoleArn as aa, shareLogOnlyValues as ac, refuseMalformedDesiredTags as ai, orphansAfterRollback as al, REDACTED_DELETE_ADDRESS_SKIP_REASON as an, malformedOrphansRefusalMessage as ao, cyan as ar, isStatefulRecreateTargetForReplace as as, displacedOpClause as at, resolveSkipPrefix as au, waitForIndexesSettled as b, parameterTypeMayLoseSecretIdentity as ba, inheritNestedStackParameterAssociations as bc, withPrintingSecrets as bi, AssetModeResolver as bl, reachableDivergentParameters as bn, refuseMalformedOrphans as bo, noEchoAttributeNamesOf as br, requireConfigArray as bs, isHandledOrphan as bt, PARTITION_TABLE as bu, DynamoDBGlobalTableProvider as c, isIamRoleArn as ca, errorCauseChain as cc, definedAttributes as ci, stackInstanceIdCarriedFrom as cl, redactedDeleteAddressSkip as cn, malformedOutputsWarning as co, red as cr, WARM_THROUGHPUT_MEMBERS as cs, getNestedRevertRun as ct, resolveUseCdkBootstrapAssets as cu, compensateRemovedDeletionProtection as d, applyCallerIdentityCredentials as da, scrubResourceRecord as dc, ProviderRegistry as di, timePhase as dl, nameGenerationCarriedFrom as dn, malformedResourcePropertiesWarning as do, deleteSupersededEntry as dr, toCfnInteger as ds, revertNestedChildFromJournal as dt, ssmResolvedValueType as du, keepHeldTokenProvenance as ea, literalSplitDelimitersOf as ec, markDeleteStarted as ei, hasReasonlessBaselineRefusal as el, seedsDeleteFirstGuard as en, malformedLocalResourceEntriesWarning as eo, destroyStackRecordsView as er, NO_CC_HANDLERS_REASON as es, pendingRequestCount as et, getLegacyStateBucketName as eu, deleteBudgetKey as f, callerEnvCredentials as fa, withPhysicalNameCopies as fc, ccBrokenReason as fi, AssetPublisher as fl, nameGenerationHighWaterOf as fn, malformedResourcesWarning as fo, holdsSupersededResources as fr, toFiniteNumber as fs, revertedNestedRowIds as ft, CFN_TEMPLATE_BODY_LIMIT as fu, INDEX_SETTLE_POLL_INTERVAL_MS as g, producerRegionsFromState as ga, isUncertifiedBaselineMaskPosition as gc, TemplateNoEchoReresolver as gi, buildAssetRedirectMap as gl, retiredNameGenerationsLeaving as gn, refuseDivergentRecordRegionForDestroy as go, supersededHeldByOtherTypeWarning as gr, configIntegerRefusal as gs, withNestedStackContext as gt, uploadCfnTemplate as gu, DELETE_INDEX_WAIT_PROCEED_NOTE as h, classifyReplaySecretRegion as ha, dynamicReferenceTokens as hc, waitForLambdaFunctionActive as hi, WorkGraph as hl, retiredNameGenerationsAfter as hn, previewableOrphanRecords as ho, supersededAfterRollback as hr, configBooleanRefusal as hs, getCurrentNestedStackContext as ht, findLargeInlineResources as hu, PROTECTION_PROPERTY_BY_TYPE as i, applyRoleArnIfSet as ia, recordLogOnlyValue as ic, readTagList as ii, isReadableBag as il, inheritProducerRegions as in, malformedOrphanRowsKeptWarning as io, bold as ir, MULTI_REGION_RECREATE_BLOCKED_TYPES as is, NESTED_PENDING_PARENT_REASON as it, resolveCaptureObservedState as iu, deferredServiceTokenWarning as j, refStateLookupFromResource as ja, recordNoEchoAttributeValues as jc, deleteSkipReason as ji, buildDockerImage as jl, isWholeDynamicReferenceValue as jn, refuseMalformedResourceEntriesForOrphan as jo, secretNamePrintingBags as jr, TemplateParser as js, readRefactorMarkerOnce as jt, hasPlainPrototype$1 as ju, crossStackOutputProvenanceSource as k, isStalePlaceholderArnAttribute as ka, recordMaskOnlyValue as kc, deleteIndeterminateGuards as ki, validateContainerRepoName as kl, exportNameNoEchoParameters as kn, refuseMalformedResourceEntriesForImport as ko, orphanRecordsPrintingBag as kr, sameLambdaFunctionAddress as ks, withApiLimit as kt, defineOwnKey as ku, DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS as l, sendableAssumeRoleCommand as la, maskSecretsInError as lc, stringifyIfAssigned as li, PhaseClock as ll, updatePartialMessage as ln, malformedRenderedContainersWarning as lo, yellow as lr, coerceWarmThroughput as ls, nestedChildStackName as lt, stateBucketExistenceConfirmed as lu, resolveDynamoDbDeleteBudgetMs as m, classifyRecordedSecretRegion as ma, DYNAMIC_REFERENCE_TOKEN_SCAN as mc, wouldReturnToSdkProvider as mi, stringifyValue as ml, retiredAfterRollback as mn, malformedStateRefusalMessage as mo, removeSuperseded as mr, coerceCfnInteger as ms, collectNestedChildUnaddressed as mt, MIGRATE_TMP_PREFIX as mu, recordedProtectionEvidence as n, recordedOutputReferenceRegions as na, printingCorpusOf as nc, DBPROXY_TAG_OPTIONS as ni, importableOutputKeys as nl, findNestedStackTypeChanges as nn, malformedOrphanRecordsRefusalMessage as no, withStackRecords as nr, findReplacedReadersOfRecreateTargets as ns, keptForRetainedRecord as nt, resolveApp as nu, perType as o, assertSendableRoleArn as oa, unionOfSecretBags as oc, tagMapAsList as oi, orphansCarriedFrom as ol, isRedactedRecordedValue as on, malformedOrphansWarning as oo, gray as or, isStatefulRecreateTargetSync as os, displacedPhysicalIdShown as ot, resolveStateBucketWithDefault as ou, resolveDynamoDbDeleteBudgetClock as p, envCredentialsAreAssumedRole as pa, withoutPhysicalNameCopies as pc, isCustomResource as pi, isSensitiveAttributeName as pl, nameScopeOf as pn, malformedScrubResourceEntriesRefusalMessage as po, isSupersededResourceRecord as pr, coerceCfnBoolean as ps, withNestedRevertRun as pt, CFN_TEMPLATE_URL_LIMIT as pu, diffSecurity as q, hasReadableResources as qa, stackInstanceIdOf as qc, s3BucketDomainName as qi, runDockerStreaming as ql, withMovedTo as qn, unreadableOrphanRecords as qo, reserveStackCreateToken as qr, markSameGenerationBag as qs, isReplacementOrphan as qt, recordedProtectionNote as r, recordedReferenceRegions as ra, recordLogOnlyParameterValue as rc, planTagDiff as ri, importableOutputs as rl, getCurrentProducerRegions as rn, malformedOrphanRecordsWarning as ro, replacedDeleteFailureVerdict as rr, shownType as rs, recordRetainedForReadoption as rt, resolveAutoAssetStorage as ru, readProtection as s, explicitRoleArnOrThrow as sa, createSecretMasker as sc, tagPlanWarning as si, shouldRetainResource as sl, redactedDeleteAddressFields as sn, malformedOutputsRefusalMessage as so, green as sr, renderStatefulReason as ss, dropSettledNestedJournals as st, resolveStateBucketWithDefaultAndSource as su, DeployEngine as t, outputReferenceProvenanceOf as ta, logOnlyValueCount as tc, DBPROXY_TAGS_WHAT as ti, hasUnverifiableParameterRefusal as tl, orphanNeedsIdentity as tn, malformedLocalResourcesWarning as to, getStackRecords as tr, hasNoCloudControlHandlers as ts, resolvePendingCloudControlRequests as tt, loadCdkJson as tu, beginDeleteWait as u, AWS_CREDENTIAL_ENV_KEYS as ua, maskSecretsInText as uc, CC_BROKEN_REASON as ui, renderPhaseTimings as ul, updatePartialReason as un, malformedResourceEntriesWarning as uo, addSuperseded as ur, isWarmThroughputDecrease as us, recordDisplacedSkips as ut, warnDeprecatedNoPrefixCliFlag as uu, maskedLogger as v, coerceParameterTypedValue as va, spelledKeysOf as vc, isCustomResourceType as vi, loadPublishableAssetManifest as vl, computeParameterTaint as vn, refuseMalformedOrphanRecords as vo, supersededResourcesOf as vr, readConfigString as vs, dropFailedCommands as vt, decodeListingKey as vu, isTruthyCfnBoolean as w, carriesFetchableDynamicReference as wa, recordAttributeIdCopy as wc, CloudControlProvider as wi, getBootstrapMarkerKey as wl, exportAliasCollisionScrubWarning as wn, refuseMalformedOutputsForDestroy as wo, createReadOnlyAttributeHealerFactory as wr, templateResourceTypes as ws, sameJournaledOrphans as wt, StageLoadError as wu, ECR_AUTO_DELETE_IMAGES_TAG as x, getAccountInfo as xa, recordNestedStackParameterExpressions as xc, CUSTOM_RESOURCE_RESPONSE_LIFECYCLE_RULE_ID as xi, BOOTSTRAP_MARKER_PREFIX as xl, resourcesNamingDeclaredParameter as xn, refuseMalformedOrphansForDestroy as xo, noEchoComparisonForTemplate as xr, requireConfigObject as xs, journaledOrphanLines as xt, canonicalizeRegion as xu, relayedIndexBusyDelete as y, isUnboundTemplateParameter as ya, identityKeyFor as yc, getCurrentResourceSecrets as yi, rewriteTemplateAssetReferences as yl, namesAnyDeclaredParameter as yn, refuseMalformedOrphanRecordsForDestroy as yo, withoutSuperseded as yr, replayWarn as ys, dropFailedHint as yt, expectedOwnerParam as yu, templateIdentity as z, STATE_RESOURCES_MALFORMED as za, S3StateBackend as zc, reDisableInstanceApiTermination as zi, getDockerCmd as zl, maskingRetryLogger as zn, refuseMalformedState as zo, ccRoutedFinalSnapshotError as zr, noEchoLeavesOf as zs, pendingMovesRefusalMessage as zt, injectAwsRegion as zu };
|
|
52521
|
+
//# sourceMappingURL=deploy-engine-BOgsnnk0.js.map
|