@go-to-k/cdkd 0.319.0 → 0.321.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-T9K-NVi8.js → asg-provider-DIQU27yo.js} +3 -3
- package/dist/{asg-provider-T9K-NVi8.js.map → asg-provider-DIQU27yo.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{created-resource-sink-BpB3iPvn.js → created-resource-sink-CmrPwGge.js} +4 -2
- package/dist/created-resource-sink-CmrPwGge.js.map +1 -0
- package/dist/{db-instance-modify-retry-CspmK57I.js → db-instance-modify-retry-DCLA_p9I.js} +2 -2
- package/dist/{db-instance-modify-retry-CspmK57I.js.map → db-instance-modify-retry-DCLA_p9I.js.map} +1 -1
- package/dist/{deploy-engine-CVYhHEgq.js → deploy-engine-pGWgnV-6.js} +135 -81
- package/dist/deploy-engine-pGWgnV-6.js.map +1 -0
- package/dist/{iam-role-provider-qTIqSmlf.js → iam-role-provider-z7poP-9w.js} +3 -3
- package/dist/{iam-role-provider-qTIqSmlf.js.map → iam-role-provider-z7poP-9w.js.map} +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/{neptune-provider-BsA7jGiV.js → neptune-provider-DzedCIWf.js} +4 -4
- package/dist/{neptune-provider-BsA7jGiV.js.map → neptune-provider-DzedCIWf.js.map} +1 -1
- package/dist/{program-DyYTFxF-.js → program-lQLBOfU6.js} +45 -7
- package/dist/program-lQLBOfU6.js.map +1 -0
- package/dist/{provider-classes-DOr3JVGp.js → provider-classes-DTgKRk4t.js} +355 -50
- package/dist/provider-classes-DTgKRk4t.js.map +1 -0
- package/dist/{rds-provider-CIjO2Do5.js → rds-provider-BenOBQ9u.js} +50 -6
- package/dist/rds-provider-BenOBQ9u.js.map +1 -0
- package/dist/{version-C3yhae4b.js → version-DWSVZXE5.js} +2 -2
- package/dist/{version-C3yhae4b.js.map → version-DWSVZXE5.js.map} +1 -1
- package/package.json +1 -1
- package/dist/created-resource-sink-BpB3iPvn.js.map +0 -1
- package/dist/deploy-engine-CVYhHEgq.js.map +0 -1
- package/dist/program-DyYTFxF-.js.map +0 -1
- package/dist/provider-classes-DOr3JVGp.js.map +0 -1
- package/dist/rds-provider-CIjO2Do5.js.map +0 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { r as getAwsClients, s as withApiGatewayPacing } from "./aws-clients-DWpHZk2l.js";
|
|
2
2
|
import { $ as safeMsg, A as isBeforeStateRead, E as generatedNameFor, J as displaySafe, N as recordedGeneratedNameKept, O as getCurrentStackInstanceId, Q as plainIdentOr, T as generateResourceNameWithFallback, V as SECRET_REF_MAX_CODE_POINTS, X as isPasteableIdent, Y as displayStackName, a as safeStringify, i as isAwsAuthoredFailure, n as describeAwsFailure, q as displayIdent, r as describeAwsStatusReason, s as getLogger, t as VERBOSE_POINTER, w as generateResourceName } from "./aws-failure-text-DiHodi76.js";
|
|
3
|
-
import { $ as isTerminalDeleteFailure, A as setBounded, Ar as isThrottlingError, At as stateOrphanRecordRemedy, B as normalizeAwsTagsToCfn, C as AmbiguousCreateLatch, Cr as isExplicitDenyError, Ct as compositeIdFormatMessage, D as isInsideWindow, Dt as packCompositeId, E as createAttemptKey, Er as isTransientServerError, Et as logicalIdShown, F as assertRegionMatch, Fn as ResourceUpdateNotSupportedError, Ft as maskerOrIdentity, Gt as markAuxiliaryFailure, H as refusalTypeShown, I as VALUE_NOT_SHOWN, It as withDerivedNameMasks, J as deleteAfterProtectionFlipWithFinalSnapshot, K as ProtectionFlipRegistry, Kt as markCreatedBeforeFailure, L as isPlainImportJson, M as RESOURCE_NOT_FOUND, Mr as markRedactedCause, Mt as createMaskedRetryLogger, Nn as ProvisioningError, Nr as wrapMaskedAwsError, Nt as isSecretDerivedValue, O as replayFollowedAmbiguousAttempt, Or as THROTTLING_ERROR_NAMES, P as markNotGone, Pt as maskDeep, Q as isTerminalDbWaitStatus, Qn as pasteableCommand, R as isPlainImportValue, S as AMBIGUOUS_LATCH_TTL_MS, Sr as isAmbiguousOutcomeError, St as canonicalizeRoute53QueryName, T as ambiguousAttemptLead, Tr as isRetryableTransientError, Tt as compositeIdSkipResult, U as remedyLogicalId, Ut as isAuxiliaryFailure, V as quotedRemedyLogicalId, W as resolveExplicitPhysicalId, Xn as hasClauseBreak, Y as deleteWithProtectionCompensation, Yn as commandHole, Z as isProceedDbStatus, Zn as isInertUnquoted, b as withRemovalDefaults, bt as isInterruptedWaitError, ct as UNNAMEABLE_ID_CLAUSE, d as onlySecretDerived, dn as withPasteableAwsProfile, dt as pasteableAwsCommand, er as plainOrDescribed, et as logGroupProtectionSite, f as readPrincipalLists, fn as ambientClientDefaults, ft as protectedReplacementAdvice, g as clearOnUpdateRemoval, gn as AccountIdUnavailableError, hn as credentialFingerprint, hr as relayedNameCollision, ht as ElapsedBudgetRegistry, i as reportCreatedResource, ir as withheldTargetClause, j as withoutServerErrorRetries, jr as markNonRetryable, jt as createMaskedLogSinks, k as replayedSendWindow, kr as isMarkedNonRetryable, kt as segmentAfterAnchor, l as SECRET_DERIVED_READ_LIVE, lt as WITHHELD_AWS_COMMAND, m as recordedPrincipalsRepair, mn as clientDefaultsFor, mr as markReplayMayCollide, mt as ElapsedBudget, nt as protectionFlipKey, o as retractCreatedResource, on as injectiveKey, ot as userPoolProtectionSite, pn as ambientCredentialConfig, pr as markNameCollision, pt as renderDisableCommand, qt as markSupersedesEarlierCreate, rr as shellQuote, rt as rdsFamilyProtectionSite, sn as injectiveKeyPrefix, tt as observeThenDisableProtection, u as holdsSecretDerivedEntry, ut as isAwsCliLiteral, vn as CdkdError, w as RecentIdSet, wt as compositeIdSeparatorRefusal, xt as startInterruptWatch, y as removedTemplateKeys, yr as explicitDenyPolicyKind, z as isQuotableImportValue, zt as clearCreatedBeforeFailure } from "./created-resource-sink-
|
|
3
|
+
import { $ as isTerminalDeleteFailure, A as setBounded, Ar as isThrottlingError, At as stateOrphanRecordRemedy, B as normalizeAwsTagsToCfn, C as AmbiguousCreateLatch, Cr as isExplicitDenyError, Ct as compositeIdFormatMessage, D as isInsideWindow, Dt as packCompositeId, E as createAttemptKey, Er as isTransientServerError, Et as logicalIdShown, F as assertRegionMatch, Fn as ResourceUpdateNotSupportedError, Ft as maskerOrIdentity, Gt as markAuxiliaryFailure, H as refusalTypeShown, I as VALUE_NOT_SHOWN, It as withDerivedNameMasks, J as deleteAfterProtectionFlipWithFinalSnapshot, K as ProtectionFlipRegistry, Kt as markCreatedBeforeFailure, L as isPlainImportJson, M as RESOURCE_NOT_FOUND, Mr as markRedactedCause, Mt as createMaskedRetryLogger, Nn as ProvisioningError, Nr as wrapMaskedAwsError, Nt as isSecretDerivedValue, O as replayFollowedAmbiguousAttempt, Or as THROTTLING_ERROR_NAMES, P as markNotGone, Pt as maskDeep, Q as isTerminalDbWaitStatus, Qn as pasteableCommand, R as isPlainImportValue, S as AMBIGUOUS_LATCH_TTL_MS, Sr as isAmbiguousOutcomeError, St as canonicalizeRoute53QueryName, T as ambiguousAttemptLead, Tr as isRetryableTransientError, Tt as compositeIdSkipResult, U as remedyLogicalId, Ut as isAuxiliaryFailure, V as quotedRemedyLogicalId, W as resolveExplicitPhysicalId, Xn as hasClauseBreak, Y as deleteWithProtectionCompensation, Yn as commandHole, Z as isProceedDbStatus, Zn as isInertUnquoted, b as withRemovalDefaults, bt as isInterruptedWaitError, ct as UNNAMEABLE_ID_CLAUSE, d as onlySecretDerived, dn as withPasteableAwsProfile, dt as pasteableAwsCommand, er as plainOrDescribed, et as logGroupProtectionSite, f as readPrincipalLists, fn as ambientClientDefaults, ft as protectedReplacementAdvice, g as clearOnUpdateRemoval, gn as AccountIdUnavailableError, hn as credentialFingerprint, hr as relayedNameCollision, ht as ElapsedBudgetRegistry, i as reportCreatedResource, ir as withheldTargetClause, j as withoutServerErrorRetries, jr as markNonRetryable, jt as createMaskedLogSinks, k as replayedSendWindow, kr as isMarkedNonRetryable, kt as segmentAfterAnchor, l as SECRET_DERIVED_READ_LIVE, lt as WITHHELD_AWS_COMMAND, m as recordedPrincipalsRepair, mn as clientDefaultsFor, mr as markReplayMayCollide, mt as ElapsedBudget, nt as protectionFlipKey, o as retractCreatedResource, on as injectiveKey, ot as userPoolProtectionSite, pn as ambientCredentialConfig, pr as markNameCollision, pt as renderDisableCommand, qt as markSupersedesEarlierCreate, rr as shellQuote, rt as rdsFamilyProtectionSite, sn as injectiveKeyPrefix, tt as observeThenDisableProtection, u as holdsSecretDerivedEntry, ut as isAwsCliLiteral, vn as CdkdError, w as RecentIdSet, wt as compositeIdSeparatorRefusal, xt as startInterruptWatch, y as removedTemplateKeys, yr as explicitDenyPolicyKind, z as isQuotableImportValue, zt as clearCreatedBeforeFailure } from "./created-resource-sink-CmrPwGge.js";
|
|
4
4
|
import { c as ambientRegion } from "./aws-client-defaults-BLXFsfMa.js";
|
|
5
|
-
import { $ as sendTtlWaitingOutRateLimit, A as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, B as deleteTableWithIndexBusyRetry, Ba as s3BucketArn, Bc as passedNoEchoParametersOf, Bi as isRefusedByName, C as planContributorInsightsOp, Cl as recordAttributeIdCopy, Ct as enclosingDeadlineExpired, D as reverseMapTableContributorInsights, Da as reDisableInstanceApiTermination, Dc as lambdaFunctionNameForMask, E as reverseMapIndexContributorInsights, Ea as observeThenDisableInstanceApiTermination, Ec as canonicalLambdaFunctionName, El as carriesSecretMask, Eo as parseWebACLArn, F as resolveDynamoDbDeleteBudgetClock, Fd as displayAssemblyPath, G as readbackVectorIndexes, Gi as readTagList, Gn as isRedactedRecordedValue, H as relayedIndexBusyDelete, Ha as s3BucketDualStackDomainName, Hi as DBPROXY_TAGS_WHAT, Hn as getCurrentProducerRegions, I as resolveDynamoDbDeleteBudgetMs, Id as renderAssemblyPathEscape, Ii as acquireIdempotencyToken, Io as accountArgs, J as vectorIndexesShapeDetail, Jc as recordReferenceProvenanceEntry, Ji as tagPlanWarning, Js as withoutSilentDropProperties, Jt as getCurrentNestedStackContext, K as vectorIndexesForCreate, Kc as markSameGenerationBag, Ki as refuseMalformedDesiredTags, Kn as redactedDeleteAddressFields, Ks as findSilentDropProperties, L as DELETE_INDEX_WAIT_PROCEED_NOTE, Ld as resolveAssemblyPath, M as beginDeleteWait, Mi as earliestDefined, N as compensateRemovedDeletionProtection, O as stripIndexContributorInsights, Oa as reEnableInstanceApiTermination, Oc as sameLambdaFunctionAddress, P as deleteBudgetKey, Pd as describeFileReadFailure, Pi as reserveStackCreateToken, Q as readTtlSpec, Qc as hasMaskableValues, R as INDEX_SETTLE_POLL_INTERVAL_MS, S as indexDeclaresContributorInsights, Sa as markWaitAbandoned, Sc as blockDeviceMappingsDifferOnlyInDeleteOnTermination, Sl as physicalNameCopiesOf, T as readContributorInsightsSpec, Ta as isTerminationProtectionPropagationError, Tc as emrClusterInstancesReplaced, U as waitForIndexesSettled, Ua as s3BucketRegionalDomainName, Ui as DBPROXY_TAG_OPTIONS, Ur as replacedDeleteFailureVerdict, Us as withheldAccountClause, V as maskedLogger, Va as s3BucketDomainName, Vi as markDeleteStarted, Vr as getStackRecords, Vt as getNestedRevertRun, W as planVectorIndexUpdates, Wa as s3BucketWebsiteUrl, Wi as planTagDiff, Wn as REDACTED_DELETE_ADDRESS_SKIP_REASON, Wt as revertNestedChildFromJournal, X as isTtlRateLimited, Xi as stringifyIfAssigned, Y as isTtlAlreadyDisabled, Ya as outputReferenceProvenanceOf, Yc as snapshotPassProvenance, Yi as definedAttributes, Yt as withNestedStackContext, Z as planTimeToLive, _ as streamMemberRefusals, _c as requireConfigString, _d as decodeListingKey, _t as renderNestedTemplateTreeDefect, ac as isWarmThroughputDecrease, an as chunks, at as markRefusedBeforeApplying, b as CONTRIBUTOR_INSIGHTS_KEY, ba as withIndeterminateGuard, bd as canonicalizeRegion, c as DynamoDBGlobalTableProvider, cc as coerceCfnBoolean, cn as withApiLimit, d as declaredStreamPolicyMember, dc as configIntegerRefusal, ds as refuseMalformedNestedChildOutputs, et as ECR_AUTO_DELETE_IMAGES_TAG, f as declaredStreamTagsMember, fa as slowCcOperationTimeoutMs, fc as configStringRefusal, fl as withoutPhysicalNameCopies, g as streamDeclaresTags, gc as requireConfigObject, gt as listNestedTemplateRows, h as streamDeclaresPolicy, hc as requireConfigArray, ho as getAccountInfo, ht as isAbsoluteAssetPath, ic as coerceWarmThroughput$1, it as getPriorAttempts, j as DYNAMODB_DELETE_POLL_COST_MS, ja as isUsableAttemptedName, js as refuseMalformedResourcesForDestroy, k as DYNAMODB_DELETE_DEADLINE_MARGIN_MS, ko as passedParameterClassesOf, l as STREAM_POLICY_KEY, lc as coerceCfnInteger, m as reverseMapStreamPolicy, ma as unchangedBehindSecretReference, mc as replayWarn, ml as dynamicReferenceTokens, mt as findNestedTemplateTreeDefect, na as waitForLambdaFunctionActive, nt as hasCdkAutoDeleteTag, oa as getCurrentResourceSecrets, oc as toCfnInteger, on as isAccessDeniedError, p as planStreamMemberOps, pa as onlySecretReferencesDiffer, pc as readConfigString, pu as stringifyValue, q as vectorIndexesSettled, qc as redactForState, qi as tagMapAsList, qn as redactedDeleteAddressSkip, rc as WARM_THROUGHPUT_MEMBERS, rt as isTruthyCfnBoolean, sc as toFiniteNumber, sn as lookupEachName, t as DeployEngine, tt as S3_AUTO_DELETE_OBJECTS_TAG, u as STREAM_TAGS_KEY, uc as configBooleanRefusal, uu as timePhase, v as streamPolicyMatchesDeclared, vu as rewriteTemplateAssetReferences, w as planIndexContributorInsightsOps, wa as ec2InstanceProtectionSite, wc as ecsServiceLaunchTypeSetOrChanged, wt as enclosingDeadlineRemainingMs, x as contributorInsightsRefusals, xa as isWaitAbandonedError, xc as withRetry, xd as derivePartitionAndUrlSuffix, xl as recoverMaskedOutput, y as streamTagsMatchDeclared, ya as deleteSkipReason, yi as secretNamedAttributeNamesOf, z as TABLE_INDEX_NOUN, za as isSettledInstanceState, zr as awaitInFlightSibling } from "./deploy-engine-
|
|
6
|
-
import { a as IamCreateClientCache, i as isEntityAlreadyExists, n as collectInlinePolicyNamesManagedBySiblings, r as iamEntityLeftByThisCreate, t as IAMRoleProvider } from "./iam-role-provider-
|
|
7
|
-
import { a as resolveSecretDerivedPrincipals, i as isResolvableSecretPrincipalList, n as runDestroyForStack, o as canonicalizeIpProtocolValue, r as holdsUnprovenSecretPrincipalToken, s as resolvedResourceTimeoutMs, t as canonicalizeIpv4Cidr } from "./program-
|
|
8
|
-
import { n as modifyDbInstanceWhenAvailable } from "./db-instance-modify-retry-
|
|
9
|
-
import { RDSProvider } from "./rds-provider-
|
|
10
|
-
import { NeptuneProvider } from "./neptune-provider-
|
|
11
|
-
import { ASGProvider } from "./asg-provider-
|
|
5
|
+
import { $ as sendTtlWaitingOutRateLimit, A as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, B as deleteTableWithIndexBusyRetry, Ba as s3BucketArn, Bc as passedNoEchoParametersOf, Bi as isRefusedByName, C as planContributorInsightsOp, Cl as recordAttributeIdCopy, Ct as enclosingDeadlineExpired, D as reverseMapTableContributorInsights, Da as reDisableInstanceApiTermination, Dc as lambdaFunctionNameForMask, E as reverseMapIndexContributorInsights, Ea as observeThenDisableInstanceApiTermination, Ec as canonicalLambdaFunctionName, El as carriesSecretMask, Eo as parseWebACLArn, F as resolveDynamoDbDeleteBudgetClock, Fd as displayAssemblyPath, G as readbackVectorIndexes, Gi as readTagList, Gn as isRedactedRecordedValue, H as relayedIndexBusyDelete, Ha as s3BucketDualStackDomainName, Hi as DBPROXY_TAGS_WHAT, Hn as getCurrentProducerRegions, I as resolveDynamoDbDeleteBudgetMs, Id as renderAssemblyPathEscape, Ii as acquireIdempotencyToken, Io as accountArgs, J as vectorIndexesShapeDetail, Jc as recordReferenceProvenanceEntry, Ji as tagPlanWarning, Js as withoutSilentDropProperties, Jt as getCurrentNestedStackContext, K as vectorIndexesForCreate, Kc as markSameGenerationBag, Ki as refuseMalformedDesiredTags, Kn as redactedDeleteAddressFields, Ks as findSilentDropProperties, L as DELETE_INDEX_WAIT_PROCEED_NOTE, Ld as resolveAssemblyPath, M as beginDeleteWait, Mi as earliestDefined, N as compensateRemovedDeletionProtection, O as stripIndexContributorInsights, Oa as reEnableInstanceApiTermination, Oc as sameLambdaFunctionAddress, P as deleteBudgetKey, Pd as describeFileReadFailure, Pi as reserveStackCreateToken, Q as readTtlSpec, Qc as hasMaskableValues, R as INDEX_SETTLE_POLL_INTERVAL_MS, Rr as refuseRestoreFromItself, S as indexDeclaresContributorInsights, Sa as markWaitAbandoned, Sc as blockDeviceMappingsDifferOnlyInDeleteOnTermination, Sl as physicalNameCopiesOf, T as readContributorInsightsSpec, Ta as isTerminationProtectionPropagationError, Tc as emrClusterInstancesReplaced, U as waitForIndexesSettled, Ua as s3BucketRegionalDomainName, Ui as DBPROXY_TAG_OPTIONS, Ur as replacedDeleteFailureVerdict, Us as withheldAccountClause, V as maskedLogger, Va as s3BucketDomainName, Vi as markDeleteStarted, Vr as getStackRecords, Vt as getNestedRevertRun, W as planVectorIndexUpdates, Wa as s3BucketWebsiteUrl, Wi as planTagDiff, Wn as REDACTED_DELETE_ADDRESS_SKIP_REASON, Wt as revertNestedChildFromJournal, X as isTtlRateLimited, Xi as stringifyIfAssigned, Y as isTtlAlreadyDisabled, Ya as outputReferenceProvenanceOf, Yc as snapshotPassProvenance, Yi as definedAttributes, Yt as withNestedStackContext, Z as planTimeToLive, _ as streamMemberRefusals, _c as requireConfigString, _d as decodeListingKey, _t as renderNestedTemplateTreeDefect, ac as isWarmThroughputDecrease, an as chunks, at as markRefusedBeforeApplying, b as CONTRIBUTOR_INSIGHTS_KEY, ba as withIndeterminateGuard, bd as canonicalizeRegion, c as DynamoDBGlobalTableProvider, cc as coerceCfnBoolean, cn as withApiLimit, d as declaredStreamPolicyMember, dc as configIntegerRefusal, ds as refuseMalformedNestedChildOutputs, et as ECR_AUTO_DELETE_IMAGES_TAG, f as declaredStreamTagsMember, fa as slowCcOperationTimeoutMs, fc as configStringRefusal, fl as withoutPhysicalNameCopies, g as streamDeclaresTags, gc as requireConfigObject, gt as listNestedTemplateRows, h as streamDeclaresPolicy, hc as requireConfigArray, ho as getAccountInfo, ht as isAbsoluteAssetPath, ic as coerceWarmThroughput$1, it as getPriorAttempts, j as DYNAMODB_DELETE_POLL_COST_MS, ja as isUsableAttemptedName, js as refuseMalformedResourcesForDestroy, k as DYNAMODB_DELETE_DEADLINE_MARGIN_MS, ko as passedParameterClassesOf, l as STREAM_POLICY_KEY, lc as coerceCfnInteger, m as reverseMapStreamPolicy, ma as unchangedBehindSecretReference, mc as replayWarn, ml as dynamicReferenceTokens, mt as findNestedTemplateTreeDefect, na as waitForLambdaFunctionActive, nt as hasCdkAutoDeleteTag, oa as getCurrentResourceSecrets, oc as toCfnInteger, on as isAccessDeniedError, p as planStreamMemberOps, pa as onlySecretReferencesDiffer, pc as readConfigString, pu as stringifyValue, q as vectorIndexesSettled, qc as redactForState, qi as tagMapAsList, qn as redactedDeleteAddressSkip, rc as WARM_THROUGHPUT_MEMBERS, rt as isTruthyCfnBoolean, sc as toFiniteNumber, sn as lookupEachName, t as DeployEngine, tt as S3_AUTO_DELETE_OBJECTS_TAG, u as STREAM_TAGS_KEY, uc as configBooleanRefusal, uu as timePhase, v as streamPolicyMatchesDeclared, vu as rewriteTemplateAssetReferences, w as planIndexContributorInsightsOps, wa as ec2InstanceProtectionSite, wc as ecsServiceLaunchTypeSetOrChanged, wt as enclosingDeadlineRemainingMs, x as contributorInsightsRefusals, xa as isWaitAbandonedError, xc as withRetry, xd as derivePartitionAndUrlSuffix, xl as recoverMaskedOutput, y as streamTagsMatchDeclared, ya as deleteSkipReason, yi as secretNamedAttributeNamesOf, z as TABLE_INDEX_NOUN, za as isSettledInstanceState, zr as awaitInFlightSibling } from "./deploy-engine-pGWgnV-6.js";
|
|
6
|
+
import { a as IamCreateClientCache, i as isEntityAlreadyExists, n as collectInlinePolicyNamesManagedBySiblings, r as iamEntityLeftByThisCreate, t as IAMRoleProvider } from "./iam-role-provider-z7poP-9w.js";
|
|
7
|
+
import { a as resolveSecretDerivedPrincipals, i as isResolvableSecretPrincipalList, n as runDestroyForStack, o as canonicalizeIpProtocolValue, r as holdsUnprovenSecretPrincipalToken, s as resolvedResourceTimeoutMs, t as canonicalizeIpv4Cidr } from "./program-lQLBOfU6.js";
|
|
8
|
+
import { n as modifyDbInstanceWhenAvailable } from "./db-instance-modify-retry-DCLA_p9I.js";
|
|
9
|
+
import { RDSProvider } from "./rds-provider-BenOBQ9u.js";
|
|
10
|
+
import { NeptuneProvider } from "./neptune-provider-DzedCIWf.js";
|
|
11
|
+
import { ASGProvider } from "./asg-provider-DIQU27yo.js";
|
|
12
12
|
import { createHash, randomUUID } from "node:crypto";
|
|
13
13
|
import { CreateBucketCommand, CreateBucketMetadataConfigurationCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketEncryptionCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetadataConfigurationCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketOwnershipControlsCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAbacCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketMetadataConfigurationCommand, GetBucketNotificationConfigurationCommand, GetBucketOwnershipControlsCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListBucketsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, PutBucketAbacCommand, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client, UpdateBucketMetadataAnnotationTableConfigurationCommand, UpdateBucketMetadataInventoryTableConfigurationCommand, UpdateBucketMetadataJournalTableConfigurationCommand } from "@aws-sdk/client-s3";
|
|
14
14
|
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, UpdateGroupCommand, UpdateLoginProfileCommand, UpdateUserCommand } from "@aws-sdk/client-iam";
|
|
@@ -44,7 +44,7 @@ import * as zlib from "node:zlib";
|
|
|
44
44
|
import { ApiGatewayV2Client, CreateApiCommand, CreateAuthorizerCommand as CreateAuthorizerCommand$1, CreateIntegrationCommand, CreateRouteCommand as CreateRouteCommand$1, CreateStageCommand as CreateStageCommand$1, DeleteAccessLogSettingsCommand, DeleteApiCommand, DeleteAuthorizerCommand as DeleteAuthorizerCommand$1, DeleteCorsConfigurationCommand, DeleteIntegrationCommand as DeleteIntegrationCommand$1, DeleteRouteCommand as DeleteRouteCommand$1, DeleteRouteRequestParameterCommand, DeleteRouteSettingsCommand, DeleteStageCommand as DeleteStageCommand$1, GetApiCommand, GetApisCommand, GetAuthorizerCommand as GetAuthorizerCommand$1, GetAuthorizersCommand as GetAuthorizersCommand$1, GetIntegrationCommand, GetIntegrationsCommand, GetRouteCommand, GetStageCommand as GetStageCommand$1, NotFoundException as NotFoundException$3, TagResourceCommand as TagResourceCommand$14, UntagResourceCommand as UntagResourceCommand$14, UpdateApiCommand, UpdateAuthorizerCommand as UpdateAuthorizerCommand$1, UpdateIntegrationCommand, UpdateRouteCommand, UpdateStageCommand as UpdateStageCommand$1 } from "@aws-sdk/client-apigatewayv2";
|
|
45
45
|
import { CreateStateMachineCommand, DeleteStateMachineCommand, DescribeStateMachineCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$12, SFNClient, StateMachineDoesNotExist, TagResourceCommand as TagResourceCommand$15, UntagResourceCommand as UntagResourceCommand$15, UpdateStateMachineCommand } from "@aws-sdk/client-sfn";
|
|
46
46
|
import { CreateClusterCommand, CreateServiceCommand, DeleteClusterCommand, DeleteServiceCommand, DeregisterTaskDefinitionCommand, DescribeClustersCommand, DescribeServicesCommand, DescribeTaskDefinitionCommand, ECSClient, ListTaskDefinitionsCommand, PutClusterCapacityProvidersCommand, RegisterTaskDefinitionCommand, TagResourceCommand as TagResourceCommand$16, UntagResourceCommand as UntagResourceCommand$16, UpdateClusterCommand, UpdateServiceCommand, waitUntilServicesStable } from "@aws-sdk/client-ecs";
|
|
47
|
-
import { AddTagsToResourceCommand as AddTagsToResourceCommand$3, CreateDBClusterCommand as CreateDBClusterCommand$1, CreateDBInstanceCommand as CreateDBInstanceCommand$1, CreateDBSubnetGroupCommand as CreateDBSubnetGroupCommand$1, DeleteDBClusterCommand as DeleteDBClusterCommand$1, DeleteDBInstanceCommand as DeleteDBInstanceCommand$1, DeleteDBSubnetGroupCommand as DeleteDBSubnetGroupCommand$1, DescribeDBClustersCommand as DescribeDBClustersCommand$1, DescribeDBInstancesCommand as DescribeDBInstancesCommand$1, DescribeDBSubnetGroupsCommand as DescribeDBSubnetGroupsCommand$1, DescribeGlobalClustersCommand as DescribeGlobalClustersCommand$1, DocDBClient, ListTagsForResourceCommand as ListTagsForResourceCommand$13, ModifyDBClusterCommand as ModifyDBClusterCommand$1, ModifyDBInstanceCommand as ModifyDBInstanceCommand$1, ModifyDBSubnetGroupCommand as ModifyDBSubnetGroupCommand$1, RemoveFromGlobalClusterCommand as RemoveFromGlobalClusterCommand$1, RemoveTagsFromResourceCommand as RemoveTagsFromResourceCommand$3 } from "@aws-sdk/client-docdb";
|
|
47
|
+
import { AddTagsToResourceCommand as AddTagsToResourceCommand$3, CreateDBClusterCommand as CreateDBClusterCommand$1, CreateDBInstanceCommand as CreateDBInstanceCommand$1, CreateDBSubnetGroupCommand as CreateDBSubnetGroupCommand$1, DeleteDBClusterCommand as DeleteDBClusterCommand$1, DeleteDBInstanceCommand as DeleteDBInstanceCommand$1, DeleteDBSubnetGroupCommand as DeleteDBSubnetGroupCommand$1, DescribeDBClusterSnapshotsCommand, DescribeDBClustersCommand as DescribeDBClustersCommand$1, DescribeDBInstancesCommand as DescribeDBInstancesCommand$1, DescribeDBSubnetGroupsCommand as DescribeDBSubnetGroupsCommand$1, DescribeGlobalClustersCommand as DescribeGlobalClustersCommand$1, DocDBClient, ListTagsForResourceCommand as ListTagsForResourceCommand$13, ModifyDBClusterCommand as ModifyDBClusterCommand$1, ModifyDBInstanceCommand as ModifyDBInstanceCommand$1, ModifyDBSubnetGroupCommand as ModifyDBSubnetGroupCommand$1, RemoveFromGlobalClusterCommand as RemoveFromGlobalClusterCommand$1, RemoveTagsFromResourceCommand as RemoveTagsFromResourceCommand$3, RestoreDBClusterFromSnapshotCommand, RestoreDBClusterToPointInTimeCommand } from "@aws-sdk/client-docdb";
|
|
48
48
|
import { CreateWebACLCommand, DeleteWebACLCommand, GetWebACLCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$14, TagResourceCommand as TagResourceCommand$17, UntagResourceCommand as UntagResourceCommand$17, UpdateWebACLCommand, WAFNonexistentItemException, WAFV2Client } from "@aws-sdk/client-wafv2";
|
|
49
49
|
import { AddCustomAttributesCommand, CognitoIdentityProviderClient, CreateUserPoolCommand, DeleteUserPoolCommand, DescribeUserPoolCommand, GetUserPoolMfaConfigCommand, ListUserPoolsCommand, ResourceNotFoundException as ResourceNotFoundException$11, SetUserPoolMfaConfigCommand, UntagResourceCommand as UntagResourceCommand$18, UpdateUserPoolCommand } from "@aws-sdk/client-cognito-identity-provider";
|
|
50
50
|
import { CreateHttpNamespaceCommand, CreatePrivateDnsNamespaceCommand, CreatePublicDnsNamespaceCommand, CreateServiceCommand as CreateServiceCommand$1, DeleteNamespaceCommand, DeleteServiceAttributesCommand, DeleteServiceCommand as DeleteServiceCommand$1, GetNamespaceCommand, GetOperationCommand, GetServiceAttributesCommand, GetServiceCommand, ListNamespacesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$15, NamespaceNotFound, ResourceInUse, ServiceDiscoveryClient, ServiceNotFound, TagResourceCommand as TagResourceCommand$18, UntagResourceCommand as UntagResourceCommand$19, UpdateHttpNamespaceCommand, UpdatePrivateDnsNamespaceCommand, UpdatePublicDnsNamespaceCommand, UpdateServiceAttributesCommand, UpdateServiceCommand as UpdateServiceCommand$1 } from "@aws-sdk/client-servicediscovery";
|
|
@@ -17402,6 +17402,7 @@ function routeTargetParams(properties) {
|
|
|
17402
17402
|
EgressOnlyInternetGatewayId: properties["EgressOnlyInternetGatewayId"] ?? void 0,
|
|
17403
17403
|
InstanceId: properties["InstanceId"] ?? void 0,
|
|
17404
17404
|
NetworkInterfaceId: properties["NetworkInterfaceId"] ?? void 0,
|
|
17405
|
+
OdbNetworkArn: properties["OdbNetworkArn"] ?? void 0,
|
|
17405
17406
|
TransitGatewayId: properties["TransitGatewayId"] ?? void 0,
|
|
17406
17407
|
VpcEndpointId: properties["VpcEndpointId"] ?? void 0,
|
|
17407
17408
|
VpcPeeringConnectionId: properties["VpcPeeringConnectionId"] ?? void 0
|
|
@@ -17723,6 +17724,7 @@ var EC2Provider = class {
|
|
|
17723
17724
|
"EgressOnlyInternetGatewayId",
|
|
17724
17725
|
"InstanceId",
|
|
17725
17726
|
"NetworkInterfaceId",
|
|
17727
|
+
"OdbNetworkArn",
|
|
17726
17728
|
"TransitGatewayId",
|
|
17727
17729
|
"VpcEndpointId",
|
|
17728
17730
|
"VpcPeeringConnectionId"
|
|
@@ -21428,6 +21430,7 @@ var EC2Provider = class {
|
|
|
21428
21430
|
if (route.LocalGatewayId !== void 0) result["LocalGatewayId"] = route.LocalGatewayId;
|
|
21429
21431
|
if (route.CarrierGatewayId !== void 0) result["CarrierGatewayId"] = route.CarrierGatewayId;
|
|
21430
21432
|
if (route.CoreNetworkArn !== void 0) result["CoreNetworkArn"] = route.CoreNetworkArn;
|
|
21433
|
+
if (route.OdbNetworkArn !== void 0) result["OdbNetworkArn"] = route.OdbNetworkArn;
|
|
21431
21434
|
return result;
|
|
21432
21435
|
}
|
|
21433
21436
|
async readSubnetRouteTableAssociationCurrentState(physicalId) {
|
|
@@ -27226,6 +27229,10 @@ function isEcsErrorNamed(error, names) {
|
|
|
27226
27229
|
return typeof name === "string" && names.includes(name);
|
|
27227
27230
|
}
|
|
27228
27231
|
const settleRolloutDelays = { sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)) };
|
|
27232
|
+
const serviceInactiveWait = {
|
|
27233
|
+
sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
|
|
27234
|
+
now: () => Date.now()
|
|
27235
|
+
};
|
|
27229
27236
|
function requestedRolloutOf(service) {
|
|
27230
27237
|
if (!service) return void 0;
|
|
27231
27238
|
const primary = service.deployments?.find((d) => d.status === "PRIMARY");
|
|
@@ -27283,6 +27290,23 @@ function rolloutSupersededBy(requested, settled) {
|
|
|
27283
27290
|
function markNotGoneOnNotFoundClass$1(error, wrapped) {
|
|
27284
27291
|
return error instanceof Error && error.name.includes("NotFound") ? markNotGone(wrapped) : wrapped;
|
|
27285
27292
|
}
|
|
27293
|
+
function gatewayConnectorsGateKey(value) {
|
|
27294
|
+
if (!Array.isArray(value)) return JSON.stringify(value ?? null);
|
|
27295
|
+
return JSON.stringify(value.map((connector) => {
|
|
27296
|
+
if (typeof connector !== "object" || connector === null || Array.isArray(connector)) return connector;
|
|
27297
|
+
const filters = connector["Filters"];
|
|
27298
|
+
if (typeof filters !== "object" || filters === null || Array.isArray(filters)) return connector;
|
|
27299
|
+
const accessTypes = filters["AccessTypes"];
|
|
27300
|
+
if (!Array.isArray(accessTypes)) return connector;
|
|
27301
|
+
return {
|
|
27302
|
+
...connector,
|
|
27303
|
+
Filters: {
|
|
27304
|
+
...filters,
|
|
27305
|
+
AccessTypes: accessTypes.map((v) => JSON.stringify(v) ?? "undefined").sort()
|
|
27306
|
+
}
|
|
27307
|
+
};
|
|
27308
|
+
}));
|
|
27309
|
+
}
|
|
27286
27310
|
var ECSProvider = class {
|
|
27287
27311
|
ecsClient;
|
|
27288
27312
|
taskDefinitionCreateClient;
|
|
@@ -27345,7 +27369,8 @@ var ECSProvider = class {
|
|
|
27345
27369
|
"Role",
|
|
27346
27370
|
"ServiceConnectConfiguration",
|
|
27347
27371
|
"VolumeConfigurations",
|
|
27348
|
-
"VpcLatticeConfigurations"
|
|
27372
|
+
"VpcLatticeConfigurations",
|
|
27373
|
+
"GatewayConnectors"
|
|
27349
27374
|
])]
|
|
27350
27375
|
]);
|
|
27351
27376
|
unhandledByDesign = /* @__PURE__ */ new Map([["AWS::ECS::TaskDefinition", /* @__PURE__ */ new Map([["InferenceAccelerators", "AWS Elastic Inference end-of-life 2024-04; use AWS Inferentia / Trainium accelerator instance families instead"]])]]);
|
|
@@ -27701,7 +27726,8 @@ var ECSProvider = class {
|
|
|
27701
27726
|
serviceConnectConfiguration: this.convertServiceConnectConfiguration(properties["ServiceConnectConfiguration"]),
|
|
27702
27727
|
volumeConfigurations: this.convertServiceVolumeConfigurations(properties["VolumeConfigurations"]),
|
|
27703
27728
|
vpcLatticeConfigurations: this.convertVpcLatticeConfigurations(properties["VpcLatticeConfigurations"]),
|
|
27704
|
-
monitoring: this.convertMonitoringConfiguration(properties["Monitoring"])
|
|
27729
|
+
monitoring: this.convertMonitoringConfiguration(properties["Monitoring"]),
|
|
27730
|
+
gatewayConnectors: this.convertGatewayConnectors(properties["GatewayConnectors"])
|
|
27705
27731
|
}))).service;
|
|
27706
27732
|
if (!service || !service.serviceArn) throw new Error("CreateService did not return service ARN");
|
|
27707
27733
|
log.debug(`Successfully created ECS service ${logicalId}: ${service.serviceArn}`);
|
|
@@ -27908,6 +27934,7 @@ var ECSProvider = class {
|
|
|
27908
27934
|
const volumeConfigurationsInput = JSON.stringify(previousProperties["VolumeConfigurations"] ?? null) !== JSON.stringify(properties["VolumeConfigurations"] ?? null) ? clearOnUpdateRemoval(this.convertServiceVolumeConfigurations(properties["VolumeConfigurations"]), previousProperties["VolumeConfigurations"], []) : void 0;
|
|
27909
27935
|
const vpcLatticeConfigurationsInput = JSON.stringify(previousProperties["VpcLatticeConfigurations"] ?? null) !== JSON.stringify(properties["VpcLatticeConfigurations"] ?? null) ? clearOnUpdateRemoval(this.convertVpcLatticeConfigurations(properties["VpcLatticeConfigurations"]), previousProperties["VpcLatticeConfigurations"], []) : void 0;
|
|
27910
27936
|
const monitoringInput = JSON.stringify(previousProperties["Monitoring"] ?? null) !== JSON.stringify(properties["Monitoring"] ?? null) ? clearOnUpdateRemoval(this.convertMonitoringConfiguration(properties["Monitoring"]), previousProperties["Monitoring"], { metricConfigurations: [] }) : void 0;
|
|
27937
|
+
const gatewayConnectorsInput = gatewayConnectorsGateKey(previousProperties["GatewayConnectors"]) !== gatewayConnectorsGateKey(properties["GatewayConnectors"]) ? this.convertGatewayConnectors(properties["GatewayConnectors"]) : void 0;
|
|
27911
27938
|
const forceNewDeploymentInput = this.resolveForceNewDeployment(properties, previousProperties, log);
|
|
27912
27939
|
const deploymentConfigurationInput = this.resolveDeploymentConfiguration(properties, previousProperties);
|
|
27913
27940
|
try {
|
|
@@ -27934,6 +27961,7 @@ var ECSProvider = class {
|
|
|
27934
27961
|
volumeConfigurations: volumeConfigurationsInput,
|
|
27935
27962
|
vpcLatticeConfigurations: vpcLatticeConfigurationsInput,
|
|
27936
27963
|
monitoring: monitoringInput,
|
|
27964
|
+
gatewayConnectors: gatewayConnectorsInput,
|
|
27937
27965
|
forceNewDeployment: forceNewDeploymentInput
|
|
27938
27966
|
}))).service;
|
|
27939
27967
|
if (service?.serviceArn) await this.applyTagDiff(service.serviceArn, resourceType, logicalId, previousProperties["Tags"], properties["Tags"], log);
|
|
@@ -27969,6 +27997,7 @@ var ECSProvider = class {
|
|
|
27969
27997
|
}
|
|
27970
27998
|
} else cluster = recordedCluster;
|
|
27971
27999
|
let stripped = false;
|
|
28000
|
+
let alreadyDeleted = false;
|
|
27972
28001
|
try {
|
|
27973
28002
|
try {
|
|
27974
28003
|
await client.send(new UpdateServiceCommand({
|
|
@@ -27984,27 +28013,57 @@ var ECSProvider = class {
|
|
|
27984
28013
|
const clientRegion = await client.config.region();
|
|
27985
28014
|
assertRegionMatch(clientRegion, context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
27986
28015
|
this.logger.debug(`ECS service ${physicalId} not found during scale down, skipping deletion`);
|
|
27987
|
-
return;
|
|
27988
|
-
|
|
27989
|
-
throw error;
|
|
28016
|
+
if (!this.isServiceNotActiveException(error)) return;
|
|
28017
|
+
alreadyDeleted = true;
|
|
28018
|
+
} else throw error;
|
|
28019
|
+
}
|
|
28020
|
+
if (!alreadyDeleted) {
|
|
28021
|
+
await client.send(new DeleteServiceCommand({
|
|
28022
|
+
cluster,
|
|
28023
|
+
service: physicalId,
|
|
28024
|
+
force: true
|
|
28025
|
+
}));
|
|
28026
|
+
this.logger.debug(`Successfully deleted ECS service ${logicalId}`);
|
|
27990
28027
|
}
|
|
27991
|
-
await client.send(new DeleteServiceCommand({
|
|
27992
|
-
cluster,
|
|
27993
|
-
service: physicalId,
|
|
27994
|
-
force: true
|
|
27995
|
-
}));
|
|
27996
|
-
this.logger.debug(`Successfully deleted ECS service ${logicalId}`);
|
|
27997
28028
|
} catch (error) {
|
|
27998
28029
|
if (this.isServiceNotFoundException(error)) {
|
|
27999
28030
|
const clientRegion = await client.config.region();
|
|
28000
28031
|
assertRegionMatch(clientRegion, context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
28001
28032
|
this.logger.debug(`ECS service ${physicalId} not found, skipping deletion`);
|
|
28002
|
-
return;
|
|
28033
|
+
if (!this.isServiceNotActiveException(error)) return;
|
|
28034
|
+
} else {
|
|
28035
|
+
const cause = error instanceof Error ? error : void 0;
|
|
28036
|
+
const wrapped = this.wrapCaughtError(maskerOrIdentity(context?.maskSecrets), error, (text) => new ProvisioningError(`Failed to delete ECS service ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
28037
|
+
const failure = this.isClusterNotFoundException(error) ? wrapped : markNotGoneOnNotFoundClass$1(error, wrapped);
|
|
28038
|
+
throw stripped ? markDeleteStarted(failure) : failure;
|
|
28003
28039
|
}
|
|
28004
|
-
|
|
28005
|
-
|
|
28006
|
-
|
|
28007
|
-
|
|
28040
|
+
}
|
|
28041
|
+
await this.waitForServiceInactive(logicalId, physicalId, cluster, resourceType);
|
|
28042
|
+
}
|
|
28043
|
+
async waitForServiceInactive(logicalId, physicalId, cluster, resourceType) {
|
|
28044
|
+
const client = this.getClient();
|
|
28045
|
+
const maxWaitSeconds = Math.max(600, (resolvedResourceTimeoutMs("AWS::ECS::Service") ?? 0) / 1e3);
|
|
28046
|
+
const deadline = serviceInactiveWait.now() + maxWaitSeconds * 1e3;
|
|
28047
|
+
let delay = 2e3;
|
|
28048
|
+
let lastStatus = "unknown";
|
|
28049
|
+
for (;;) {
|
|
28050
|
+
try {
|
|
28051
|
+
const out = await client.send(new DescribeServicesCommand({
|
|
28052
|
+
cluster,
|
|
28053
|
+
services: [physicalId]
|
|
28054
|
+
}));
|
|
28055
|
+
if ((out?.failures ?? []).some((failure) => failure.reason === "MISSING")) return;
|
|
28056
|
+
const status = out?.services?.[0]?.status;
|
|
28057
|
+
if (status === "INACTIVE") return;
|
|
28058
|
+
lastStatus = status ?? "unknown";
|
|
28059
|
+
} catch (error) {
|
|
28060
|
+
if (this.isClusterNotFoundException(error)) return;
|
|
28061
|
+
const readFailure = new ProvisioningError(`Failed to confirm ECS service ${logicalId} deletion: ${error instanceof Error ? error.name : "unknown error"}`, resourceType, logicalId, physicalId, error instanceof Error ? error : void 0);
|
|
28062
|
+
throw markDeleteStarted(readFailure);
|
|
28063
|
+
}
|
|
28064
|
+
if (serviceInactiveWait.now() >= deadline) throw markNonRetryable(markDeleteStarted(new ProvisioningError(`ECS service ${logicalIdShown(logicalId)} was deleted but did not reach INACTIVE within ${maxWaitSeconds}s (last status: ${lastStatus}). Re-run once the service is INACTIVE, or raise the limit with --resource-timeout AWS::ECS::Service=${commandHole("duration")}.`, resourceType, logicalId, physicalId)));
|
|
28065
|
+
await serviceInactiveWait.sleep(delay);
|
|
28066
|
+
delay = Math.min(delay * 2, 1e4);
|
|
28008
28067
|
}
|
|
28009
28068
|
}
|
|
28010
28069
|
async getServiceAttribute(physicalId, attributeName) {
|
|
@@ -28477,6 +28536,10 @@ var ECSProvider = class {
|
|
|
28477
28536
|
if (!items) return void 0;
|
|
28478
28537
|
return pascalToCamelCaseKeys(items);
|
|
28479
28538
|
}
|
|
28539
|
+
convertGatewayConnectors(items) {
|
|
28540
|
+
if (!items) return void 0;
|
|
28541
|
+
return pascalToCamelCaseKeys(items);
|
|
28542
|
+
}
|
|
28480
28543
|
convertMonitoringConfiguration(config) {
|
|
28481
28544
|
if (!config) return void 0;
|
|
28482
28545
|
return pascalToCamelCaseKeys(config);
|
|
@@ -28546,6 +28609,9 @@ var ECSProvider = class {
|
|
|
28546
28609
|
if (error instanceof Error) return error.name === "ServiceNotFoundException" || error.name === "ServiceNotActiveException" || error.message.includes("service not found") || error.message.includes("Service not found");
|
|
28547
28610
|
return false;
|
|
28548
28611
|
}
|
|
28612
|
+
isServiceNotActiveException(error) {
|
|
28613
|
+
return error instanceof Error && error.name === "ServiceNotActiveException";
|
|
28614
|
+
}
|
|
28549
28615
|
getDriftUnknownPaths(resourceType) {
|
|
28550
28616
|
if (resourceType === "AWS::ECS::Service") return [
|
|
28551
28617
|
"ServiceConnectConfiguration",
|
|
@@ -28553,7 +28619,8 @@ var ECSProvider = class {
|
|
|
28553
28619
|
"VpcLatticeConfigurations",
|
|
28554
28620
|
"Monitoring",
|
|
28555
28621
|
"ForceNewDeployment",
|
|
28556
|
-
"Role"
|
|
28622
|
+
"Role",
|
|
28623
|
+
"GatewayConnectors"
|
|
28557
28624
|
];
|
|
28558
28625
|
return [];
|
|
28559
28626
|
}
|
|
@@ -31694,6 +31761,82 @@ function instanceAttributes(instance) {
|
|
|
31694
31761
|
function isDbIdentifier(id) {
|
|
31695
31762
|
return id.length <= 63 && /^[A-Za-z](?:-?[A-Za-z0-9])*$/.test(id);
|
|
31696
31763
|
}
|
|
31764
|
+
const ZONED_TIMESTAMP = /^\d{4}-\d{2}-\d{2}[T ]\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:z|[+-]\d{2}:?\d{2})$/i;
|
|
31765
|
+
function readDocDBClusterRestore(properties, resourceType, logicalId) {
|
|
31766
|
+
const refuse = (reason) => {
|
|
31767
|
+
throw markNonRetryable(new ProvisioningError(safeMsg`DocDB DBCluster ${logicalId}: ${reason}, as CloudFormation requires; nothing was changed.`, resourceType, logicalId));
|
|
31768
|
+
};
|
|
31769
|
+
const identifier = (key) => {
|
|
31770
|
+
const value = properties[key];
|
|
31771
|
+
if (value == null) return void 0;
|
|
31772
|
+
return typeof value === "string" ? value || void 0 : refuse(`${key} must be a string`);
|
|
31773
|
+
};
|
|
31774
|
+
const snapshotIdentifier = identifier("SnapshotIdentifier");
|
|
31775
|
+
const sourceDBClusterIdentifier = identifier("SourceDBClusterIdentifier");
|
|
31776
|
+
if (snapshotIdentifier !== void 0 && sourceDBClusterIdentifier !== void 0) return refuse("SnapshotIdentifier and SourceDBClusterIdentifier cannot both be set");
|
|
31777
|
+
if (sourceDBClusterIdentifier === void 0) return snapshotIdentifier === void 0 ? void 0 : {
|
|
31778
|
+
kind: "snapshot",
|
|
31779
|
+
snapshotIdentifier
|
|
31780
|
+
};
|
|
31781
|
+
const declaredTime = properties["RestoreToTime"];
|
|
31782
|
+
let restoreToTime;
|
|
31783
|
+
if (declaredTime != null && declaredTime !== "") {
|
|
31784
|
+
restoreToTime = typeof declaredTime === "string" && ZONED_TIMESTAMP.test(declaredTime) ? new Date(declaredTime) : void 0;
|
|
31785
|
+
if (restoreToTime === void 0 || Number.isNaN(restoreToTime.getTime())) return refuse("RestoreToTime must be a timestamp with a time zone, such as 2026-01-01T00:00:00Z");
|
|
31786
|
+
}
|
|
31787
|
+
const declaredLatest = properties["UseLatestRestorableTime"];
|
|
31788
|
+
const latest = declaredLatest == null ? false : coerceCfnBoolean(declaredLatest);
|
|
31789
|
+
if (latest === void 0) return refuse("UseLatestRestorableTime must be a boolean");
|
|
31790
|
+
if (restoreToTime !== void 0 && latest) return refuse("RestoreToTime and UseLatestRestorableTime: true cannot both be set");
|
|
31791
|
+
if (restoreToTime === void 0 && !latest) return refuse("a SourceDBClusterIdentifier restore needs RestoreToTime or UseLatestRestorableTime: true");
|
|
31792
|
+
const restoreType = properties["RestoreType"];
|
|
31793
|
+
if (restoreType != null && typeof restoreType !== "string") return refuse("RestoreType must be a string");
|
|
31794
|
+
return {
|
|
31795
|
+
kind: "point-in-time",
|
|
31796
|
+
sourceDBClusterIdentifier,
|
|
31797
|
+
restoreToTime
|
|
31798
|
+
};
|
|
31799
|
+
}
|
|
31800
|
+
function unusedRestoreKeys(properties, restore) {
|
|
31801
|
+
return (restore?.kind === "point-in-time" ? ["GlobalClusterIdentifier", "AvailabilityZones"] : [
|
|
31802
|
+
"RestoreType",
|
|
31803
|
+
"RestoreToTime",
|
|
31804
|
+
"UseLatestRestorableTime",
|
|
31805
|
+
...restore === void 0 ? [] : ["GlobalClusterIdentifier"]
|
|
31806
|
+
]).filter((key) => properties[key] != null && properties[key] !== "" && properties[key] !== false);
|
|
31807
|
+
}
|
|
31808
|
+
const CLUSTER_AVAILABLE_MAX_WAIT_MS = 18e5;
|
|
31809
|
+
function restoreWaitMs() {
|
|
31810
|
+
const remaining = enclosingDeadlineRemainingMs() - DEADLINE_MARGIN_MS;
|
|
31811
|
+
return Number.isFinite(remaining) ? Math.max(CLUSTER_AVAILABLE_MAX_WAIT_MS, remaining) : CLUSTER_AVAILABLE_MAX_WAIT_MS;
|
|
31812
|
+
}
|
|
31813
|
+
const RESTORE_VALUE_REFUSALS = /* @__PURE__ */ new Set(["InvalidParameterValue", "InvalidParameterCombination"]);
|
|
31814
|
+
function docdbRestoreFollowUp(properties, restore, password, managedPassword) {
|
|
31815
|
+
const nonEmpty = (members) => Object.values(members).some((value) => value !== void 0) ? members : void 0;
|
|
31816
|
+
const retention = numberOrUndefined(properties["BackupRetentionPeriod"]);
|
|
31817
|
+
const windows = {
|
|
31818
|
+
PreferredBackupWindow: properties["PreferredBackupWindow"],
|
|
31819
|
+
PreferredMaintenanceWindow: properties["PreferredMaintenanceWindow"]
|
|
31820
|
+
};
|
|
31821
|
+
const snapshot = restore.kind === "snapshot";
|
|
31822
|
+
return {
|
|
31823
|
+
parity: nonEmpty({
|
|
31824
|
+
DBClusterParameterGroupName: properties["DBClusterParameterGroupName"],
|
|
31825
|
+
...snapshot && {
|
|
31826
|
+
BackupRetentionPeriod: retention,
|
|
31827
|
+
...windows
|
|
31828
|
+
}
|
|
31829
|
+
}),
|
|
31830
|
+
declared: [
|
|
31831
|
+
...snapshot ? [] : [nonEmpty({ BackupRetentionPeriod: retention }), nonEmpty(windows)],
|
|
31832
|
+
nonEmpty({ MasterUserPassword: password }),
|
|
31833
|
+
nonEmpty({
|
|
31834
|
+
ManageMasterUserPassword: managedPassword === true ? true : void 0,
|
|
31835
|
+
MasterUserSecretKmsKeyId: managedPassword === true ? properties["MasterUserSecretKmsKeyId"] : void 0
|
|
31836
|
+
})
|
|
31837
|
+
].filter((group) => group !== void 0)
|
|
31838
|
+
};
|
|
31839
|
+
}
|
|
31697
31840
|
var DocDBProvider = class {
|
|
31698
31841
|
docdbClient;
|
|
31699
31842
|
createClient;
|
|
@@ -31713,6 +31856,11 @@ var DocDBProvider = class {
|
|
|
31713
31856
|
"MasterUserPassword",
|
|
31714
31857
|
"RotateMasterUserPassword",
|
|
31715
31858
|
"GlobalClusterIdentifier",
|
|
31859
|
+
"SnapshotIdentifier",
|
|
31860
|
+
"SourceDBClusterIdentifier",
|
|
31861
|
+
"RestoreToTime",
|
|
31862
|
+
"RestoreType",
|
|
31863
|
+
"UseLatestRestorableTime",
|
|
31716
31864
|
...DOCDB_CLUSTER_KEPT_ON_REMOVAL,
|
|
31717
31865
|
...DOCDB_CLUSTER_UNMEASURED_ON_REMOVAL
|
|
31718
31866
|
])], ["AWS::DocDB::DBInstance", /* @__PURE__ */ new Set([
|
|
@@ -31750,7 +31898,12 @@ var DocDBProvider = class {
|
|
|
31750
31898
|
"NetworkType",
|
|
31751
31899
|
"RotateMasterUserPassword",
|
|
31752
31900
|
"ServerlessV2ScalingConfiguration",
|
|
31753
|
-
"StorageType"
|
|
31901
|
+
"StorageType",
|
|
31902
|
+
"RestoreToTime",
|
|
31903
|
+
"RestoreType",
|
|
31904
|
+
"SnapshotIdentifier",
|
|
31905
|
+
"SourceDBClusterIdentifier",
|
|
31906
|
+
"UseLatestRestorableTime"
|
|
31754
31907
|
])], ["AWS::DocDB::DBInstance", /* @__PURE__ */ new Set([
|
|
31755
31908
|
"DBInstanceIdentifier",
|
|
31756
31909
|
"DBInstanceClass",
|
|
@@ -31821,43 +31974,75 @@ var DocDBProvider = class {
|
|
|
31821
31974
|
this.logger.warn(safeMsg`${logicalId} (${resourceType}): the recorded GlobalClusterIdentifier is unusable, so it is not sent.`);
|
|
31822
31975
|
}
|
|
31823
31976
|
const globalClusterId = docdbGlobalClusterId(properties["GlobalClusterIdentifier"]);
|
|
31977
|
+
const restore = readDocDBClusterRestore(properties, resourceType, logicalId);
|
|
31978
|
+
const unused = unusedRestoreKeys(properties, restore);
|
|
31979
|
+
if (unused.length > 0) {
|
|
31980
|
+
const call = restore === void 0 ? "create" : restore.kind === "snapshot" ? "snapshot restore" : "point-in-time restore";
|
|
31981
|
+
this.logger.warn(safeMsg`${logicalId} (${resourceType}): this ${call} does not use ${unused.join(", ")}, as in CloudFormation.`);
|
|
31982
|
+
}
|
|
31824
31983
|
const dbClusterIdentifier = properties["DBClusterIdentifier"] || generatedNameFor("AWS::DocDB::DBCluster", logicalId);
|
|
31984
|
+
if (!String(properties["SourceDBClusterIdentifier"]).startsWith("arn:")) refuseRestoreFromItself(resourceType, properties, dbClusterIdentifier, logicalId, { region: this.providerRegion });
|
|
31985
|
+
const port = properties["Port"] != null ? Number(properties["Port"]) : void 0;
|
|
31986
|
+
const kmsKeyId = properties["KmsKeyId"];
|
|
31987
|
+
const sharedInput = {
|
|
31988
|
+
DBClusterIdentifier: dbClusterIdentifier,
|
|
31989
|
+
VpcSecurityGroupIds: properties["VpcSecurityGroupIds"],
|
|
31990
|
+
DBSubnetGroupName: properties["DBSubnetGroupName"],
|
|
31991
|
+
KmsKeyId: kmsKeyId,
|
|
31992
|
+
DeletionProtection: properties["DeletionProtection"],
|
|
31993
|
+
CopyTagsToSnapshot: properties["CopyTagsToSnapshot"],
|
|
31994
|
+
NetworkType: properties["NetworkType"],
|
|
31995
|
+
StorageType: properties["StorageType"],
|
|
31996
|
+
...logTypes !== void 0 && logTypes.length > 0 && { EnableCloudwatchLogsExports: logTypes },
|
|
31997
|
+
...scaling != null && { ServerlessV2ScalingConfiguration: scaling },
|
|
31998
|
+
...tags.length > 0 && { Tags: tags }
|
|
31999
|
+
};
|
|
32000
|
+
const restorePort = port ?? DOCDB_DEFAULT_PORT;
|
|
32001
|
+
if (restore !== void 0) await this.refuseUnencryptedRestoreSource(properties, restore, resourceType, logicalId, mask);
|
|
31825
32002
|
let clusterCreated = false;
|
|
31826
32003
|
let createdResourceId;
|
|
31827
32004
|
try {
|
|
31828
|
-
const response = await this.getCreateClient().send(new CreateDBClusterCommand$1({
|
|
31829
|
-
|
|
32005
|
+
const response = await (restore === void 0 ? this.getCreateClient().send(new CreateDBClusterCommand$1({
|
|
32006
|
+
...sharedInput,
|
|
31830
32007
|
Engine: "docdb",
|
|
31831
32008
|
EngineVersion: properties["EngineVersion"],
|
|
31832
32009
|
MasterUsername: properties["MasterUsername"],
|
|
31833
32010
|
MasterUserPassword: password,
|
|
31834
|
-
Port:
|
|
31835
|
-
VpcSecurityGroupIds: properties["VpcSecurityGroupIds"],
|
|
31836
|
-
DBSubnetGroupName: properties["DBSubnetGroupName"],
|
|
32011
|
+
Port: port,
|
|
31837
32012
|
StorageEncrypted: properties["StorageEncrypted"],
|
|
31838
|
-
|
|
31839
|
-
BackupRetentionPeriod: properties["BackupRetentionPeriod"] != null ? Number(properties["BackupRetentionPeriod"]) : void 0,
|
|
32013
|
+
BackupRetentionPeriod: numberOrUndefined(properties["BackupRetentionPeriod"]),
|
|
31840
32014
|
PreferredBackupWindow: properties["PreferredBackupWindow"],
|
|
31841
32015
|
PreferredMaintenanceWindow: properties["PreferredMaintenanceWindow"],
|
|
31842
32016
|
DBClusterParameterGroupName: properties["DBClusterParameterGroupName"],
|
|
31843
|
-
DeletionProtection: properties["DeletionProtection"],
|
|
31844
32017
|
AvailabilityZones: properties["AvailabilityZones"],
|
|
31845
|
-
CopyTagsToSnapshot: properties["CopyTagsToSnapshot"],
|
|
31846
32018
|
ManageMasterUserPassword: managedPassword,
|
|
31847
32019
|
MasterUserSecretKmsKeyId: properties["MasterUserSecretKmsKeyId"],
|
|
31848
|
-
|
|
31849
|
-
|
|
31850
|
-
...
|
|
31851
|
-
|
|
31852
|
-
|
|
31853
|
-
|
|
31854
|
-
|
|
32020
|
+
...globalClusterId !== void 0 && { GlobalClusterIdentifier: globalClusterId }
|
|
32021
|
+
})) : restore.kind === "snapshot" ? this.getCreateClient().send(new RestoreDBClusterFromSnapshotCommand({
|
|
32022
|
+
...sharedInput,
|
|
32023
|
+
SnapshotIdentifier: restore.snapshotIdentifier,
|
|
32024
|
+
Engine: "docdb",
|
|
32025
|
+
EngineVersion: properties["EngineVersion"],
|
|
32026
|
+
Port: restorePort,
|
|
32027
|
+
AvailabilityZones: properties["AvailabilityZones"]
|
|
32028
|
+
})) : this.getCreateClient().send(new RestoreDBClusterToPointInTimeCommand({
|
|
32029
|
+
...sharedInput,
|
|
32030
|
+
SourceDBClusterIdentifier: restore.sourceDBClusterIdentifier,
|
|
32031
|
+
RestoreType: properties["RestoreType"],
|
|
32032
|
+
...restore.restoreToTime !== void 0 ? { RestoreToTime: restore.restoreToTime } : { UseLatestRestorableTime: true },
|
|
32033
|
+
Port: restorePort
|
|
32034
|
+
})));
|
|
31855
32035
|
clusterCreated = true;
|
|
31856
32036
|
createdResourceId = response.DBCluster?.DbClusterResourceId;
|
|
31857
32037
|
reportCreatedResource(logicalId, resourceType, dbClusterIdentifier, createdResourceId);
|
|
31858
|
-
|
|
32038
|
+
const cluster = response.DBCluster;
|
|
32039
|
+
if (!cluster) throw new Error("The create call did not return DBCluster");
|
|
31859
32040
|
this.logger.debug(`Successfully created DocDB DBCluster ${logicalId}: ${dbClusterIdentifier}`);
|
|
31860
|
-
|
|
32041
|
+
const followUp = restore === void 0 ? void 0 : docdbRestoreFollowUp(properties, restore, password, managedPassword);
|
|
32042
|
+
const followingUp = followUp !== void 0 && (followUp.parity !== void 0 || followUp.declared.length > 0);
|
|
32043
|
+
if (followingUp || process.env["CDKD_NO_WAIT"] !== "true") await this.waitForClusterAvailable(logicalId, dbClusterIdentifier, restore === void 0 ? void 0 : restoreWaitMs());
|
|
32044
|
+
if (followUp !== void 0 && followingUp) await this.sendRestoreFollowUp(logicalId, resourceType, dbClusterIdentifier, followUp, mask);
|
|
32045
|
+
if (restore !== void 0) this.warnRestoredDifferences(logicalId, resourceType, properties, restore, cluster);
|
|
31861
32046
|
return {
|
|
31862
32047
|
physicalId: dbClusterIdentifier,
|
|
31863
32048
|
attributes: clusterAttributes(await this.describeDBCluster(dbClusterIdentifier))
|
|
@@ -31868,6 +32053,74 @@ var DocDBProvider = class {
|
|
|
31868
32053
|
throw thrown;
|
|
31869
32054
|
}
|
|
31870
32055
|
}
|
|
32056
|
+
async refuseUnencryptedRestoreSource(properties, restore, resourceType, logicalId, mask) {
|
|
32057
|
+
if (coerceCfnBoolean(properties["StorageEncrypted"]) !== true) return;
|
|
32058
|
+
if (properties["KmsKeyId"] != null && properties["KmsKeyId"] !== "") return;
|
|
32059
|
+
let encrypted;
|
|
32060
|
+
try {
|
|
32061
|
+
if (restore.kind === "snapshot") {
|
|
32062
|
+
const snapshot = (await this.getClient().send(new DescribeDBClusterSnapshotsCommand({
|
|
32063
|
+
DBClusterSnapshotIdentifier: restore.snapshotIdentifier,
|
|
32064
|
+
IncludeShared: true,
|
|
32065
|
+
IncludePublic: true
|
|
32066
|
+
}))).DBClusterSnapshots?.[0];
|
|
32067
|
+
if (snapshot === void 0) return;
|
|
32068
|
+
encrypted = snapshot.StorageEncrypted;
|
|
32069
|
+
} else {
|
|
32070
|
+
const source = await this.describeDBCluster(restore.sourceDBClusterIdentifier);
|
|
32071
|
+
if (source === void 0) return;
|
|
32072
|
+
encrypted = source.StorageEncrypted;
|
|
32073
|
+
}
|
|
32074
|
+
} catch (error) {
|
|
32075
|
+
const fault = restore.kind === "snapshot" ? "DBClusterSnapshotNotFoundFault" : "DBClusterNotFoundFault";
|
|
32076
|
+
if (isDocDBNotFoundError(error, fault)) return;
|
|
32077
|
+
throw this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to create DocDB DBCluster ${logicalId}: reading whether the restore source is encrypted failed, so nothing was changed: ${text}`, resourceType, logicalId, void 0, error instanceof Error ? error : void 0));
|
|
32078
|
+
}
|
|
32079
|
+
if (encrypted === true) return;
|
|
32080
|
+
throw markNonRetryable(new ProvisioningError(safeMsg`DocDB DBCluster ${logicalId}: StorageEncrypted is true, but the restore source does not read as encrypted and no KmsKeyId is set. Set KmsKeyId (alias/aws/rds is the default key), as CloudFormation requires; nothing was changed.`, resourceType, logicalId));
|
|
32081
|
+
}
|
|
32082
|
+
async sendRestoreFollowUp(logicalId, resourceType, physicalId, followUp, mask) {
|
|
32083
|
+
const send = (members) => modifyDbInstanceWhenAvailable({
|
|
32084
|
+
send: () => this.getClient().send(new ModifyDBClusterCommand$1({
|
|
32085
|
+
DBClusterIdentifier: physicalId,
|
|
32086
|
+
...members,
|
|
32087
|
+
ApplyImmediately: true
|
|
32088
|
+
})),
|
|
32089
|
+
readStatus: async () => (await this.describeDBCluster(physicalId))?.Status,
|
|
32090
|
+
sleep: (ms) => this.sleep(ms),
|
|
32091
|
+
logger: this.logger,
|
|
32092
|
+
label: "DocDB DBCluster",
|
|
32093
|
+
subject: "cluster",
|
|
32094
|
+
logicalId,
|
|
32095
|
+
remainingMs: enclosingDeadlineRemainingMs()
|
|
32096
|
+
});
|
|
32097
|
+
if (followUp.parity !== void 0) await send(followUp.parity);
|
|
32098
|
+
const refused = async (members) => {
|
|
32099
|
+
try {
|
|
32100
|
+
await send(members);
|
|
32101
|
+
return false;
|
|
32102
|
+
} catch (error) {
|
|
32103
|
+
if (error instanceof Error && RESTORE_VALUE_REFUSALS.has(error.name)) {
|
|
32104
|
+
this.logger.debug(safeMsg`${error.name} after restoring ${logicalId}: ${maskerOrIdentity(mask)(error.message)}`);
|
|
32105
|
+
return true;
|
|
32106
|
+
}
|
|
32107
|
+
throw error;
|
|
32108
|
+
}
|
|
32109
|
+
};
|
|
32110
|
+
const { declared } = followUp;
|
|
32111
|
+
if (declared.length > 0 && await refused(Object.assign({}, ...declared))) {
|
|
32112
|
+
const keys = [];
|
|
32113
|
+
for (const group of declared) if (declared.length === 1 || await refused(group)) keys.push(...Object.keys(group).filter((key) => group[key] !== void 0));
|
|
32114
|
+
if (keys.length > 0) this.logger.warn(safeMsg`${logicalId} (${resourceType}): AWS refused ${keys.join(", ")} after the restore, so the cluster keeps its restored values. The record holds the declared ones, so drift does not report the difference. An update sends a declared BackupRetentionPeriod or window again; the password settings only once the template changes them.`);
|
|
32115
|
+
}
|
|
32116
|
+
if (process.env["CDKD_NO_WAIT"] !== "true") await this.waitForClusterAvailable(logicalId, physicalId, restoreWaitMs());
|
|
32117
|
+
}
|
|
32118
|
+
warnRestoredDifferences(logicalId, resourceType, properties, restore, cluster) {
|
|
32119
|
+
const differs = (key, live) => properties[key] != null && live !== void 0 && String(properties[key]) !== live;
|
|
32120
|
+
const keys = [...differs("MasterUsername", cluster.MasterUsername) ? ["MasterUsername"] : [], ...restore.kind === "point-in-time" && differs("EngineVersion", cluster.EngineVersion) ? ["EngineVersion"] : []];
|
|
32121
|
+
if (keys.length === 0) return;
|
|
32122
|
+
this.logger.warn(safeMsg`${logicalId} (${resourceType}): the restored cluster keeps its source's ${keys.join(", ")}, not the template's, as in CloudFormation: a restore does not set ${keys.length === 1 ? "it" : "them"}. cdkd drift does not report the difference: its baseline is the readback taken at deploy.`);
|
|
32123
|
+
}
|
|
31871
32124
|
async updateDBCluster(logicalId, physicalId, resourceType, properties, previousProperties, context) {
|
|
31872
32125
|
this.logger.debug(`Updating DocDB DBCluster ${logicalId}: ${physicalId}`);
|
|
31873
32126
|
refuseMalformedDesiredTags(properties["Tags"], resourceType, logicalId, physicalId);
|
|
@@ -32525,7 +32778,7 @@ var DocDBProvider = class {
|
|
|
32525
32778
|
remainingMs: enclosingDeadlineRemainingMs()
|
|
32526
32779
|
});
|
|
32527
32780
|
}
|
|
32528
|
-
async waitForClusterAvailable(logicalId, dbClusterIdentifier, maxWaitMs =
|
|
32781
|
+
async waitForClusterAvailable(logicalId, dbClusterIdentifier, maxWaitMs = CLUSTER_AVAILABLE_MAX_WAIT_MS) {
|
|
32529
32782
|
const startTime = Date.now();
|
|
32530
32783
|
let delay = 5e3;
|
|
32531
32784
|
while (Date.now() - startTime < maxWaitMs) {
|
|
@@ -32595,7 +32848,12 @@ var DocDBProvider = class {
|
|
|
32595
32848
|
"AvailabilityZones",
|
|
32596
32849
|
"GlobalClusterIdentifier",
|
|
32597
32850
|
"MasterUserSecretKmsKeyId",
|
|
32598
|
-
"
|
|
32851
|
+
"RestoreToTime",
|
|
32852
|
+
"RestoreType",
|
|
32853
|
+
"RotateMasterUserPassword",
|
|
32854
|
+
"SnapshotIdentifier",
|
|
32855
|
+
"SourceDBClusterIdentifier",
|
|
32856
|
+
"UseLatestRestorableTime"
|
|
32599
32857
|
];
|
|
32600
32858
|
if (resourceType === "AWS::DocDB::DBInstance") return ["CertificateRotationRestart"];
|
|
32601
32859
|
return [];
|
|
@@ -48568,8 +48826,10 @@ var FirehoseProvider = class {
|
|
|
48568
48826
|
"SplunkDestinationConfiguration",
|
|
48569
48827
|
"AmazonOpenSearchServerlessDestinationConfiguration",
|
|
48570
48828
|
"DeliveryStreamEncryptionConfigurationInput",
|
|
48571
|
-
"IcebergDestinationConfiguration"
|
|
48829
|
+
"IcebergDestinationConfiguration",
|
|
48830
|
+
"MSKSourceConfiguration"
|
|
48572
48831
|
])]]);
|
|
48832
|
+
unhandledByDesign = /* @__PURE__ */ new Map([["AWS::KinesisFirehose::DeliveryStream", /* @__PURE__ */ new Map([["DatabaseSourceConfiguration", "Database as a source was a public preview AWS removed on 2025-09-24 (Firehose document history); CreateDeliveryStream refused DeliveryStreamType DatabaseAsSource in every region probed, so an SDK path could not be verified. Stays on Cloud Control"], ["SnowflakeDestinationConfiguration", "Proving the wire shape live needs a real Snowflake account, and the block carries key material (PrivateKey, KeyPassphrase). Stays on Cloud Control"]])]]);
|
|
48573
48833
|
getClient() {
|
|
48574
48834
|
if (!this.client) {
|
|
48575
48835
|
this.client = new FirehoseClient({
|
|
@@ -48592,12 +48852,14 @@ var FirehoseProvider = class {
|
|
|
48592
48852
|
const deliveryStreamName = properties["DeliveryStreamName"];
|
|
48593
48853
|
const deliveryStreamType = properties["DeliveryStreamType"] || "DirectPut";
|
|
48594
48854
|
if (!isReadableTagList(properties["Tags"])) throw markNonRetryable(new ProvisioningError(`Tags of Firehose delivery stream ${logicalId} is not a list of tags with a Key — the delivery stream was not created`, resourceType, logicalId));
|
|
48855
|
+
const mskSource = properties["MSKSourceConfiguration"] === void 0 ? void 0 : mapMskSourceConfiguration(properties["MSKSourceConfiguration"], maskerOrIdentity(context?.maskSecrets), resourceType, logicalId);
|
|
48595
48856
|
let createdStreamName;
|
|
48596
48857
|
try {
|
|
48597
48858
|
const input = {
|
|
48598
48859
|
DeliveryStreamName: deliveryStreamName || generatedNameFor("AWS::KinesisFirehose::DeliveryStream", logicalId),
|
|
48599
48860
|
DeliveryStreamType: deliveryStreamType
|
|
48600
48861
|
};
|
|
48862
|
+
if (mskSource !== void 0) input.MSKSourceConfiguration = mskSource;
|
|
48601
48863
|
if (properties["S3DestinationConfiguration"]) {
|
|
48602
48864
|
const s3Config = properties["S3DestinationConfiguration"];
|
|
48603
48865
|
input.S3DestinationConfiguration = this.mapS3DestinationConfiguration(s3Config);
|
|
@@ -49390,7 +49652,7 @@ var FirehoseProvider = class {
|
|
|
49390
49652
|
return /* @__PURE__ */ new Set([ENCRYPTION_KEY]);
|
|
49391
49653
|
}
|
|
49392
49654
|
}
|
|
49393
|
-
async readCurrentState(physicalId, _logicalId, _resourceType) {
|
|
49655
|
+
async readCurrentState(physicalId, _logicalId, _resourceType, properties) {
|
|
49394
49656
|
let desc;
|
|
49395
49657
|
try {
|
|
49396
49658
|
desc = (await this.getClient().send(new DescribeDeliveryStreamCommand({ DeliveryStreamName: physicalId }))).DeliveryStreamDescription;
|
|
@@ -49411,6 +49673,8 @@ var FirehoseProvider = class {
|
|
|
49411
49673
|
}
|
|
49412
49674
|
const directPut = desc.Source?.DirectPutSourceDescription;
|
|
49413
49675
|
if (directPut?.ThroughputHintInMBs !== void 0) result["DirectPutSourceConfiguration"] = { ThroughputHintInMBs: directPut.ThroughputHintInMBs };
|
|
49676
|
+
const msk = desc.Source?.MSKSourceDescription;
|
|
49677
|
+
if (msk) result["MSKSourceConfiguration"] = mapMskSourceDescriptionToCfn(msk, properties?.["MSKSourceConfiguration"]);
|
|
49414
49678
|
const dest = desc.Destinations?.[0];
|
|
49415
49679
|
if (dest?.ExtendedS3DestinationDescription) result["ExtendedS3DestinationConfiguration"] = mapExtendedS3DescriptionToCfn(dest.ExtendedS3DestinationDescription);
|
|
49416
49680
|
else if (dest?.IcebergDestinationDescription) result["IcebergDestinationConfiguration"] = mapIcebergDescriptionToCfn(dest.IcebergDestinationDescription);
|
|
@@ -49576,6 +49840,47 @@ function mapRedshiftDescriptionToCfn(desc) {
|
|
|
49576
49840
|
if (desc["S3BackupDescription"]) out["S3BackupConfiguration"] = mapS3DescriptionToCfn(desc["S3BackupDescription"]);
|
|
49577
49841
|
return out;
|
|
49578
49842
|
}
|
|
49843
|
+
const EPOCH_MILLIS = /^[+-]?\d+$/;
|
|
49844
|
+
function epochMillisTimestamp(value) {
|
|
49845
|
+
if (typeof value === "number" && Number.isSafeInteger(value)) value = String(value);
|
|
49846
|
+
if (typeof value !== "string" || !EPOCH_MILLIS.test(value)) return void 0;
|
|
49847
|
+
const date = new Date(Number(value));
|
|
49848
|
+
return Number.isNaN(date.getTime()) ? void 0 : date;
|
|
49849
|
+
}
|
|
49850
|
+
function mapMskSourceConfiguration(config, mask, resourceType, logicalId) {
|
|
49851
|
+
const auth = config["AuthenticationConfiguration"];
|
|
49852
|
+
const result = {
|
|
49853
|
+
MSKClusterARN: config["MSKClusterARN"],
|
|
49854
|
+
TopicName: config["TopicName"],
|
|
49855
|
+
AuthenticationConfiguration: auth && {
|
|
49856
|
+
RoleARN: auth["RoleARN"],
|
|
49857
|
+
Connectivity: auth["Connectivity"]
|
|
49858
|
+
}
|
|
49859
|
+
};
|
|
49860
|
+
const raw = config["ReadFromTimestamp"];
|
|
49861
|
+
if (raw !== void 0) {
|
|
49862
|
+
const parsed = epochMillisTimestamp(raw);
|
|
49863
|
+
if (parsed === void 0) throw markNonRetryable(new ProvisioningError(`MSKSourceConfiguration.ReadFromTimestamp of Firehose delivery stream ${logicalId} is not a string of epoch milliseconds: ${JSON.stringify(maskDeep(raw, mask))} — CloudFormation reads it as one and refuses any other spelling, an ISO 8601 date included; write e.g. '1767225600000' for 2026-01-01T00:00:00Z. The delivery stream was not created`, resourceType, logicalId));
|
|
49864
|
+
result.ReadFromTimestamp = parsed;
|
|
49865
|
+
}
|
|
49866
|
+
return result;
|
|
49867
|
+
}
|
|
49868
|
+
function mapMskSourceDescriptionToCfn(desc, recorded) {
|
|
49869
|
+
const out = {};
|
|
49870
|
+
if (desc.MSKClusterARN !== void 0) out["MSKClusterARN"] = desc.MSKClusterARN;
|
|
49871
|
+
if (desc.TopicName !== void 0) out["TopicName"] = desc.TopicName;
|
|
49872
|
+
const auth = desc.AuthenticationConfiguration;
|
|
49873
|
+
if (auth) out["AuthenticationConfiguration"] = {
|
|
49874
|
+
...auth.RoleARN !== void 0 && { RoleARN: auth.RoleARN },
|
|
49875
|
+
...auth.Connectivity !== void 0 && { Connectivity: auth.Connectivity }
|
|
49876
|
+
};
|
|
49877
|
+
const live = desc.ReadFromTimestamp;
|
|
49878
|
+
if (live instanceof Date && !Number.isNaN(live.getTime())) {
|
|
49879
|
+
const spelled = isPlainRecord(recorded) ? recorded["ReadFromTimestamp"] : void 0;
|
|
49880
|
+
out["ReadFromTimestamp"] = epochMillisTimestamp(spelled)?.getTime() === live.getTime() ? spelled : String(live.getTime());
|
|
49881
|
+
}
|
|
49882
|
+
return out;
|
|
49883
|
+
}
|
|
49579
49884
|
function mapIcebergDescriptionToCfn(desc) {
|
|
49580
49885
|
const out = {};
|
|
49581
49886
|
for (const k of [
|
|
@@ -55045,4 +55350,4 @@ var ACMCertificateProvider = class {
|
|
|
55045
55350
|
};
|
|
55046
55351
|
|
|
55047
55352
|
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, LambdaNetworkConnectorProvider, LambdaPermissionProvider, LambdaUrlProvider, LambdaWebFunctionEndpointProvider, LambdaWebFunctionRevisionProvider, 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 };
|
|
55048
|
-
//# sourceMappingURL=provider-classes-
|
|
55353
|
+
//# sourceMappingURL=provider-classes-DTgKRk4t.js.map
|