@go-to-k/cdkd 0.296.26 → 0.296.27
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/README.md +7 -2
- package/dist/{asg-provider-CbKWXl3P.js → asg-provider-BiMLPagi.js} +3 -3
- package/dist/{asg-provider-CbKWXl3P.js.map → asg-provider-BiMLPagi.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-DsF6NsaQ.js → deploy-engine-DC4Yblxp.js} +8 -8
- package/dist/{deploy-engine-DsF6NsaQ.js.map → deploy-engine-DC4Yblxp.js.map} +1 -1
- package/dist/{iam-policy-targets-BoZuWtxK.js → iam-policy-targets-B61e5_Sk.js} +2 -2
- package/dist/{iam-policy-targets-BoZuWtxK.js.map → iam-policy-targets-B61e5_Sk.js.map} +1 -1
- package/dist/{iam-role-provider-ff8olbc5.js → iam-role-provider-BA2eujXF.js} +3 -3
- package/dist/{iam-role-provider-ff8olbc5.js.map → iam-role-provider-BA2eujXF.js.map} +1 -1
- package/dist/index.js +3 -3
- package/dist/{neptune-provider-4HoOfrUS.js → neptune-provider-DME95IcZ.js} +3 -3
- package/dist/{neptune-provider-4HoOfrUS.js.map → neptune-provider-DME95IcZ.js.map} +1 -1
- package/dist/{program-CXVhqA7j.js → program-BwNb3_Ot.js} +11 -11
- package/dist/{program-CXVhqA7j.js.map → program-BwNb3_Ot.js.map} +1 -1
- package/dist/{provider-classes-C2uFHLt7.js → provider-classes-BcSDENeH.js} +78 -15
- package/dist/provider-classes-BcSDENeH.js.map +1 -0
- package/dist/{rds-provider-CgIK1n7q.js → rds-provider-iouJXdXX.js} +3 -3
- package/dist/{rds-provider-CgIK1n7q.js.map → rds-provider-iouJXdXX.js.map} +1 -1
- package/dist/{version-BJxzX87A.js → version-Cs9QbaaH.js} +2 -2
- package/dist/{version-BJxzX87A.js.map → version-Cs9QbaaH.js.map} +1 -1
- package/package.json +10 -3
- package/dist/provider-classes-C2uFHLt7.js.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { r as getAwsClients } from "./aws-clients-CnmtbrxD.js";
|
|
2
2
|
import { F as displayStackName, I as isPasteableIdent, N as displayIdent, O as SECRET_REF_MAX_CODE_POINTS, P as displaySafe, R as plainIdentOr, a as getLogger, b as generateResourceNameWithFallback, n as isAwsAuthoredFailure, r as safeStringify, t as describeAwsFailure, y as generateResourceName, z as safeMsg } from "./aws-failure-text-BaWeCWRz.js";
|
|
3
|
-
import { $ as protectedReplacementAdvice, $t as AccountIdUnavailableError, A as isQuotableImportValue, An as commandHole, B as isTerminalDeleteFailure, C as setBounded, D as VALUE_NOT_SHOWN, E as assertRegionMatch, F as resolveExplicitPhysicalId, Fn as plainOrDescribed, H as observeThenDisableProtection, Jn as markNameCollision, Jt as withPasteableAwsProfile, L as ProtectionFlipRegistry, M as quotedRemedyLogicalId, Mn as isInertUnquoted, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as pasteableCommand, O as isPlainImportJson, P as remedyLogicalId, Q as pasteableAwsCommand, Qn as isAmbiguousOutcomeError, Qt as credentialFingerprint, Rn as shellQuote, S as replayedSendWindow, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, Tt as clearCreatedBeforeFailure, U as protectionFlipKey, Ut as injectiveKey, V as logGroupProtectionSite, W as rdsFamilyProtectionSite, Wt as injectiveKeyPrefix, X as WITHHELD_AWS_COMMAND, Xt as ambientCredentialConfig, Y as UNNAMEABLE_ID_CLAUSE, Yn as markReplayMayCollide, Yt as ambientClientDefaults, Z as isAwsCliLiteral, Zt as clientDefaultsFor, _ as RecentIdSet, _n as ResourceUpdateNotSupportedError, _t as createMaskedLogSinks, a as onlySecretDerived, ar as isThrottlingError, at as startInterruptWatch, b as isInsideWindow, bt as maskDeep, c as recordedPrincipalsRepair, cr as wrapMaskedAwsError, ct as canonicalizeRoute53QueryName, dt as compositeIdSkipResult, er as isRetryableTransientError, et as renderDisableCommand, ft as logicalIdShown, g as AmbiguousCreateLatch, gt as stateOrphanRecordRemedy, h as AMBIGUOUS_LATCH_TTL_MS, hn as ProvisioningError, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, ir as isMarkedNonRetryable, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jn as hasClauseBreak, jt as markAuxiliaryFailure, k as isPlainImportValue, lt as compositeIdFormatMessage, o as readPrincipalLists, or as markNonRetryable, ot as ElapsedBudgetRegistry, p as withRemovalDefaults, pt as packCompositeId, q as userPoolProtectionSite, r as SECRET_DERIVED_READ_LIVE, rr as THROTTLING_ERROR_NAMES, sr as markRedactedCause, tn as CdkdError, tr as isTransientServerError, u as clearOnUpdateRemoval, ut as compositeIdSeparatorRefusal, v as ambiguousAttemptLead, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, x as replayFollowedAmbiguousAttempt, xt as maskerOrIdentity, y as createAttemptKey, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation, zn as withheldTargetClause } from "./iam-policy-targets-
|
|
3
|
+
import { $ as protectedReplacementAdvice, $t as AccountIdUnavailableError, A as isQuotableImportValue, An as commandHole, B as isTerminalDeleteFailure, C as setBounded, D as VALUE_NOT_SHOWN, E as assertRegionMatch, F as resolveExplicitPhysicalId, Fn as plainOrDescribed, H as observeThenDisableProtection, Jn as markNameCollision, Jt as withPasteableAwsProfile, L as ProtectionFlipRegistry, M as quotedRemedyLogicalId, Mn as isInertUnquoted, Mt as markCreatedBeforeFailure, N as refusalTypeShown, Nn as pasteableCommand, O as isPlainImportJson, P as remedyLogicalId, Q as pasteableAwsCommand, Qn as isAmbiguousOutcomeError, Qt as credentialFingerprint, Rn as shellQuote, S as replayedSendWindow, St as withDerivedNameMasks, T as RESOURCE_NOT_FOUND, Tt as clearCreatedBeforeFailure, U as protectionFlipKey, Ut as injectiveKey, V as logGroupProtectionSite, W as rdsFamilyProtectionSite, Wt as injectiveKeyPrefix, X as WITHHELD_AWS_COMMAND, Xt as ambientCredentialConfig, Y as UNNAMEABLE_ID_CLAUSE, Yn as markReplayMayCollide, Yt as ambientClientDefaults, Z as isAwsCliLiteral, Zt as clientDefaultsFor, _ as RecentIdSet, _n as ResourceUpdateNotSupportedError, _t as createMaskedLogSinks, a as onlySecretDerived, ar as isThrottlingError, at as startInterruptWatch, b as isInsideWindow, bt as maskDeep, c as recordedPrincipalsRepair, cr as wrapMaskedAwsError, ct as canonicalizeRoute53QueryName, dt as compositeIdSkipResult, er as isRetryableTransientError, et as renderDisableCommand, ft as logicalIdShown, g as AmbiguousCreateLatch, gt as stateOrphanRecordRemedy, h as AMBIGUOUS_LATCH_TTL_MS, hn as ProvisioningError, ht as segmentAfterAnchor, i as holdsSecretDerivedEntry, ir as isMarkedNonRetryable, it as isInterruptedWaitError, j as normalizeAwsTagsToCfn, jn as hasClauseBreak, jt as markAuxiliaryFailure, k as isPlainImportValue, lt as compositeIdFormatMessage, o as readPrincipalLists, or as markNonRetryable, ot as ElapsedBudgetRegistry, p as withRemovalDefaults, pt as packCompositeId, q as userPoolProtectionSite, r as SECRET_DERIVED_READ_LIVE, rr as THROTTLING_ERROR_NAMES, sr as markRedactedCause, tn as CdkdError, tr as isTransientServerError, u as clearOnUpdateRemoval, ut as compositeIdSeparatorRefusal, v as ambiguousAttemptLead, vt as createMaskedRetryLogger, w as withoutServerErrorRetries, x as replayFollowedAmbiguousAttempt, xt as maskerOrIdentity, y as createAttemptKey, yt as isSecretDerivedValue, z as deleteWithProtectionCompensation, zn as withheldTargetClause } from "./iam-policy-targets-B61e5_Sk.js";
|
|
4
4
|
import { s as ambientRegion } from "./aws-client-defaults-D0q0z4dG.js";
|
|
5
|
-
import { $n as definedAttributes, At as awaitInFlightSibling, B as INDEX_SETTLE_POLL_INTERVAL_MS, Ba as toCfnInteger, Co as hasMaskableValues, Cr as observeThenDisableInstanceApiTermination, Ea as findSilentDropProperties, F as compensateRemovedDeletionProtection, Fo as redactSecretsForState, G as hasCdkAutoDeleteTag, Ga as configIntegerRefusal, Gc as renderAssemblyPathEscape, Gn as acquireIdempotencyToken, Go as carriesSecretMask, Gr as s3BucketDomainName, H as waitForIndexesSettled, Ha as coerceCfnBoolean, I as deleteBudgetKey, J as markRefusedBeforeApplying, Ja as replayWarn, Jn as planTagDiff, Jr as s3BucketWebsiteUrl, K as isTruthyCfnBoolean, Ka as configStringRefusal, Kc as resolveAssemblyPath, Ki as refuseMalformedNestedChildOutputs, Kn as DBPROXY_TAGS_WHAT, Kr as s3BucketDualStackDomainName, L as resolveDynamoDbDeleteBudgetClock, La as WARM_THROUGHPUT_MEMBERS, M as DynamoDBGlobalTableProvider, Mc as canonicalizeRegion, Mt as getStackRecords, N as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, Nc as derivePartitionAndUrlSuffix, Oa as withoutSilentDropProperties, P as beginDeleteWait, Po as markSameGenerationBag, Qn as tagPlanWarning, Qr as getAccountInfo, Qt as redactedDeleteAddressSkip, R as resolveDynamoDbDeleteBudgetMs, Ra as coerceWarmThroughput$1, Ro as dynamicReferenceTokens, Sr as isTerminationProtectionPropagationError, Tr as reEnableInstanceApiTermination, U as ECR_AUTO_DELETE_IMAGES_TAG, Ua as coerceCfnInteger, Uc as describeFileReadFailure, Un as reserveStackCreateToken, Ur as isSettledInstanceState, V as deleteTableWithIndexBusyRetry, Va as toFiniteNumber, Vn as earliestDefined, W as S3_AUTO_DELETE_OBJECTS_TAG, Wa as configBooleanRefusal, Wc as displayAssemblyPath, Wo as recoverMaskedOutput, Wr as s3BucketArn, Xa as requireConfigObject, Xn as refuseMalformedDesiredTags, Xt as isRedactedRecordedValue, Ya as requireConfigArray, Yn as readTagList, Yt as REDACTED_DELETE_ADDRESS_SKIP_REASON, Za as requireConfigString, Zn as tagMapAsList, Zt as redactedDeleteAddressFields, _i as accountArgs, _r as withIndeterminateGuard, a as findNestedTemplateTreeDefect, bt as withNestedStackContext, c as renderNestedTemplateTreeDefect, ci as parseWebACLArn, di as passedParameterClassesOf, er as stringifyIfAssigned, fa as refuseMalformedResourcesForDestroy, fr as slowCcOperationTimeoutMs, go as passedNoEchoParametersOf, gr as deleteSkipReason, gt as revertNestedChildFromJournal, io as sameLambdaFunctionAddress, kc as decodeListingKey, ks as rewriteTemplateAssetReferences, lr as getCurrentResourceSecrets, no as canonicalLambdaFunctionName, o as isAbsoluteAssetPath, pr as unchangedBehindSecretReference, pt as getNestedRevertRun, q as getPriorAttempts, qa as readConfigString, qn as DBPROXY_TAG_OPTIONS, qr as s3BucketRegionalDomainName, qt as getCurrentProducerRegions, ro as lambdaFunctionNameForMask, s as listNestedTemplateRows, t as DeployEngine, to as withRetry, vr as isWaitAbandonedError, wa as withheldAccountClause, wr as reDisableInstanceApiTermination, ws as stringifyValue, xr as ec2InstanceProtectionSite, yr as markWaitAbandoned, yt as getCurrentNestedStackContext, z as DELETE_INDEX_WAIT_PROCEED_NOTE, za as isWarmThroughputDecrease } from "./deploy-engine-
|
|
6
|
-
import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-
|
|
7
|
-
import { a as canonicalizeIpProtocolValue, i as resolveSecretDerivedPrincipals, n as runDestroyForStack, o as resolvedResourceTimeoutMs, r as isResolvableSecretPrincipalList, t as canonicalizeIpv4Cidr } from "./program-
|
|
8
|
-
import { RDSProvider } from "./rds-provider-
|
|
9
|
-
import { NeptuneProvider } from "./neptune-provider-
|
|
10
|
-
import { ASGProvider } from "./asg-provider-
|
|
5
|
+
import { $n as definedAttributes, At as awaitInFlightSibling, B as INDEX_SETTLE_POLL_INTERVAL_MS, Ba as toCfnInteger, Co as hasMaskableValues, Cr as observeThenDisableInstanceApiTermination, Ea as findSilentDropProperties, F as compensateRemovedDeletionProtection, Fo as redactSecretsForState, G as hasCdkAutoDeleteTag, Ga as configIntegerRefusal, Gc as renderAssemblyPathEscape, Gn as acquireIdempotencyToken, Go as carriesSecretMask, Gr as s3BucketDomainName, H as waitForIndexesSettled, Ha as coerceCfnBoolean, I as deleteBudgetKey, J as markRefusedBeforeApplying, Ja as replayWarn, Jn as planTagDiff, Jr as s3BucketWebsiteUrl, K as isTruthyCfnBoolean, Ka as configStringRefusal, Kc as resolveAssemblyPath, Ki as refuseMalformedNestedChildOutputs, Kn as DBPROXY_TAGS_WHAT, Kr as s3BucketDualStackDomainName, L as resolveDynamoDbDeleteBudgetClock, La as WARM_THROUGHPUT_MEMBERS, M as DynamoDBGlobalTableProvider, Mc as canonicalizeRegion, Mt as getStackRecords, N as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, Nc as derivePartitionAndUrlSuffix, Oa as withoutSilentDropProperties, P as beginDeleteWait, Po as markSameGenerationBag, Qn as tagPlanWarning, Qr as getAccountInfo, Qt as redactedDeleteAddressSkip, R as resolveDynamoDbDeleteBudgetMs, Ra as coerceWarmThroughput$1, Ro as dynamicReferenceTokens, Sr as isTerminationProtectionPropagationError, Tr as reEnableInstanceApiTermination, U as ECR_AUTO_DELETE_IMAGES_TAG, Ua as coerceCfnInteger, Uc as describeFileReadFailure, Un as reserveStackCreateToken, Ur as isSettledInstanceState, V as deleteTableWithIndexBusyRetry, Va as toFiniteNumber, Vn as earliestDefined, W as S3_AUTO_DELETE_OBJECTS_TAG, Wa as configBooleanRefusal, Wc as displayAssemblyPath, Wo as recoverMaskedOutput, Wr as s3BucketArn, Xa as requireConfigObject, Xn as refuseMalformedDesiredTags, Xt as isRedactedRecordedValue, Ya as requireConfigArray, Yn as readTagList, Yt as REDACTED_DELETE_ADDRESS_SKIP_REASON, Za as requireConfigString, Zn as tagMapAsList, Zt as redactedDeleteAddressFields, _i as accountArgs, _r as withIndeterminateGuard, a as findNestedTemplateTreeDefect, bt as withNestedStackContext, c as renderNestedTemplateTreeDefect, ci as parseWebACLArn, di as passedParameterClassesOf, er as stringifyIfAssigned, fa as refuseMalformedResourcesForDestroy, fr as slowCcOperationTimeoutMs, go as passedNoEchoParametersOf, gr as deleteSkipReason, gt as revertNestedChildFromJournal, io as sameLambdaFunctionAddress, kc as decodeListingKey, ks as rewriteTemplateAssetReferences, lr as getCurrentResourceSecrets, no as canonicalLambdaFunctionName, o as isAbsoluteAssetPath, pr as unchangedBehindSecretReference, pt as getNestedRevertRun, q as getPriorAttempts, qa as readConfigString, qn as DBPROXY_TAG_OPTIONS, qr as s3BucketRegionalDomainName, qt as getCurrentProducerRegions, ro as lambdaFunctionNameForMask, s as listNestedTemplateRows, t as DeployEngine, to as withRetry, vr as isWaitAbandonedError, wa as withheldAccountClause, wr as reDisableInstanceApiTermination, ws as stringifyValue, xr as ec2InstanceProtectionSite, yr as markWaitAbandoned, yt as getCurrentNestedStackContext, z as DELETE_INDEX_WAIT_PROCEED_NOTE, za as isWarmThroughputDecrease } from "./deploy-engine-DC4Yblxp.js";
|
|
6
|
+
import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-BA2eujXF.js";
|
|
7
|
+
import { a as canonicalizeIpProtocolValue, i as resolveSecretDerivedPrincipals, n as runDestroyForStack, o as resolvedResourceTimeoutMs, r as isResolvableSecretPrincipalList, t as canonicalizeIpv4Cidr } from "./program-BwNb3_Ot.js";
|
|
8
|
+
import { RDSProvider } from "./rds-provider-iouJXdXX.js";
|
|
9
|
+
import { NeptuneProvider } from "./neptune-provider-DME95IcZ.js";
|
|
10
|
+
import { ASGProvider } from "./asg-provider-BiMLPagi.js";
|
|
11
11
|
import { createHash, randomUUID } from "node:crypto";
|
|
12
12
|
import { CreateBucketCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketEncryptionCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketOwnershipControlsCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, GetBucketOwnershipControlsCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListBucketsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client } from "@aws-sdk/client-s3";
|
|
13
13
|
import { AddRoleToInstanceProfileCommand, AddUserToGroupCommand, AttachGroupPolicyCommand, AttachRolePolicyCommand, AttachUserPolicyCommand, CreateAccessKeyCommand, CreateGroupCommand, CreateInstanceProfileCommand, CreateLoginProfileCommand, CreatePolicyCommand, CreatePolicyVersionCommand, CreateUserCommand, DeleteAccessKeyCommand, DeleteGroupCommand, DeleteGroupPolicyCommand, DeleteInstanceProfileCommand, DeleteLoginProfileCommand, DeletePolicyCommand, DeletePolicyVersionCommand, DeleteRolePolicyCommand, DeleteUserCommand, DeleteUserPermissionsBoundaryCommand, DeleteUserPolicyCommand, DetachGroupPolicyCommand, DetachRolePolicyCommand, DetachUserPolicyCommand, GetAccessKeyLastUsedCommand, GetGroupCommand, GetGroupPolicyCommand, GetInstanceProfileCommand, GetPolicyCommand, GetPolicyVersionCommand, GetRolePolicyCommand, GetUserCommand, GetUserPolicyCommand, IAMClient, ListAccessKeysCommand, ListAttachedGroupPoliciesCommand, ListAttachedUserPoliciesCommand, ListEntitiesForPolicyCommand, ListGroupPoliciesCommand, ListGroupsForUserCommand, ListPoliciesCommand, ListPolicyTagsCommand, ListPolicyVersionsCommand, ListUserPoliciesCommand, NoSuchEntityException, PutGroupPolicyCommand, PutRolePolicyCommand, PutUserPermissionsBoundaryCommand, PutUserPolicyCommand, RemoveRoleFromInstanceProfileCommand, RemoveUserFromGroupCommand, TagPolicyCommand, TagUserCommand, UntagPolicyCommand, UntagUserCommand, UpdateAccessKeyCommand, UpdateLoginProfileCommand } from "@aws-sdk/client-iam";
|
|
@@ -10095,6 +10095,9 @@ function canonicalJson(value) {
|
|
|
10095
10095
|
|
|
10096
10096
|
//#endregion
|
|
10097
10097
|
//#region src/provisioning/providers/dynamodb-table-provider.ts
|
|
10098
|
+
function isTableName(id) {
|
|
10099
|
+
return /^[A-Za-z0-9_.-]{3,255}$/.test(id);
|
|
10100
|
+
}
|
|
10098
10101
|
function mapSSESpecification(raw) {
|
|
10099
10102
|
if (raw === null || typeof raw !== "object") return;
|
|
10100
10103
|
const cfn = raw;
|
|
@@ -10453,6 +10456,7 @@ var DynamoDBTableProvider = class {
|
|
|
10453
10456
|
if (!keySchema) throw new ProvisioningError(`KeySchema is required for DynamoDB table ${logicalId}`, resourceType, logicalId);
|
|
10454
10457
|
if (!attributeDefinitions) throw new ProvisioningError(`AttributeDefinitions is required for DynamoDB table ${logicalId}`, resourceType, logicalId);
|
|
10455
10458
|
let tableCreated = false;
|
|
10459
|
+
let createdTableId;
|
|
10456
10460
|
try {
|
|
10457
10461
|
const billingMode = requireConfigString(properties["BillingMode"], "PROVISIONED", "AWS::DynamoDB::Table BillingMode", replayWarn(this.logger, context));
|
|
10458
10462
|
if (context?.replayingState !== true) {
|
|
@@ -10500,8 +10504,9 @@ var DynamoDBTableProvider = class {
|
|
|
10500
10504
|
if (properties["TableClass"]) createParams.TableClass = properties["TableClass"];
|
|
10501
10505
|
const createResourcePolicyDoc = this.extractResourcePolicyDocument(properties["ResourcePolicy"]);
|
|
10502
10506
|
if (createResourcePolicyDoc !== void 0) createParams.ResourcePolicy = createResourcePolicyDoc;
|
|
10503
|
-
await (await this.getCreateClient()).send(new CreateTableCommand(createParams));
|
|
10507
|
+
const createOut = await (await this.getCreateClient()).send(new CreateTableCommand(createParams));
|
|
10504
10508
|
tableCreated = true;
|
|
10509
|
+
createdTableId = createOut?.TableDescription?.TableId;
|
|
10505
10510
|
this.logger.debug(`CreateTable initiated for ${tableName}, waiting for ACTIVE status`);
|
|
10506
10511
|
const tableInfo = await this.waitForTableActive(tableName);
|
|
10507
10512
|
await this.applyPointInTimeRecovery(tableName, properties["PointInTimeRecoverySpecification"], void 0, maskSecrets);
|
|
@@ -10533,7 +10538,7 @@ var DynamoDBTableProvider = class {
|
|
|
10533
10538
|
markAuxiliaryFailure(error, logicalId);
|
|
10534
10539
|
}
|
|
10535
10540
|
const thrown = error instanceof ProvisioningError ? error : new ProvisioningError(`Failed to create DynamoDB table ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, tableName, error instanceof Error ? error : void 0);
|
|
10536
|
-
if (tableLeftBehind) markCreatedBeforeFailure(thrown, logicalId, resourceType, tableName);
|
|
10541
|
+
if (tableLeftBehind) markCreatedBeforeFailure(thrown, logicalId, resourceType, tableName, createdTableId);
|
|
10537
10542
|
throw thrown;
|
|
10538
10543
|
}
|
|
10539
10544
|
}
|
|
@@ -10877,7 +10882,8 @@ var DynamoDBTableProvider = class {
|
|
|
10877
10882
|
if (error instanceof ResourceNotFoundException$1) {
|
|
10878
10883
|
const clientRegion = await this.dynamoDBClient.config.region();
|
|
10879
10884
|
assertRegionMatch(clientRegion, context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
10880
|
-
this.logger.
|
|
10885
|
+
if (context?.failedCreateOrphan === true) this.logger.info(safeMsg` DynamoDB table ${physicalId} (${logicalId}), which a failed deploy created, is already gone; nothing to delete`);
|
|
10886
|
+
else this.logger.debug(`DynamoDB table ${physicalId} does not exist, skipping deletion`);
|
|
10881
10887
|
this.deleteBudgets.release(deleteBudgetKey(physicalId, context?.expectedRegion));
|
|
10882
10888
|
this.protectionFlips.release(deleteBudgetKey(physicalId, context?.expectedRegion));
|
|
10883
10889
|
return;
|
|
@@ -11413,6 +11419,36 @@ var DynamoDBTableProvider = class {
|
|
|
11413
11419
|
throw err;
|
|
11414
11420
|
}
|
|
11415
11421
|
}
|
|
11422
|
+
async isSameResource(journaledPhysicalId, record, resourceType, context) {
|
|
11423
|
+
if (resourceType !== "AWS::DynamoDB::Table") return "unknown";
|
|
11424
|
+
if (!isTableName(journaledPhysicalId) || !isTableName(record.physicalId)) return "unknown";
|
|
11425
|
+
if (journaledPhysicalId === record.physicalId) return "same";
|
|
11426
|
+
if (await this.dynamoDBClient.config.region() !== context.expectedRegion) return "unknown";
|
|
11427
|
+
const recordTableId = await this.readTableIdIfExists(record.physicalId);
|
|
11428
|
+
if (recordTableId === void 0) return "unknown";
|
|
11429
|
+
const journaledTableId = await this.readTableIdIfExists(journaledPhysicalId);
|
|
11430
|
+
if (journaledTableId === void 0) return "different";
|
|
11431
|
+
return journaledTableId === recordTableId ? "same" : "different";
|
|
11432
|
+
}
|
|
11433
|
+
async resourceIdentity(physicalId, resourceType, context) {
|
|
11434
|
+
if (resourceType !== "AWS::DynamoDB::Table" || !isTableName(physicalId)) return void 0;
|
|
11435
|
+
if (await this.dynamoDBClient.config.region() !== context.expectedRegion) return void 0;
|
|
11436
|
+
const live = await this.readTableIdIfExists(physicalId);
|
|
11437
|
+
return live === void 0 ? RESOURCE_NOT_FOUND : live;
|
|
11438
|
+
}
|
|
11439
|
+
async readTableIdIfExists(tableName) {
|
|
11440
|
+
let response;
|
|
11441
|
+
try {
|
|
11442
|
+
response = await this.dynamoDBClient.send(new DescribeTableCommand({ TableName: tableName }));
|
|
11443
|
+
} catch (error) {
|
|
11444
|
+
if (error instanceof ResourceNotFoundException$1) return void 0;
|
|
11445
|
+
throw error;
|
|
11446
|
+
}
|
|
11447
|
+
if (response.Table?.TableName !== tableName) throw new Error("DescribeTable answered for another table than the one asked for");
|
|
11448
|
+
const tableId = response.Table.TableId;
|
|
11449
|
+
if (typeof tableId !== "string" || tableId === "") throw new Error("DescribeTable returned no TableId");
|
|
11450
|
+
return tableId;
|
|
11451
|
+
}
|
|
11416
11452
|
skipWarmThroughputDecrease(logicalId, physicalId, desired, live, maskSecrets) {
|
|
11417
11453
|
const warn = (message) => this.logger.warn(maskSecrets(message));
|
|
11418
11454
|
if (!isWarmThroughputDecrease(desired, live)) return false;
|
|
@@ -11896,7 +11932,7 @@ var LogsLogGroupProvider = class {
|
|
|
11896
11932
|
maskSecrets: maskerOrIdentity(context?.maskSecrets)
|
|
11897
11933
|
});
|
|
11898
11934
|
const disableStep = disableCommand ? `Then disable deletion protection — \`${disableCommand}\`, or via the console — and re-deploy with ${replaceFlags}` : `${UNNAMEABLE_ID_CLAUSE} Then re-deploy with ${replaceFlags}`;
|
|
11899
|
-
const remedy = deletionProtected ? `cdkd's recorded properties for this log group carry DeletionProtectionEnabled, so ${replaceFlags} alone will NOT succeed while AWS still has it on: the replacement normally deletes the log group, AWS refuses that delete while protection is on, and cdkd deploy has no --remove-protection flag to clear it (only cdkd destroy and cdkd state destroy act on one). Read "Deletion protection blocks a replacement"
|
|
11935
|
+
const remedy = deletionProtected ? `cdkd's recorded properties for this log group carry DeletionProtectionEnabled, so ${replaceFlags} alone will NOT succeed while AWS still has it on: the replacement normally deletes the log group, AWS refuses that delete while protection is on, and cdkd deploy has no --remove-protection flag to clear it (only cdkd destroy and cdkd state destroy act on one). Read "Deletion protection blocks a replacement" at https://cdkd.dev/cli-deploy-safety/#deletion-protection-blocks-a-replacement-and-deploy-cannot-clear-it BEFORE you disable anything: whether disabling helps at all, and what the flag ends up as, depend on your UpdateReplacePolicy and on whether the deploy completes — neither of which this refusal can see. ${disableStep} to delete + recreate the log group under the new class (its stored log events are lost). Setting DeletionProtectionEnabled: false in the template does NOT clear it in the same deploy: this refusal fires before that property is applied, so that route needs its own deploy with the LogGroupClass change reverted. Or revert the LogGroupClass change and keep the current class.` : `Re-deploy with ${replaceFlags} to delete + recreate the log group under the new class (its stored log events are lost), or revert the LogGroupClass change.`;
|
|
11900
11936
|
const shownClass = (c) => plainIdentOr(c, "a class value that is not a plain identifier");
|
|
11901
11937
|
throw new ResourceUpdateNotSupportedError("AWS::Logs::LogGroup", logicalId, `the LogGroupClass (from ${shownClass(prevClass)} to ${shownClass(nextClass)}) cannot be changed after creation. ${remedy} Note --force-stateful-recreation has NO per-resource granularity: it clears the data guard for every replacement target in the run`);
|
|
11902
11938
|
}
|
|
@@ -12142,6 +12178,9 @@ var LogsLogGroupProvider = class {
|
|
|
12142
12178
|
|
|
12143
12179
|
//#endregion
|
|
12144
12180
|
//#region src/provisioning/providers/cloudwatch-alarm-provider.ts
|
|
12181
|
+
function isAlarmWriteThrottle(error) {
|
|
12182
|
+
return isThrottlingError(error) || error instanceof Error && error.message.includes("Rate exceeded");
|
|
12183
|
+
}
|
|
12145
12184
|
var CloudWatchAlarmProvider = class {
|
|
12146
12185
|
cloudWatchClient;
|
|
12147
12186
|
logger = getLogger().child("CloudWatchAlarmProvider");
|
|
@@ -12184,7 +12223,7 @@ var CloudWatchAlarmProvider = class {
|
|
|
12184
12223
|
Key,
|
|
12185
12224
|
Value
|
|
12186
12225
|
}));
|
|
12187
|
-
await this.cloudWatchClient.send(new PutMetricAlarmCommand(createParams));
|
|
12226
|
+
await this.sendWithThrottleRetry("PutMetricAlarm", logicalId, () => this.cloudWatchClient.send(new PutMetricAlarmCommand(createParams)));
|
|
12188
12227
|
this.logger.debug(`Successfully created CloudWatch alarm ${logicalId}: ${alarmName}`);
|
|
12189
12228
|
return {
|
|
12190
12229
|
physicalId: alarmName,
|
|
@@ -12199,7 +12238,7 @@ var CloudWatchAlarmProvider = class {
|
|
|
12199
12238
|
this.logger.debug(`Updating CloudWatch alarm ${logicalId}: ${physicalId}`);
|
|
12200
12239
|
refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
|
|
12201
12240
|
try {
|
|
12202
|
-
await this.cloudWatchClient.send(new PutMetricAlarmCommand(this.buildAlarmParams(physicalId, properties)));
|
|
12241
|
+
await this.sendWithThrottleRetry("PutMetricAlarm", logicalId, () => this.cloudWatchClient.send(new PutMetricAlarmCommand(this.buildAlarmParams(physicalId, properties))));
|
|
12203
12242
|
this.logger.debug(`Successfully updated CloudWatch alarm ${logicalId}`);
|
|
12204
12243
|
const alarmArn = await this.getAlarmArn(physicalId);
|
|
12205
12244
|
await this.applyTagDiff(alarmArn, resourceType, logicalId, previousProperties["Tags"], properties["Tags"]);
|
|
@@ -12213,10 +12252,34 @@ var CloudWatchAlarmProvider = class {
|
|
|
12213
12252
|
throw new ProvisioningError(`Failed to update CloudWatch alarm ${logicalId}: ${error instanceof Error ? error.message : String(error)}`, resourceType, logicalId, physicalId, cause);
|
|
12214
12253
|
}
|
|
12215
12254
|
}
|
|
12255
|
+
throttleDelaysMs = [
|
|
12256
|
+
1e3,
|
|
12257
|
+
2e3,
|
|
12258
|
+
4e3,
|
|
12259
|
+
8e3,
|
|
12260
|
+
16e3,
|
|
12261
|
+
2e4,
|
|
12262
|
+
2e4,
|
|
12263
|
+
2e4
|
|
12264
|
+
];
|
|
12265
|
+
throttleJitter = () => Math.random();
|
|
12266
|
+
throttleSleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
12267
|
+
async sendWithThrottleRetry(label, logicalId, send) {
|
|
12268
|
+
for (let retry = 0;; retry++) try {
|
|
12269
|
+
await send();
|
|
12270
|
+
return;
|
|
12271
|
+
} catch (error) {
|
|
12272
|
+
const ceiling = this.throttleDelaysMs[retry];
|
|
12273
|
+
if (ceiling === void 0 || !isAlarmWriteThrottle(error)) throw error;
|
|
12274
|
+
const delay = Math.round(ceiling / 2 + this.throttleJitter() * ceiling / 2);
|
|
12275
|
+
this.logger.debug(safeMsg`${label} for ${logicalId} was throttled; retrying in ${delay}ms (retry ${retry + 1}/${this.throttleDelaysMs.length})`);
|
|
12276
|
+
await this.throttleSleep(delay);
|
|
12277
|
+
}
|
|
12278
|
+
}
|
|
12216
12279
|
async delete(logicalId, physicalId, resourceType, _properties, context) {
|
|
12217
12280
|
this.logger.debug(`Deleting CloudWatch alarm ${logicalId}: ${physicalId}`);
|
|
12218
12281
|
try {
|
|
12219
|
-
await this.cloudWatchClient.send(new DeleteAlarmsCommand({ AlarmNames: [physicalId] }));
|
|
12282
|
+
await this.sendWithThrottleRetry("DeleteAlarms", logicalId, () => this.cloudWatchClient.send(new DeleteAlarmsCommand({ AlarmNames: [physicalId] })));
|
|
12220
12283
|
this.logger.debug(`Successfully deleted CloudWatch alarm ${logicalId}`);
|
|
12221
12284
|
} catch (error) {
|
|
12222
12285
|
if (error instanceof Error && error.name === "ResourceNotFound") {
|
|
@@ -44511,4 +44574,4 @@ var ACMCertificateProvider = class {
|
|
|
44511
44574
|
|
|
44512
44575
|
//#endregion
|
|
44513
44576
|
export { ACMCertificateProvider, ASGProvider, AgentCoreBrowserProvider, AgentCoreCodeInterpreterProvider, AgentCoreEvaluatorProvider, AgentCoreRuntimeProvider, ApiGatewayProvider, ApiGatewayV2Provider, AppSyncProvider, BudgetsBudgetProvider, CloudFrontDistributionProvider, CloudFrontOACProvider, CloudFrontOAIProvider, CloudTrailProvider, CloudWatchAlarmProvider, CloudWatchAnomalyDetectorProvider, CodeBuildProvider, CodeCommitRepositoryProvider, CognitoUserPoolProvider, DLMLifecyclePolicyProvider, DocDBProvider, DocDBSubnetGroupProvider, DynamoDBGlobalTableProvider, DynamoDBTableProvider, EC2Provider, ECRProvider, ECSProvider, EFSProvider, ELBv2Provider, EMRClusterProvider, EMRInstanceFleetConfigProvider, EMRInstanceGroupConfigProvider, ElastiCacheProvider, EventBridgeBusProvider, EventBridgeRuleProvider, FSxFileSystemProvider, FirehoseProvider, GlueConnectionProvider, GlueCrawlerProvider, GlueJobProvider, GlueProvider, GlueSecurityConfigurationProvider, GlueTriggerProvider, GlueWorkflowProvider, IAMAccessKeyProvider, IAMInstanceProfileProvider, IAMManagedPolicyProvider, IAMPolicyProvider, IAMRoleProvider, IAMUserGroupProvider, KMSProvider, KinesisStreamConsumerProvider, KinesisStreamProvider, LambdaEventInvokeConfigProvider, LambdaEventSourceMappingProvider, LambdaFunctionProvider, LambdaLayerVersionProvider, LambdaMicrovmImageProvider, LambdaPermissionProvider, LambdaUrlProvider, LogsLogGroupProvider, NeptuneProvider, NestedStackProvider, PipesPipeProvider, RDSDBProxyEndpointProvider, RDSDBProxyProvider, RDSDBProxyTargetGroupProvider, RDSProvider, Route53Provider, S3BucketPolicyProvider, S3BucketProvider, S3DirectoryBucketProvider, S3TablesProvider, S3VectorsProvider, SNSSubscriptionProvider, SNSTopicPolicyProvider, SNSTopicProvider, SQSQueuePolicyProvider, SQSQueueProvider, SSMParameterProvider, SchedulerScheduleProvider, SecretsManagerSecretProvider, ServiceDiscoveryProvider, StepFunctionsProvider, WAFv2WebACLProvider, WaitConditionHandleProvider };
|
|
44514
|
-
//# sourceMappingURL=provider-classes-
|
|
44577
|
+
//# sourceMappingURL=provider-classes-BcSDENeH.js.map
|