@go-to-k/cdkd 0.315.0 → 0.317.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-DpNkEibf.js → asg-provider-WornuySB.js} +6 -7
- package/dist/{asg-provider-DpNkEibf.js.map → asg-provider-WornuySB.js.map} +1 -1
- package/dist/{aws-client-defaults-BX9Y_fKp.js → aws-client-defaults-BLXFsfMa.js} +6 -11
- package/dist/aws-client-defaults-BLXFsfMa.js.map +1 -0
- package/dist/{aws-clients-Bu9EMILF.js → aws-clients-DWpHZk2l.js} +6 -8
- package/dist/aws-clients-DWpHZk2l.js.map +1 -0
- package/dist/{aws-failure-text-agWtoyga.js → aws-failure-text-DiHodi76.js} +8 -15
- package/dist/aws-failure-text-DiHodi76.js.map +1 -0
- package/dist/cli.js +6 -10
- package/dist/cli.js.map +1 -1
- package/dist/{created-resource-sink-QECX8C-Z.js → created-resource-sink-BpB3iPvn.js} +43 -67
- package/dist/created-resource-sink-BpB3iPvn.js.map +1 -0
- package/dist/{db-instance-modify-retry-B1NRKBSQ.js → db-instance-modify-retry-CspmK57I.js} +4 -5
- package/dist/{db-instance-modify-retry-B1NRKBSQ.js.map → db-instance-modify-retry-CspmK57I.js.map} +1 -1
- package/dist/{deploy-engine--bCIMkkk.js → deploy-engine-b0rYBotL.js} +423 -633
- package/dist/deploy-engine-b0rYBotL.js.map +1 -0
- package/dist/{iam-role-provider-s5--ZmBZ.js → iam-role-provider-gTpDZhfz.js} +47 -17
- package/dist/iam-role-provider-gTpDZhfz.js.map +1 -0
- package/dist/index.d.ts +1 -102
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/{neptune-provider-BNxotnbp.js → neptune-provider-BfzktOKC.js} +8 -9
- package/dist/{neptune-provider-BNxotnbp.js.map → neptune-provider-BfzktOKC.js.map} +1 -1
- package/dist/{program-CMtAmRyw.js → program-BZ-VVfXu.js} +118 -228
- package/dist/program-BZ-VVfXu.js.map +1 -0
- package/dist/{provider-classes-B8kkAZqJ.js → provider-classes-DGFOKPO9.js} +538 -227
- package/dist/provider-classes-DGFOKPO9.js.map +1 -0
- package/dist/{rds-provider-Cm3dsmFW.js → rds-provider-BUNLNluC.js} +90 -20
- package/dist/rds-provider-BUNLNluC.js.map +1 -0
- package/dist/{version-Caty7J3x.js → version-BkSInxUL.js} +3 -4
- package/dist/{version-Caty7J3x.js.map → version-BkSInxUL.js.map} +1 -1
- package/package.json +8 -8
- package/dist/aws-client-defaults-BX9Y_fKp.js.map +0 -1
- package/dist/aws-clients-Bu9EMILF.js.map +0 -1
- package/dist/aws-failure-text-agWtoyga.js.map +0 -1
- package/dist/created-resource-sink-QECX8C-Z.js.map +0 -1
- package/dist/deploy-engine--bCIMkkk.js.map +0 -1
- package/dist/iam-role-provider-s5--ZmBZ.js.map +0 -1
- package/dist/program-CMtAmRyw.js.map +0 -1
- package/dist/provider-classes-B8kkAZqJ.js.map +0 -1
- package/dist/rds-provider-Cm3dsmFW.js.map +0 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { r as getAwsClients, s as withApiGatewayPacing } from "./aws-clients-
|
|
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-
|
|
3
|
-
import { $ as
|
|
4
|
-
import { c as ambientRegion } from "./aws-client-defaults-
|
|
5
|
-
import { $ as sendTtlWaitingOutRateLimit, A as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, Aa as isUsableAttemptedName, As as refuseMalformedResourcesForDestroy, B as deleteTableWithIndexBusyRetry, Ba as s3BucketDomainName, Bi as markDeleteStarted, Br as getStackRecords, C as planContributorInsightsOp, Ca as ec2InstanceProtectionSite, Cc as ecsServiceLaunchTypeSetOrChanged, Ct as enclosingDeadlineExpired, D as reverseMapTableContributorInsights, Da as reEnableInstanceApiTermination, Dc as sameLambdaFunctionAddress, E as reverseMapIndexContributorInsights, Ea as reDisableInstanceApiTermination, Ec as lambdaFunctionNameForMask, F as resolveDynamoDbDeleteBudgetClock, Fd as renderAssemblyPathEscape, Fi as acquireIdempotencyToken, Fo as accountArgs, G as readbackVectorIndexes, Gc as markSameGenerationBag, Gi as refuseMalformedDesiredTags, Gn as isRedactedRecordedValue, Gs as findSilentDropProperties, H as relayedIndexBusyDelete, Ha as s3BucketRegionalDomainName, Hi as DBPROXY_TAG_OPTIONS, Hn as getCurrentProducerRegions, Hr as replacedDeleteFailureVerdict, Hs as withheldAccountClause, I as resolveDynamoDbDeleteBudgetMs, Id as resolveAssemblyPath, J as vectorIndexesShapeDetail, Ja as outputReferenceProvenanceOf, Jc as snapshotPassProvenance, Ji as definedAttributes, Jt as getCurrentNestedStackContext, K as vectorIndexesForCreate, Kc as redactForState, Ki as tagMapAsList, Kn as redactedDeleteAddressFields, L as DELETE_INDEX_WAIT_PROCEED_NOTE, M as beginDeleteWait, N as compensateRemovedDeletionProtection, Nd as describeFileReadFailure, Ni as reserveStackCreateToken, O as stripIndexContributorInsights, Oo as passedParameterClassesOf, P as deleteBudgetKey, Pd as displayAssemblyPath, Q as readTtlSpec, R as INDEX_SETTLE_POLL_INTERVAL_MS, Ra as isSettledInstanceState, Rr as awaitInFlightSibling, S as indexDeclaresContributorInsights, Sl as recordAttributeIdCopy, T as readContributorInsightsSpec, Ta as observeThenDisableInstanceApiTermination, Tc as canonicalLambdaFunctionName, Tl as carriesSecretMask, To as parseWebACLArn, U as waitForIndexesSettled, Ua as s3BucketWebsiteUrl, Ui as planTagDiff, V as maskedLogger, Va as s3BucketDualStackDomainName, Vi as DBPROXY_TAGS_WHAT, Vt as getNestedRevertRun, W as planVectorIndexUpdates, Wi as readTagList, Wn as REDACTED_DELETE_ADDRESS_SKIP_REASON, Wt as revertNestedChildFromJournal, X as isTtlRateLimited, Y as isTtlAlreadyDisabled, Yi as stringifyIfAssigned, Yt as withNestedStackContext, Z as planTimeToLive, Zc as hasMaskableValues, _ as streamMemberRefusals, _t as renderNestedTemplateTreeDefect, _u as rewriteTemplateAssetReferences, aa as getCurrentResourceSecrets, ac as toCfnInteger, an as chunks, at as markRefusedBeforeApplying, b as CONTRIBUTOR_INSIGHTS_KEY, ba as isWaitAbandonedError, bc as withRetry, bd as derivePartitionAndUrlSuffix, bl as recoverMaskedOutput, c as DynamoDBGlobalTableProvider, cc as coerceCfnInteger, cn as withApiLimit, d as declaredStreamPolicyMember, da as slowCcOperationTimeoutMs, dc as configStringRefusal, dl as withoutPhysicalNameCopies, et as ECR_AUTO_DELETE_IMAGES_TAG, f as declaredStreamTagsMember, fa as onlySecretReferencesDiffer, fc as readConfigString, fu as stringifyValue, g as streamDeclaresTags, gc as requireConfigString, gd as decodeListingKey, gt as listNestedTemplateRows, h as streamDeclaresPolicy, hc as requireConfigObject, ht as isAbsoluteAssetPath, ic as isWarmThroughputDecrease, it as getPriorAttempts, j as DYNAMODB_DELETE_POLL_COST_MS, ji as earliestDefined, k as DYNAMODB_DELETE_DEADLINE_MARGIN_MS, l as STREAM_POLICY_KEY, lc as configBooleanRefusal, lu as timePhase, m as reverseMapStreamPolicy, mc as requireConfigArray, mo as getAccountInfo, mt as findNestedTemplateTreeDefect, nc as WARM_THROUGHPUT_MEMBERS, nt as hasCdkAutoDeleteTag, oc as toFiniteNumber, on as isAccessDeniedError, p as planStreamMemberOps, pa as unchangedBehindSecretReference, pc as replayWarn, pl as dynamicReferenceTokens, q as vectorIndexesSettled, qc as recordReferenceProvenanceEntry, qi as tagPlanWarning, qn as redactedDeleteAddressSkip, qs as withoutSilentDropProperties, rc as coerceWarmThroughput$1, rt as isTruthyCfnBoolean, sc as coerceCfnBoolean, sn as lookupEachName, t as DeployEngine, ta as waitForLambdaFunctionActive, tt as S3_AUTO_DELETE_OBJECTS_TAG, u as STREAM_TAGS_KEY, uc as configIntegerRefusal, us as refuseMalformedNestedChildOutputs, v as streamPolicyMatchesDeclared, va as deleteSkipReason, vi as secretNamedAttributeNamesOf, w as planIndexContributorInsightsOps, wa as isTerminationProtectionPropagationError, wc as emrClusterInstancesReplaced, wt as enclosingDeadlineRemainingMs, x as contributorInsightsRefusals, xa as markWaitAbandoned, xc as blockDeviceMappingsDifferOnlyInDeleteOnTermination, xl as physicalNameCopiesOf, y as streamTagsMatchDeclared, ya as withIndeterminateGuard, yd as canonicalizeRegion, z as TABLE_INDEX_NOUN, za as s3BucketArn, zc as passedNoEchoParametersOf, zi as isRefusedByName } from "./deploy-engine
|
|
6
|
-
import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, 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-
|
|
1
|
+
import { r as getAwsClients, s as withApiGatewayPacing } from "./aws-clients-DWpHZk2l.js";
|
|
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-BpB3iPvn.js";
|
|
4
|
+
import { c as ambientRegion } from "./aws-client-defaults-BLXFsfMa.js";
|
|
5
|
+
import { $ as sendTtlWaitingOutRateLimit, A as DYNAMODB_DELETE_MIN_RESOURCE_TIMEOUT_MS, Aa as isUsableAttemptedName, As as refuseMalformedResourcesForDestroy, B as deleteTableWithIndexBusyRetry, Ba as s3BucketDomainName, Bi as markDeleteStarted, Br as getStackRecords, C as planContributorInsightsOp, Ca as ec2InstanceProtectionSite, Cc as ecsServiceLaunchTypeSetOrChanged, Ct as enclosingDeadlineExpired, D as reverseMapTableContributorInsights, Da as reEnableInstanceApiTermination, Dc as sameLambdaFunctionAddress, E as reverseMapIndexContributorInsights, Ea as reDisableInstanceApiTermination, Ec as lambdaFunctionNameForMask, F as resolveDynamoDbDeleteBudgetClock, Fd as renderAssemblyPathEscape, Fi as acquireIdempotencyToken, Fo as accountArgs, G as readbackVectorIndexes, Gc as markSameGenerationBag, Gi as refuseMalformedDesiredTags, Gn as isRedactedRecordedValue, Gs as findSilentDropProperties, H as relayedIndexBusyDelete, Ha as s3BucketRegionalDomainName, Hi as DBPROXY_TAG_OPTIONS, Hn as getCurrentProducerRegions, Hr as replacedDeleteFailureVerdict, Hs as withheldAccountClause, I as resolveDynamoDbDeleteBudgetMs, Id as resolveAssemblyPath, J as vectorIndexesShapeDetail, Ja as outputReferenceProvenanceOf, Jc as snapshotPassProvenance, Ji as definedAttributes, Jt as getCurrentNestedStackContext, K as vectorIndexesForCreate, Kc as redactForState, Ki as tagMapAsList, Kn as redactedDeleteAddressFields, L as DELETE_INDEX_WAIT_PROCEED_NOTE, M as beginDeleteWait, N as compensateRemovedDeletionProtection, Nd as describeFileReadFailure, Ni as reserveStackCreateToken, O as stripIndexContributorInsights, Oo as passedParameterClassesOf, P as deleteBudgetKey, Pd as displayAssemblyPath, Q as readTtlSpec, R as INDEX_SETTLE_POLL_INTERVAL_MS, Ra as isSettledInstanceState, Rr as awaitInFlightSibling, S as indexDeclaresContributorInsights, Sl as recordAttributeIdCopy, T as readContributorInsightsSpec, Ta as observeThenDisableInstanceApiTermination, Tc as canonicalLambdaFunctionName, Tl as carriesSecretMask, To as parseWebACLArn, U as waitForIndexesSettled, Ua as s3BucketWebsiteUrl, Ui as planTagDiff, V as maskedLogger, Va as s3BucketDualStackDomainName, Vi as DBPROXY_TAGS_WHAT, Vt as getNestedRevertRun, W as planVectorIndexUpdates, Wi as readTagList, Wn as REDACTED_DELETE_ADDRESS_SKIP_REASON, Wt as revertNestedChildFromJournal, X as isTtlRateLimited, Y as isTtlAlreadyDisabled, Yi as stringifyIfAssigned, Yt as withNestedStackContext, Z as planTimeToLive, Zc as hasMaskableValues, _ as streamMemberRefusals, _t as renderNestedTemplateTreeDefect, _u as rewriteTemplateAssetReferences, aa as getCurrentResourceSecrets, ac as toCfnInteger, an as chunks, at as markRefusedBeforeApplying, b as CONTRIBUTOR_INSIGHTS_KEY, ba as isWaitAbandonedError, bc as withRetry, bd as derivePartitionAndUrlSuffix, bl as recoverMaskedOutput, c as DynamoDBGlobalTableProvider, cc as coerceCfnInteger, cn as withApiLimit, d as declaredStreamPolicyMember, da as slowCcOperationTimeoutMs, dc as configStringRefusal, dl as withoutPhysicalNameCopies, et as ECR_AUTO_DELETE_IMAGES_TAG, f as declaredStreamTagsMember, fa as onlySecretReferencesDiffer, fc as readConfigString, fu as stringifyValue, g as streamDeclaresTags, gc as requireConfigString, gd as decodeListingKey, gt as listNestedTemplateRows, h as streamDeclaresPolicy, hc as requireConfigObject, ht as isAbsoluteAssetPath, ic as isWarmThroughputDecrease, it as getPriorAttempts, j as DYNAMODB_DELETE_POLL_COST_MS, ji as earliestDefined, k as DYNAMODB_DELETE_DEADLINE_MARGIN_MS, l as STREAM_POLICY_KEY, lc as configBooleanRefusal, lu as timePhase, m as reverseMapStreamPolicy, mc as requireConfigArray, mo as getAccountInfo, mt as findNestedTemplateTreeDefect, nc as WARM_THROUGHPUT_MEMBERS, nt as hasCdkAutoDeleteTag, oc as toFiniteNumber, on as isAccessDeniedError, p as planStreamMemberOps, pa as unchangedBehindSecretReference, pc as replayWarn, pl as dynamicReferenceTokens, q as vectorIndexesSettled, qc as recordReferenceProvenanceEntry, qi as tagPlanWarning, qn as redactedDeleteAddressSkip, qs as withoutSilentDropProperties, rc as coerceWarmThroughput$1, rt as isTruthyCfnBoolean, sc as coerceCfnBoolean, sn as lookupEachName, t as DeployEngine, ta as waitForLambdaFunctionActive, tt as S3_AUTO_DELETE_OBJECTS_TAG, u as STREAM_TAGS_KEY, uc as configIntegerRefusal, us as refuseMalformedNestedChildOutputs, v as streamPolicyMatchesDeclared, va as deleteSkipReason, vi as secretNamedAttributeNamesOf, w as planIndexContributorInsightsOps, wa as isTerminationProtectionPropagationError, wc as emrClusterInstancesReplaced, wt as enclosingDeadlineRemainingMs, x as contributorInsightsRefusals, xa as markWaitAbandoned, xc as blockDeviceMappingsDifferOnlyInDeleteOnTermination, xl as physicalNameCopiesOf, y as streamTagsMatchDeclared, ya as withIndeterminateGuard, yd as canonicalizeRegion, z as TABLE_INDEX_NOUN, za as s3BucketArn, zc as passedNoEchoParametersOf, zi as isRefusedByName } from "./deploy-engine-b0rYBotL.js";
|
|
6
|
+
import { n as collectInlinePolicyNamesManagedBySiblings, r as IamCreateClientCache, t as IAMRoleProvider } from "./iam-role-provider-gTpDZhfz.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-BZ-VVfXu.js";
|
|
8
|
+
import { n as modifyDbInstanceWhenAvailable } from "./db-instance-modify-retry-CspmK57I.js";
|
|
9
|
+
import { RDSProvider } from "./rds-provider-BUNLNluC.js";
|
|
10
|
+
import { NeptuneProvider } from "./neptune-provider-BfzktOKC.js";
|
|
11
|
+
import { ASGProvider } from "./asg-provider-WornuySB.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, DocDBClient, ListTagsForResourceCommand as ListTagsForResourceCommand$13, ModifyDBClusterCommand as ModifyDBClusterCommand$1, ModifyDBInstanceCommand as ModifyDBInstanceCommand$1, ModifyDBSubnetGroupCommand as ModifyDBSubnetGroupCommand$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, 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";
|
|
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";
|
|
@@ -59,13 +59,13 @@ import { AssociateFileSystemAliasesCommand, CreateFileSystemCommand as CreateFil
|
|
|
59
59
|
import { AddInstanceFleetCommand, AddInstanceGroupsCommand, AddTagsCommand as AddTagsCommand$1, DescribeClusterCommand, EMRClient, InvalidRequestException, ListClustersCommand, ListInstanceFleetsCommand, ListInstanceGroupsCommand, ModifyClusterCommand, ModifyInstanceFleetCommand, ModifyInstanceGroupsCommand, PutAutoScalingPolicyCommand, PutAutoTerminationPolicyCommand, PutManagedScalingPolicyCommand, RemoveAutoScalingPolicyCommand, RemoveAutoTerminationPolicyCommand, RemoveManagedScalingPolicyCommand, RemoveTagsCommand as RemoveTagsCommand$1, RunJobFlowCommand, SetTerminationProtectionCommand, SetUnhealthyNodeReplacementCommand, SetVisibleToAllUsersCommand, TerminateJobFlowsCommand } from "@aws-sdk/client-emr";
|
|
60
60
|
import { CreateDeliveryStreamCommand, DeleteDeliveryStreamCommand, DescribeDeliveryStreamCommand, FirehoseClient, ListTagsForDeliveryStreamCommand, ResourceNotFoundException as ResourceNotFoundException$14, StartDeliveryStreamEncryptionCommand, StopDeliveryStreamEncryptionCommand, TagDeliveryStreamCommand, UntagDeliveryStreamCommand, UpdateDestinationCommand } from "@aws-sdk/client-firehose";
|
|
61
61
|
import { AddTagsCommand as AddTagsCommand$2, CloudTrailClient, CreateTrailCommand, DeleteTrailCommand, GetEventConfigurationCommand, GetEventSelectorsCommand, GetInsightSelectorsCommand, GetTrailCommand, GetTrailStatusCommand, ListTagsCommand as ListTagsCommand$2, PutEventConfigurationCommand, PutEventSelectorsCommand, PutInsightSelectorsCommand, RemoveTagsCommand as RemoveTagsCommand$2, StartLoggingCommand, StopLoggingCommand, TrailNotFoundException, UpdateTrailCommand } from "@aws-sdk/client-cloudtrail";
|
|
62
|
-
import { BatchGetProjectsCommand, CodeBuildClient, CreateProjectCommand, DeleteProjectCommand, ResourceNotFoundException as ResourceNotFoundException$15, UpdateProjectCommand, UpdateProjectVisibilityCommand } from "@aws-sdk/client-codebuild";
|
|
62
|
+
import { BatchGetProjectsCommand, CodeBuildClient, CreateProjectCommand, CreateWebhookCommand, DeleteProjectCommand, DeleteWebhookCommand, ResourceNotFoundException as ResourceNotFoundException$15, UpdateProjectCommand, UpdateProjectVisibilityCommand, UpdateWebhookCommand } from "@aws-sdk/client-codebuild";
|
|
63
63
|
import { CodeCommitClient, CreateCommitCommand, CreateRepositoryCommand as CreateRepositoryCommand$1, DeleteRepositoryCommand as DeleteRepositoryCommand$1, GetRepositoryCommand, GetRepositoryTriggersCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$18, PutRepositoryTriggersCommand, RepositoryDoesNotExistException, TagResourceCommand as TagResourceCommand$26, UntagResourceCommand as UntagResourceCommand$27, UpdateRepositoryDescriptionCommand, UpdateRepositoryEncryptionKeyCommand, UpdateRepositoryNameCommand } from "@aws-sdk/client-codecommit";
|
|
64
64
|
import { CreateLifecyclePolicyCommand, DLMClient, DeleteLifecyclePolicyCommand as DeleteLifecyclePolicyCommand$1, GetLifecyclePoliciesCommand, GetLifecyclePolicyCommand as GetLifecyclePolicyCommand$1, ResourceNotFoundException as ResourceNotFoundException$16, TagResourceCommand as TagResourceCommand$27, UntagResourceCommand as UntagResourceCommand$28, UpdateLifecyclePolicyCommand } from "@aws-sdk/client-dlm";
|
|
65
65
|
import { CreateVectorBucketCommand, DeleteIndexCommand, DeleteVectorBucketCommand, GetVectorBucketCommand, ListIndexesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$19, S3VectorsClient, TagResourceCommand as TagResourceCommand$28, UntagResourceCommand as UntagResourceCommand$29 } from "@aws-sdk/client-s3vectors";
|
|
66
66
|
import { CreateNamespaceCommand, CreateTableBucketCommand, CreateTableCommand as CreateTableCommand$2, DeleteNamespaceCommand as DeleteNamespaceCommand$1, DeleteTableBucketCommand, DeleteTableBucketMetricsConfigurationCommand, DeleteTableBucketReplicationCommand, DeleteTableCommand as DeleteTableCommand$2, GetNamespaceCommand as GetNamespaceCommand$1, GetTableBucketCommand, GetTableBucketEncryptionCommand, GetTableBucketMaintenanceConfigurationCommand, GetTableBucketMetricsConfigurationCommand, GetTableBucketReplicationCommand, GetTableBucketStorageClassCommand, GetTableCommand as GetTableCommand$1, GetTableMaintenanceConfigurationCommand, ListNamespacesCommand as ListNamespacesCommand$1, ListTableBucketsCommand, ListTablesCommand, ListTagsForResourceCommand as ListTagsForResourceCommand$20, NotFoundException as NotFoundException$7, PutTableBucketEncryptionCommand, PutTableBucketMaintenanceConfigurationCommand, PutTableBucketMetricsConfigurationCommand, PutTableBucketReplicationCommand, PutTableBucketStorageClassCommand, PutTableMaintenanceConfigurationCommand, RenameTableCommand, S3TablesClient, TagResourceCommand as TagResourceCommand$29, UntagResourceCommand as UntagResourceCommand$30 } from "@aws-sdk/client-s3tables";
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
// src/provisioning/providers/iam-policy-provider.ts
|
|
69
69
|
const POLICY_NAME_SKIP_REASON = "no policy name in state — no delete issued";
|
|
70
70
|
const POLICY_NO_TARGET_SKIP_REASON = "no Roles/Groups/Users in state — no delete issued";
|
|
71
71
|
const POLICY_MALFORMED_TARGET_SKIP_REASON = "malformed Roles/Groups/Users in state — no delete issued";
|
|
@@ -590,8 +590,7 @@ var IAMPolicyProvider = class {
|
|
|
590
590
|
}
|
|
591
591
|
};
|
|
592
592
|
|
|
593
|
-
|
|
594
|
-
//#region src/provisioning/providers/iam-managed-policy-provider.ts
|
|
593
|
+
// src/provisioning/providers/iam-managed-policy-provider.ts
|
|
595
594
|
const principalsOf = (bag) => readPrincipalLists({
|
|
596
595
|
Groups: bag["Groups"],
|
|
597
596
|
Roles: bag["Roles"],
|
|
@@ -1217,8 +1216,7 @@ function recordedNonRootPath(arn) {
|
|
|
1217
1216
|
return path === "/" ? void 0 : path;
|
|
1218
1217
|
}
|
|
1219
1218
|
|
|
1220
|
-
|
|
1221
|
-
//#region src/provisioning/providers/iam-instance-profile-provider.ts
|
|
1219
|
+
// src/provisioning/providers/iam-instance-profile-provider.ts
|
|
1222
1220
|
const INSTANCE_PROFILE_TYPE = "AWS::IAM::InstanceProfile";
|
|
1223
1221
|
function isInstanceProfileName(id) {
|
|
1224
1222
|
return /^[\w+=,.@-]{1,128}$/.test(id);
|
|
@@ -1485,8 +1483,7 @@ var IAMInstanceProfileProvider = class {
|
|
|
1485
1483
|
}
|
|
1486
1484
|
};
|
|
1487
1485
|
|
|
1488
|
-
|
|
1489
|
-
//#region src/provisioning/providers/iam-access-key-provider.ts
|
|
1486
|
+
// src/provisioning/providers/iam-access-key-provider.ts
|
|
1490
1487
|
const ACCESS_KEY_ID_PATTERN = /^AKIA[A-Z0-9]{16}$/;
|
|
1491
1488
|
const CREATE_DATE_SKEW_MARGIN_MS = 5e3;
|
|
1492
1489
|
var IAMAccessKeyProvider = class {
|
|
@@ -1796,8 +1793,7 @@ var IAMAccessKeyProvider = class {
|
|
|
1796
1793
|
}
|
|
1797
1794
|
};
|
|
1798
1795
|
|
|
1799
|
-
|
|
1800
|
-
//#region src/provisioning/providers/iam-user-group-provider.ts
|
|
1796
|
+
// src/provisioning/providers/iam-user-group-provider.ts
|
|
1801
1797
|
function isUserOrGroupName(resourceType, id) {
|
|
1802
1798
|
return resourceType === "AWS::IAM::User" ? /^[\w+=,.@-]{1,64}$/.test(id) : /^[\w+=,.@-]{1,128}$/.test(id);
|
|
1803
1799
|
}
|
|
@@ -2938,15 +2934,13 @@ var IAMUserGroupProvider = class {
|
|
|
2938
2934
|
}
|
|
2939
2935
|
};
|
|
2940
2936
|
|
|
2941
|
-
|
|
2942
|
-
//#region src/utils/cfn-timestamp.ts
|
|
2937
|
+
// src/utils/cfn-timestamp.ts
|
|
2943
2938
|
const OFFSETLESS_DATE_TIME = /^\d{4}-\d{2}-\d{2}[Tt ]\d{2}:\d{2}(:\d{2}(\.\d+)?)?$/;
|
|
2944
2939
|
function parseCfnTimestamp(value) {
|
|
2945
2940
|
return new Date(OFFSETLESS_DATE_TIME.test(value) ? `${value}Z` : value);
|
|
2946
2941
|
}
|
|
2947
2942
|
|
|
2948
|
-
|
|
2949
|
-
//#region src/provisioning/providers/s3-bucket-provider.ts
|
|
2943
|
+
// src/provisioning/providers/s3-bucket-provider.ts
|
|
2950
2944
|
function manualBucketDeletionClause(bucketName, maskSecrets, journaled) {
|
|
2951
2945
|
const command = renderDisableCommand({
|
|
2952
2946
|
before: "aws s3api delete-bucket --bucket",
|
|
@@ -6059,8 +6053,7 @@ var S3BucketProvider = class S3BucketProvider {
|
|
|
6059
6053
|
}
|
|
6060
6054
|
};
|
|
6061
6055
|
|
|
6062
|
-
|
|
6063
|
-
//#region src/provisioning/providers/s3-bucket-policy-provider.ts
|
|
6056
|
+
// src/provisioning/providers/s3-bucket-policy-provider.ts
|
|
6064
6057
|
const OAI_USER_ARN_RE = /^arn:aws[a-z-]*:iam::cloudfront:user\/CloudFront Origin Access Identity ([A-Z0-9]+)$/;
|
|
6065
6058
|
const IAM_UNIQUE_ID_RE = /^A[A-Z0-9]{15,}$/;
|
|
6066
6059
|
const oaiCanonicalUserIdCache = /* @__PURE__ */ new Map();
|
|
@@ -6262,8 +6255,7 @@ function isS3BucketName(value) {
|
|
|
6262
6255
|
return true;
|
|
6263
6256
|
}
|
|
6264
6257
|
|
|
6265
|
-
|
|
6266
|
-
//#region src/provisioning/providers/sqs-queue-provider.ts
|
|
6258
|
+
// src/provisioning/providers/sqs-queue-provider.ts
|
|
6267
6259
|
function serializeRedrivePolicy(value) {
|
|
6268
6260
|
if (value === null || value === void 0) return "";
|
|
6269
6261
|
if (typeof value === "object" && Object.keys(value).length === 0) return "";
|
|
@@ -6591,8 +6583,7 @@ var SQSQueueProvider = class {
|
|
|
6591
6583
|
}
|
|
6592
6584
|
};
|
|
6593
6585
|
|
|
6594
|
-
|
|
6595
|
-
//#region src/provisioning/policy-document-content.ts
|
|
6586
|
+
// src/provisioning/policy-document-content.ts
|
|
6596
6587
|
const MASK = "***";
|
|
6597
6588
|
const PERMANENT_CDKD_CODES = /* @__PURE__ */ new Set(["ROLLBACK_SECRET_TOKEN_SCAN_MISMATCH"]);
|
|
6598
6589
|
const MARKED_PERMANENT_CODE_PREFIXES = ["INTRINSIC_RESOLUTION_REFUSAL", "ROLLBACK_SECRET_REGION_AMBIGUOUS"];
|
|
@@ -6723,8 +6714,7 @@ function policyContentKey(document) {
|
|
|
6723
6714
|
return canonicalJson$3(value);
|
|
6724
6715
|
}
|
|
6725
6716
|
|
|
6726
|
-
|
|
6727
|
-
//#region src/provisioning/providers/sqs-queue-policy-provider.ts
|
|
6717
|
+
// src/provisioning/providers/sqs-queue-policy-provider.ts
|
|
6728
6718
|
const QUEUE_POLICY_UNREADABLE_SKIP_REASON = "the policy of a queue it wrote could not be read, so whether that queue still carries it is unknown";
|
|
6729
6719
|
const QUEUE_POLICY_UNRESOLVED_DOCUMENT_SKIP_REASON = "the policy document it attempted could not be resolved right now to compare its queues with";
|
|
6730
6720
|
const QUEUE_POLICY_MISMATCH_LEFT_REASON = "a queue it wrote carries a policy that does not match the document it attempted, so that queue was not cleared";
|
|
@@ -7026,8 +7016,7 @@ function splitQueueUrls(physicalId) {
|
|
|
7026
7016
|
return physicalId.split(",").filter((url) => url.length > 0);
|
|
7027
7017
|
}
|
|
7028
7018
|
|
|
7029
|
-
|
|
7030
|
-
//#region src/provisioning/providers/create-ownership.ts
|
|
7019
|
+
// src/provisioning/providers/create-ownership.ts
|
|
7031
7020
|
async function nameHeldBefore(lookup, isAbsent) {
|
|
7032
7021
|
try {
|
|
7033
7022
|
return await lookup() ? "held" : "free";
|
|
@@ -7044,8 +7033,7 @@ function skippedCleanupText(heldBefore, what, command) {
|
|
|
7044
7033
|
return heldBefore === "held" ? `${what} already existed before this create attempt (it may be an earlier attempt of this same deploy, an earlier failed deploy, or another stack's or someone else's resource), and the create handed it back, so cdkd did not delete it after the wiring failure; this deploy may have changed its configuration. A resource under a cdkd-generated name is adopted by the next deploy if its create-time settings are unchanged, so it needs no action if it is this stack's. Delete it only after confirming from its tags and creation time that no one else uses it: ${command}` : `cdkd could not tell whether this create made ${what} (the lookup before the create did not answer), so it was not deleted after the wiring failure. If this deploy created it, delete it before the next deploy: ${command}`;
|
|
7045
7034
|
}
|
|
7046
7035
|
|
|
7047
|
-
|
|
7048
|
-
//#region src/provisioning/providers/sns-topic-provider.ts
|
|
7036
|
+
// src/provisioning/providers/sns-topic-provider.ts
|
|
7049
7037
|
const SNS_MAXIMUM_MESSAGE_SIZE_DEFAULT = "262144";
|
|
7050
7038
|
function snsTopicAttributes(topicArn) {
|
|
7051
7039
|
return {
|
|
@@ -7601,8 +7589,7 @@ function mapDeliveryStatusLogging(attrs, stateCaseMap = /* @__PURE__ */ new Map(
|
|
|
7601
7589
|
return result;
|
|
7602
7590
|
}
|
|
7603
7591
|
|
|
7604
|
-
|
|
7605
|
-
//#region src/provisioning/providers/sns-subscription-provider.ts
|
|
7592
|
+
// src/provisioning/providers/sns-subscription-provider.ts
|
|
7606
7593
|
const SNS_SUBSCRIPTION_DELETE_THREW_REASON = "the Unsubscribe call did not complete, so the old subscription is unproven";
|
|
7607
7594
|
const MUTABLE_ATTRIBUTES = [
|
|
7608
7595
|
"RawMessageDelivery",
|
|
@@ -7865,8 +7852,7 @@ function isPendingConfirmationError(error) {
|
|
|
7865
7852
|
return error instanceof InvalidParameterException && error.message.toLowerCase().includes("pending confirmation");
|
|
7866
7853
|
}
|
|
7867
7854
|
|
|
7868
|
-
|
|
7869
|
-
//#region src/provisioning/providers/sns-topic-policy-provider.ts
|
|
7855
|
+
// src/provisioning/providers/sns-topic-policy-provider.ts
|
|
7870
7856
|
const TOPIC_POLICY_UNREADABLE_SKIP_REASON = "the policy of a topic it wrote could not be read, so whether that topic still carries it is unknown";
|
|
7871
7857
|
const TOPIC_POLICY_UNRESOLVED_DOCUMENT_SKIP_REASON = "the policy document it attempted could not be resolved right now to compare its topics with";
|
|
7872
7858
|
const TOPIC_POLICY_MISMATCH_LEFT_REASON = "a topic it wrote carries a policy that does not match the document it attempted, so that topic was not reset";
|
|
@@ -8182,8 +8168,7 @@ function canonicalPolicy(text) {
|
|
|
8182
8168
|
}
|
|
8183
8169
|
}
|
|
8184
8170
|
|
|
8185
|
-
|
|
8186
|
-
//#region src/provisioning/providers/lambda-create-client.ts
|
|
8171
|
+
// src/provisioning/providers/lambda-create-client.ts
|
|
8187
8172
|
var LambdaCreateClientCache = class {
|
|
8188
8173
|
client;
|
|
8189
8174
|
shared;
|
|
@@ -8204,8 +8189,7 @@ var LambdaCreateClientCache = class {
|
|
|
8204
8189
|
}
|
|
8205
8190
|
};
|
|
8206
8191
|
|
|
8207
|
-
|
|
8208
|
-
//#region src/provisioning/providers/lambda-function-provider.ts
|
|
8192
|
+
// src/provisioning/providers/lambda-function-provider.ts
|
|
8209
8193
|
function isFunctionName(id) {
|
|
8210
8194
|
return /^[A-Za-z0-9_-]{1,64}$/.test(id);
|
|
8211
8195
|
}
|
|
@@ -9236,8 +9220,7 @@ var LambdaFunctionProvider = class {
|
|
|
9236
9220
|
}
|
|
9237
9221
|
};
|
|
9238
9222
|
|
|
9239
|
-
|
|
9240
|
-
//#region src/provisioning/providers/lambda-permission-provider.ts
|
|
9223
|
+
// src/provisioning/providers/lambda-permission-provider.ts
|
|
9241
9224
|
const PERMISSION_FUNCTION_NAME_SKIP_REASON = "FunctionName missing from state — no delete issued";
|
|
9242
9225
|
const PERMISSION_STATEMENT_ID_SKIP_REASON = "empty StatementId in state physicalId — no delete issued";
|
|
9243
9226
|
const DEPLOY_SKIP_CAVEAT$1 = "NOTE this arm is ALSO reached from cdkd deploy. Since issue 1762 the DELETE of a resource removed from the template behaves like destroy — the record is KEPT and the next deploy re-attempts it — but a REPLACEMENT / rollback delete FAILS the resource instead (https://github.com/go-to-k/cdkd/issues/1762), leaving the old one untracked; there, remove the resource by hand.";
|
|
@@ -9468,8 +9451,7 @@ function permissionStatementId(logicalId) {
|
|
|
9468
9451
|
return statementId;
|
|
9469
9452
|
}
|
|
9470
9453
|
|
|
9471
|
-
|
|
9472
|
-
//#region src/provisioning/providers/lambda-url-provider.ts
|
|
9454
|
+
// src/provisioning/providers/lambda-url-provider.ts
|
|
9473
9455
|
var LambdaUrlProvider = class {
|
|
9474
9456
|
lambdaClient;
|
|
9475
9457
|
createClient = new LambdaCreateClientCache(() => this.lambdaClient);
|
|
@@ -9678,8 +9660,7 @@ var LambdaUrlProvider = class {
|
|
|
9678
9660
|
}
|
|
9679
9661
|
};
|
|
9680
9662
|
|
|
9681
|
-
|
|
9682
|
-
//#region src/provisioning/providers/orphan-report.ts
|
|
9663
|
+
// src/provisioning/providers/orphan-report.ts
|
|
9683
9664
|
async function orphanCommandRegionArg(client, aws) {
|
|
9684
9665
|
let region;
|
|
9685
9666
|
try {
|
|
@@ -9744,8 +9725,7 @@ async function reportPossibleOrphans(logicalId, window, log, lookup) {
|
|
|
9744
9725
|
log.warn(`${lead} (${when}), and ${service} may have created ${lookup.subject} then that no cdkd state records. ${found.ids.length} ${lookup.noun} match that this deploy did not record: ${shown.join(", ")}${more}. ${service} reports no creation time for them, so any of them may instead be this stack's own recorded one, another stack's, or older than this deploy; cdkd does not adopt or delete them. ${afterward} Inspect each before deleting anything: ${inspect}.${incomplete}`);
|
|
9745
9726
|
}
|
|
9746
9727
|
|
|
9747
|
-
|
|
9748
|
-
//#region src/provisioning/providers/lambda-eventsource-provider.ts
|
|
9728
|
+
// src/provisioning/providers/lambda-eventsource-provider.ts
|
|
9749
9729
|
const createEventSourceMappingLatch = new AmbiguousCreateLatch("lambda:CreateEventSourceMapping");
|
|
9750
9730
|
const mappingsCreatedByThisProcess = new RecentIdSet();
|
|
9751
9731
|
const ARN_SERVICE_RE = /^arn:aws[a-z0-9-]*:([^:]+):/;
|
|
@@ -10364,8 +10344,7 @@ var LambdaEventSourceMappingProvider = class {
|
|
|
10364
10344
|
}
|
|
10365
10345
|
};
|
|
10366
10346
|
|
|
10367
|
-
|
|
10368
|
-
//#region src/provisioning/providers/lambda-layer-provider.ts
|
|
10347
|
+
// src/provisioning/providers/lambda-layer-provider.ts
|
|
10369
10348
|
const publishLayerVersionLatch = new AmbiguousCreateLatch("lambda:PublishLayerVersion");
|
|
10370
10349
|
const versionsPublishedByThisProcess = new RecentIdSet();
|
|
10371
10350
|
function parseLayerCreatedDate(value) {
|
|
@@ -10556,8 +10535,7 @@ var LambdaLayerVersionProvider = class {
|
|
|
10556
10535
|
}
|
|
10557
10536
|
};
|
|
10558
10537
|
|
|
10559
|
-
|
|
10560
|
-
//#region src/provisioning/providers/lambda-event-invoke-config-provider.ts
|
|
10538
|
+
// src/provisioning/providers/lambda-event-invoke-config-provider.ts
|
|
10561
10539
|
function stringOrUndefined(value) {
|
|
10562
10540
|
return typeof value === "string" ? value : void 0;
|
|
10563
10541
|
}
|
|
@@ -10795,8 +10773,7 @@ var LambdaEventInvokeConfigProvider = class {
|
|
|
10795
10773
|
}
|
|
10796
10774
|
};
|
|
10797
10775
|
|
|
10798
|
-
|
|
10799
|
-
//#region src/provisioning/providers/lambda-microvm-image-provider.ts
|
|
10776
|
+
// src/provisioning/providers/lambda-microvm-image-provider.ts
|
|
10800
10777
|
var LambdaMicrovmImageProvider = class {
|
|
10801
10778
|
client;
|
|
10802
10779
|
logger = getLogger().child("LambdaMicrovmImageProvider");
|
|
@@ -11119,15 +11096,15 @@ function buildCommonImageInput(properties) {
|
|
|
11119
11096
|
return input;
|
|
11120
11097
|
}
|
|
11121
11098
|
function mapCodeArtifact(value) {
|
|
11122
|
-
if (!isRecord$
|
|
11099
|
+
if (!isRecord$3(value)) return void 0;
|
|
11123
11100
|
const uri = value["Uri"];
|
|
11124
11101
|
return typeof uri === "string" ? { uri } : void 0;
|
|
11125
11102
|
}
|
|
11126
11103
|
function mapLogging(value) {
|
|
11127
|
-
if (!isRecord$
|
|
11104
|
+
if (!isRecord$3(value)) return void 0;
|
|
11128
11105
|
if (value["Disabled"] === true) return { disabled: {} };
|
|
11129
11106
|
const cloudWatch = value["CloudWatch"];
|
|
11130
|
-
if (isRecord$
|
|
11107
|
+
if (isRecord$3(cloudWatch)) {
|
|
11131
11108
|
const cw = {};
|
|
11132
11109
|
if (typeof cloudWatch["LogGroup"] === "string") cw.logGroup = cloudWatch["LogGroup"];
|
|
11133
11110
|
if (typeof cloudWatch["LogStream"] === "string") cw.logStream = cloudWatch["LogStream"];
|
|
@@ -11136,37 +11113,36 @@ function mapLogging(value) {
|
|
|
11136
11113
|
}
|
|
11137
11114
|
function mapCpuConfigurations(value) {
|
|
11138
11115
|
if (!Array.isArray(value)) return void 0;
|
|
11139
|
-
return value.filter(isRecord$
|
|
11116
|
+
return value.filter(isRecord$3).map((c) => ({ architecture: c["Architecture"] }));
|
|
11140
11117
|
}
|
|
11141
11118
|
function mapResources(value) {
|
|
11142
11119
|
if (!Array.isArray(value)) return void 0;
|
|
11143
|
-
return value.filter(isRecord$
|
|
11120
|
+
return value.filter(isRecord$3).map((r) => Number(r["MinimumMemoryInMiB"])).filter((n) => Number.isFinite(n)).map((minimumMemoryInMiB) => ({ minimumMemoryInMiB }));
|
|
11144
11121
|
}
|
|
11145
11122
|
function mapHooks(value) {
|
|
11146
|
-
if (!isRecord$
|
|
11123
|
+
if (!isRecord$3(value)) return void 0;
|
|
11147
11124
|
return lowerFirstKeysDeep(value);
|
|
11148
11125
|
}
|
|
11149
11126
|
function mapKeyValueListToRecord(value) {
|
|
11150
11127
|
if (!Array.isArray(value)) return void 0;
|
|
11151
11128
|
const out = {};
|
|
11152
|
-
for (const entry of value) if (isRecord$
|
|
11129
|
+
for (const entry of value) if (isRecord$3(entry) && typeof entry["Key"] === "string") out[entry["Key"]] = typeof entry["Value"] === "string" ? entry["Value"] : "";
|
|
11153
11130
|
return Object.keys(out).length > 0 ? out : void 0;
|
|
11154
11131
|
}
|
|
11155
11132
|
function lowerFirstKeysDeep(value) {
|
|
11156
11133
|
if (Array.isArray(value)) return value.map(lowerFirstKeysDeep);
|
|
11157
|
-
if (isRecord$
|
|
11134
|
+
if (isRecord$3(value)) {
|
|
11158
11135
|
const out = {};
|
|
11159
11136
|
for (const [k, v] of Object.entries(value)) out[k.charAt(0).toLowerCase() + k.slice(1)] = lowerFirstKeysDeep(v);
|
|
11160
11137
|
return out;
|
|
11161
11138
|
}
|
|
11162
11139
|
return value;
|
|
11163
11140
|
}
|
|
11164
|
-
function isRecord$
|
|
11141
|
+
function isRecord$3(value) {
|
|
11165
11142
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
11166
11143
|
}
|
|
11167
11144
|
|
|
11168
|
-
|
|
11169
|
-
//#region src/provisioning/providers/lambda-web-function-arns.ts
|
|
11145
|
+
// src/provisioning/providers/lambda-web-function-arns.ts
|
|
11170
11146
|
const CHILD_ARN = /^(arn:[^:]+:lambda:[^:]+:\d{12}:web-function\/[^/]+)\/(revision|endpoint)\/([^/]+)$/;
|
|
11171
11147
|
function parseWebFunctionChildArn(arn, kind) {
|
|
11172
11148
|
const match = CHILD_ARN.exec(arn);
|
|
@@ -11200,8 +11176,7 @@ function sleep$1(ms) {
|
|
|
11200
11176
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
11201
11177
|
}
|
|
11202
11178
|
|
|
11203
|
-
|
|
11204
|
-
//#region src/provisioning/providers/lambda-web-function-revision-provider.ts
|
|
11179
|
+
// src/provisioning/providers/lambda-web-function-revision-provider.ts
|
|
11205
11180
|
const createRevisionLatch = new AmbiguousCreateLatch("lambda-web:CreateWebFunctionRevision");
|
|
11206
11181
|
const revisionsCreatedByThisProcess = new RecentIdSet();
|
|
11207
11182
|
var LambdaWebFunctionRevisionProvider = class {
|
|
@@ -11561,8 +11536,7 @@ function serviceConfigToCfn(config) {
|
|
|
11561
11536
|
return out;
|
|
11562
11537
|
}
|
|
11563
11538
|
|
|
11564
|
-
|
|
11565
|
-
//#region src/provisioning/providers/lambda-web-function-endpoint-provider.ts
|
|
11539
|
+
// src/provisioning/providers/lambda-web-function-endpoint-provider.ts
|
|
11566
11540
|
var LambdaWebFunctionEndpointProvider = class {
|
|
11567
11541
|
client;
|
|
11568
11542
|
logger = getLogger().child("LambdaWebFunctionEndpointProvider");
|
|
@@ -11924,8 +11898,7 @@ function buildAttributes$1(resp) {
|
|
|
11924
11898
|
return attributes;
|
|
11925
11899
|
}
|
|
11926
11900
|
|
|
11927
|
-
|
|
11928
|
-
//#region src/provisioning/providers/lambda-network-connector-provider.ts
|
|
11901
|
+
// src/provisioning/providers/lambda-network-connector-provider.ts
|
|
11929
11902
|
const POLL_INTERVAL_MS$2 = 1e3;
|
|
11930
11903
|
const MAX_POLL_ATTEMPTS = 1200;
|
|
11931
11904
|
var LambdaNetworkConnectorProvider = class {
|
|
@@ -12228,8 +12201,7 @@ function versionOfArn(arn) {
|
|
|
12228
12201
|
return match ? Number(match[1]) : void 0;
|
|
12229
12202
|
}
|
|
12230
12203
|
|
|
12231
|
-
|
|
12232
|
-
//#region src/provisioning/delete-gone-wait.ts
|
|
12204
|
+
// src/provisioning/delete-gone-wait.ts
|
|
12233
12205
|
async function waitForGoneAfterDelete(opts) {
|
|
12234
12206
|
const sleep = opts.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
12235
12207
|
const now = opts.now ?? Date.now;
|
|
@@ -12280,8 +12252,7 @@ async function waitForGoneAfterDelete(opts) {
|
|
|
12280
12252
|
}
|
|
12281
12253
|
}
|
|
12282
12254
|
|
|
12283
|
-
|
|
12284
|
-
//#region src/provisioning/providers/dynamodb-table-provider.ts
|
|
12255
|
+
// src/provisioning/providers/dynamodb-table-provider.ts
|
|
12285
12256
|
function isTableName(id) {
|
|
12286
12257
|
return /^[A-Za-z0-9_.-]{3,255}$/.test(id);
|
|
12287
12258
|
}
|
|
@@ -14551,8 +14522,7 @@ function projectIndexesOnto(live, recorded, desired, attempted = /* @__PURE__ */
|
|
|
14551
14522
|
return kept.length > 0 ? kept : void 0;
|
|
14552
14523
|
}
|
|
14553
14524
|
|
|
14554
|
-
|
|
14555
|
-
//#region src/provisioning/providers/logs-loggroup-provider.ts
|
|
14525
|
+
// src/provisioning/providers/logs-loggroup-provider.ts
|
|
14556
14526
|
const LOG_GROUP_TYPE = "AWS::Logs::LogGroup";
|
|
14557
14527
|
function isLogGroupName(id) {
|
|
14558
14528
|
return /^[A-Za-z0-9._/#-]{1,512}$/.test(id);
|
|
@@ -15051,8 +15021,7 @@ var LogsLogGroupProvider = class {
|
|
|
15051
15021
|
}
|
|
15052
15022
|
};
|
|
15053
15023
|
|
|
15054
|
-
|
|
15055
|
-
//#region src/provisioning/providers/cloudwatch-alarm-provider.ts
|
|
15024
|
+
// src/provisioning/providers/cloudwatch-alarm-provider.ts
|
|
15056
15025
|
function isDefaultEvaluationWindow(value) {
|
|
15057
15026
|
if (value === null || typeof value !== "object" || Array.isArray(value)) return false;
|
|
15058
15027
|
const keys = Object.keys(value);
|
|
@@ -15420,8 +15389,7 @@ var CloudWatchAlarmProvider = class {
|
|
|
15420
15389
|
}
|
|
15421
15390
|
};
|
|
15422
15391
|
|
|
15423
|
-
|
|
15424
|
-
//#region src/provisioning/providers/cloudwatch-anomaly-detector-provider.ts
|
|
15392
|
+
// src/provisioning/providers/cloudwatch-anomaly-detector-provider.ts
|
|
15425
15393
|
const ID_ATTRIBUTES = ["AnomalyDetectorId", "Id"];
|
|
15426
15394
|
var CloudWatchAnomalyDetectorProvider = class {
|
|
15427
15395
|
cloudWatchClient;
|
|
@@ -15590,8 +15558,7 @@ function hasDescriptor(params) {
|
|
|
15590
15558
|
return params.SingleMetricAnomalyDetector !== void 0 || params.MetricMathAnomalyDetector !== void 0 || params.Namespace !== void 0 || params.MetricName !== void 0;
|
|
15591
15559
|
}
|
|
15592
15560
|
|
|
15593
|
-
|
|
15594
|
-
//#region src/provisioning/providers/secretsmanager-secret-provider.ts
|
|
15561
|
+
// src/provisioning/providers/secretsmanager-secret-provider.ts
|
|
15595
15562
|
function asJson(value) {
|
|
15596
15563
|
return value === void 0 ? void 0 : JSON.parse(JSON.stringify(value));
|
|
15597
15564
|
}
|
|
@@ -16030,8 +15997,7 @@ var SecretsManagerSecretProvider = class {
|
|
|
16030
15997
|
}
|
|
16031
15998
|
};
|
|
16032
15999
|
|
|
16033
|
-
|
|
16034
|
-
//#region src/provisioning/providers/ssm-parameter-provider.ts
|
|
16000
|
+
// src/provisioning/providers/ssm-parameter-provider.ts
|
|
16035
16001
|
var SSMParameterProvider = class SSMParameterProvider {
|
|
16036
16002
|
ssmClient;
|
|
16037
16003
|
createClient;
|
|
@@ -16321,8 +16287,7 @@ function ssmPoliciesParameter(policies) {
|
|
|
16321
16287
|
return JSON.stringify(policies);
|
|
16322
16288
|
}
|
|
16323
16289
|
|
|
16324
|
-
|
|
16325
|
-
//#region src/provisioning/providers/eventbridge-rule-provider.ts
|
|
16290
|
+
// src/provisioning/providers/eventbridge-rule-provider.ts
|
|
16326
16291
|
var EventBridgeRuleProvider = class {
|
|
16327
16292
|
eventBridgeClient;
|
|
16328
16293
|
logger = getLogger().child("EventBridgeRuleProvider");
|
|
@@ -16763,8 +16728,7 @@ var EventBridgeRuleProvider = class {
|
|
|
16763
16728
|
}
|
|
16764
16729
|
};
|
|
16765
16730
|
|
|
16766
|
-
|
|
16767
|
-
//#region src/provisioning/providers/eventbridge-bus-provider.ts
|
|
16731
|
+
// src/provisioning/providers/eventbridge-bus-provider.ts
|
|
16768
16732
|
function sanitizeDeadLetterConfig(value) {
|
|
16769
16733
|
if (value === null || value === void 0) return void 0;
|
|
16770
16734
|
if (typeof value !== "object") return void 0;
|
|
@@ -17050,8 +17014,7 @@ var EventBridgeBusProvider = class {
|
|
|
17050
17014
|
}
|
|
17051
17015
|
};
|
|
17052
17016
|
|
|
17053
|
-
|
|
17054
|
-
//#region src/provisioning/providers/ec2-provider.ts
|
|
17017
|
+
// src/provisioning/providers/ec2-provider.ts
|
|
17055
17018
|
const EC2_VPC_GATEWAY_ATTACHMENT_ID_FORMAT = {
|
|
17056
17019
|
label: "VPCGatewayAttachment",
|
|
17057
17020
|
segments: ["gatewayId", "vpcId"]
|
|
@@ -21767,8 +21730,7 @@ function isDefaultEgressRule(rule) {
|
|
|
21767
21730
|
return true;
|
|
21768
21731
|
}
|
|
21769
21732
|
|
|
21770
|
-
|
|
21771
|
-
//#region src/provisioning/providers/apigateway-provider.ts
|
|
21733
|
+
// src/provisioning/providers/apigateway-provider.ts
|
|
21772
21734
|
const createAuthorizerLatch$1 = new AmbiguousCreateLatch("apigateway:CreateAuthorizer");
|
|
21773
21735
|
const createDeploymentLatch = new AmbiguousCreateLatch("apigateway:CreateDeployment");
|
|
21774
21736
|
const authorizersCreatedByThisProcess$1 = new RecentIdSet();
|
|
@@ -23366,8 +23328,7 @@ function methodChildCalls(ids, desired, previous) {
|
|
|
23366
23328
|
return calls;
|
|
23367
23329
|
}
|
|
23368
23330
|
|
|
23369
|
-
|
|
23370
|
-
//#region src/provisioning/providers/apigatewayv2-provider.ts
|
|
23331
|
+
// src/provisioning/providers/apigatewayv2-provider.ts
|
|
23371
23332
|
const createApiLatch = new AmbiguousCreateLatch("apigatewayv2:CreateApi");
|
|
23372
23333
|
const createIntegrationLatch = new AmbiguousCreateLatch("apigatewayv2:CreateIntegration");
|
|
23373
23334
|
const createAuthorizerLatch = new AmbiguousCreateLatch("apigatewayv2:CreateAuthorizer");
|
|
@@ -24836,8 +24797,7 @@ var ApiGatewayV2Provider = class ApiGatewayV2Provider {
|
|
|
24836
24797
|
}
|
|
24837
24798
|
};
|
|
24838
24799
|
|
|
24839
|
-
|
|
24840
|
-
//#region src/provisioning/providers/cloudfront-oai-provider.ts
|
|
24800
|
+
// src/provisioning/providers/cloudfront-oai-provider.ts
|
|
24841
24801
|
var CloudFrontOAIProvider = class {
|
|
24842
24802
|
cloudFrontClient;
|
|
24843
24803
|
logger = getLogger().child("CloudFrontOAIProvider");
|
|
@@ -24986,8 +24946,7 @@ var CloudFrontOAIProvider = class {
|
|
|
24986
24946
|
}
|
|
24987
24947
|
};
|
|
24988
24948
|
|
|
24989
|
-
|
|
24990
|
-
//#region src/provisioning/providers/cloudfront-oac-provider.ts
|
|
24949
|
+
// src/provisioning/providers/cloudfront-oac-provider.ts
|
|
24991
24950
|
var CloudFrontOACProvider = class {
|
|
24992
24951
|
cloudFrontClient;
|
|
24993
24952
|
createClient;
|
|
@@ -25152,8 +25111,7 @@ var CloudFrontOACProvider = class {
|
|
|
25152
25111
|
}
|
|
25153
25112
|
};
|
|
25154
25113
|
|
|
25155
|
-
|
|
25156
|
-
//#region src/provisioning/providers/cloudfront-distribution-provider.ts
|
|
25114
|
+
// src/provisioning/providers/cloudfront-distribution-provider.ts
|
|
25157
25115
|
function shownId(id) {
|
|
25158
25116
|
return isPlainImportValue(id) ? id : VALUE_NOT_SHOWN;
|
|
25159
25117
|
}
|
|
@@ -25831,8 +25789,7 @@ var CloudFrontDistributionProvider = class {
|
|
|
25831
25789
|
}
|
|
25832
25790
|
};
|
|
25833
25791
|
|
|
25834
|
-
|
|
25835
|
-
//#region src/provisioning/providers/agentcore-case-convert.ts
|
|
25792
|
+
// src/provisioning/providers/agentcore-case-convert.ts
|
|
25836
25793
|
function pascalToCamelCaseKeys(value, preserveKeys) {
|
|
25837
25794
|
if (value === null || value === void 0) return value;
|
|
25838
25795
|
if (Array.isArray(value)) return value.map((item) => pascalToCamelCaseKeys(item, preserveKeys));
|
|
@@ -25860,8 +25817,7 @@ function camelToPascalCaseKeys(value, preserveKeys) {
|
|
|
25860
25817
|
return value;
|
|
25861
25818
|
}
|
|
25862
25819
|
|
|
25863
|
-
|
|
25864
|
-
//#region src/provisioning/providers/agentcore-runtime-provider.ts
|
|
25820
|
+
// src/provisioning/providers/agentcore-runtime-provider.ts
|
|
25865
25821
|
const CFN_MAP_KEYS = /* @__PURE__ */ new Set(["Tags", "AdvertisedScopeMapping"]);
|
|
25866
25822
|
const SDK_MAP_KEYS = /* @__PURE__ */ new Set(["tags", "advertisedScopeMapping"]);
|
|
25867
25823
|
const RUNTIME_TAGS_WHAT = "a map of tag keys to scalar values or a list of tags with a non-empty string Key and a scalar Value";
|
|
@@ -26155,8 +26111,7 @@ var AgentCoreRuntimeProvider = class {
|
|
|
26155
26111
|
}
|
|
26156
26112
|
};
|
|
26157
26113
|
|
|
26158
|
-
|
|
26159
|
-
//#region src/provisioning/providers/agentcore-browser-provider.ts
|
|
26114
|
+
// src/provisioning/providers/agentcore-browser-provider.ts
|
|
26160
26115
|
const DEFAULT_BROWSER_ID = "aws.browser.v1";
|
|
26161
26116
|
var AgentCoreBrowserProvider = class {
|
|
26162
26117
|
client;
|
|
@@ -26230,8 +26185,7 @@ var AgentCoreBrowserProvider = class {
|
|
|
26230
26185
|
}
|
|
26231
26186
|
};
|
|
26232
26187
|
|
|
26233
|
-
|
|
26234
|
-
//#region src/provisioning/providers/agentcore-code-interpreter-provider.ts
|
|
26188
|
+
// src/provisioning/providers/agentcore-code-interpreter-provider.ts
|
|
26235
26189
|
const DEFAULT_CODE_INTERPRETER_ID = "aws.codeinterpreter.v1";
|
|
26236
26190
|
var AgentCoreCodeInterpreterProvider = class {
|
|
26237
26191
|
client;
|
|
@@ -26300,8 +26254,7 @@ var AgentCoreCodeInterpreterProvider = class {
|
|
|
26300
26254
|
}
|
|
26301
26255
|
};
|
|
26302
26256
|
|
|
26303
|
-
|
|
26304
|
-
//#region src/provisioning/providers/agentcore-evaluator-provider.ts
|
|
26257
|
+
// src/provisioning/providers/agentcore-evaluator-provider.ts
|
|
26305
26258
|
const CFN_PRESERVE_KEYS = /* @__PURE__ */ new Set(["AdditionalModelRequestFields"]);
|
|
26306
26259
|
const SDK_PRESERVE_KEYS = /* @__PURE__ */ new Set(["additionalModelRequestFields"]);
|
|
26307
26260
|
function evaluatorIdFromArn(arnOrId) {
|
|
@@ -26495,8 +26448,7 @@ var AgentCoreEvaluatorProvider = class {
|
|
|
26495
26448
|
}
|
|
26496
26449
|
};
|
|
26497
26450
|
|
|
26498
|
-
|
|
26499
|
-
//#region src/provisioning/providers/stepfunctions-provider.ts
|
|
26451
|
+
// src/provisioning/providers/stepfunctions-provider.ts
|
|
26500
26452
|
function stateMachineRevisionId(described) {
|
|
26501
26453
|
return described.revisionId ?? "INITIAL";
|
|
26502
26454
|
}
|
|
@@ -26904,8 +26856,7 @@ function wasMeaningfullyConfigured(value, discriminatorKey) {
|
|
|
26904
26856
|
return value[discriminatorKey] !== void 0;
|
|
26905
26857
|
}
|
|
26906
26858
|
|
|
26907
|
-
|
|
26908
|
-
//#region src/provisioning/providers/ecs-provider.ts
|
|
26859
|
+
// src/provisioning/providers/ecs-provider.ts
|
|
26909
26860
|
const registerTaskDefinitionLatch = new AmbiguousCreateLatch("ecs:RegisterTaskDefinition");
|
|
26910
26861
|
const taskDefinitionsRegisteredByThisProcess = new RecentIdSet();
|
|
26911
26862
|
function familyOfTaskDefinitionArn(arn) {
|
|
@@ -28522,8 +28473,7 @@ var ECSProvider = class {
|
|
|
28522
28473
|
}
|
|
28523
28474
|
};
|
|
28524
28475
|
|
|
28525
|
-
|
|
28526
|
-
//#region src/provisioning/providers/elbv2-provider.ts
|
|
28476
|
+
// src/provisioning/providers/elbv2-provider.ts
|
|
28527
28477
|
function loadBalancerNameFromArn(arn) {
|
|
28528
28478
|
return nameFromElbv2Arn(arn, ":loadbalancer/", 3);
|
|
28529
28479
|
}
|
|
@@ -30033,8 +29983,7 @@ var ELBv2Provider = class {
|
|
|
30033
29983
|
}
|
|
30034
29984
|
};
|
|
30035
29985
|
|
|
30036
|
-
|
|
30037
|
-
//#region src/provisioning/providers/rds-dbproxy-provider.ts
|
|
29986
|
+
// src/provisioning/providers/rds-dbproxy-provider.ts
|
|
30038
29987
|
const POLL_INTERVAL_MS$1 = 5e3;
|
|
30039
29988
|
const POLL_TIMEOUT_MS$1 = 18e5;
|
|
30040
29989
|
const RETAINED_ON_REMOVAL = [
|
|
@@ -30413,8 +30362,7 @@ var RDSDBProxyProvider = class {
|
|
|
30413
30362
|
}
|
|
30414
30363
|
};
|
|
30415
30364
|
|
|
30416
|
-
|
|
30417
|
-
//#region src/provisioning/providers/rds-dbproxy-endpoint-provider.ts
|
|
30365
|
+
// src/provisioning/providers/rds-dbproxy-endpoint-provider.ts
|
|
30418
30366
|
const POLL_INTERVAL_MS = 5e3;
|
|
30419
30367
|
const POLL_TIMEOUT_MS = 18e5;
|
|
30420
30368
|
var RDSDBProxyEndpointProvider = class {
|
|
@@ -30716,8 +30664,7 @@ var RDSDBProxyEndpointProvider = class {
|
|
|
30716
30664
|
}
|
|
30717
30665
|
};
|
|
30718
30666
|
|
|
30719
|
-
|
|
30720
|
-
//#region src/provisioning/providers/rds-dbproxy-targetgroup-provider.ts
|
|
30667
|
+
// src/provisioning/providers/rds-dbproxy-targetgroup-provider.ts
|
|
30721
30668
|
const RDS_TARGET_IDENTIFIER = /^[A-Za-z][A-Za-z0-9-]{0,62}$/;
|
|
30722
30669
|
function readTargetLists(values) {
|
|
30723
30670
|
const lists = {
|
|
@@ -31231,8 +31178,7 @@ function withoutKey(bag, key) {
|
|
|
31231
31178
|
return rest;
|
|
31232
31179
|
}
|
|
31233
31180
|
|
|
31234
|
-
|
|
31235
|
-
//#region src/provisioning/providers/docdb-shared.ts
|
|
31181
|
+
// src/provisioning/providers/docdb-shared.ts
|
|
31236
31182
|
function wrapDocDBFailure(logger, mask, error, build) {
|
|
31237
31183
|
const m = maskerOrIdentity(mask);
|
|
31238
31184
|
const failure = describeAwsFailure(error);
|
|
@@ -31315,8 +31261,7 @@ async function attachDocDBTags(client, logger, result, arn) {
|
|
|
31315
31261
|
}
|
|
31316
31262
|
}
|
|
31317
31263
|
|
|
31318
|
-
|
|
31319
|
-
//#region src/provisioning/providers/docdb-provider.ts
|
|
31264
|
+
// src/provisioning/providers/docdb-provider.ts
|
|
31320
31265
|
function masterUserPasswordToSend(properties, previousProperties, context) {
|
|
31321
31266
|
const desired = properties["MasterUserPassword"];
|
|
31322
31267
|
if (desired === void 0 || desired === null) return void 0;
|
|
@@ -31385,6 +31330,45 @@ const PORT_CHANGE_MEMBER_STATUSES = /* @__PURE__ */ new Set(["modifying", "reboo
|
|
|
31385
31330
|
function numberOrUndefined(value) {
|
|
31386
31331
|
return value == null ? void 0 : Number(value);
|
|
31387
31332
|
}
|
|
31333
|
+
function docdbGlobalClusterId(value) {
|
|
31334
|
+
return typeof value === "string" && value.trim() !== "" ? value : void 0;
|
|
31335
|
+
}
|
|
31336
|
+
function withRecordedGlobalCluster(bag, previousProperties) {
|
|
31337
|
+
const { GlobalClusterIdentifier: _dropped, ...rest } = bag;
|
|
31338
|
+
const previous = previousProperties["GlobalClusterIdentifier"];
|
|
31339
|
+
return previous === void 0 ? rest : {
|
|
31340
|
+
...rest,
|
|
31341
|
+
GlobalClusterIdentifier: previous
|
|
31342
|
+
};
|
|
31343
|
+
}
|
|
31344
|
+
function readableGlobalClusterId(value) {
|
|
31345
|
+
return value == null || typeof value === "string";
|
|
31346
|
+
}
|
|
31347
|
+
const DETACH_MAX_WAIT_MS = 18e5;
|
|
31348
|
+
const GLOBAL_CLUSTER_BUSY_MAX_WAIT_MS = 6e5;
|
|
31349
|
+
const TRANSIENT_DETACH_FAULTS = /* @__PURE__ */ new Set([
|
|
31350
|
+
"InvalidDBClusterStateFault",
|
|
31351
|
+
"InvalidGlobalClusterStateFault",
|
|
31352
|
+
"ThrottlingException",
|
|
31353
|
+
"Throttling",
|
|
31354
|
+
"RequestLimitExceeded"
|
|
31355
|
+
]);
|
|
31356
|
+
function awsErrorName(error) {
|
|
31357
|
+
return error?.name ?? "";
|
|
31358
|
+
}
|
|
31359
|
+
var GlobalClusterDetachError = class extends Error {
|
|
31360
|
+
constructor(message) {
|
|
31361
|
+
super(message);
|
|
31362
|
+
this.name = "GlobalClusterDetachError";
|
|
31363
|
+
}
|
|
31364
|
+
};
|
|
31365
|
+
function docdbEngineVersionToSend(properties, previousProperties, context) {
|
|
31366
|
+
if (context?.replayingState === true) return void 0;
|
|
31367
|
+
const desired = properties["EngineVersion"];
|
|
31368
|
+
if (desired == null) return void 0;
|
|
31369
|
+
const previous = previousProperties["EngineVersion"];
|
|
31370
|
+
return previous != null && String(previous) === String(desired) ? void 0 : desired;
|
|
31371
|
+
}
|
|
31388
31372
|
function clusterPortToSend(properties, previousProperties) {
|
|
31389
31373
|
if (properties["Port"] != null) return Number(properties["Port"]);
|
|
31390
31374
|
if (previousProperties["Port"] == null) return void 0;
|
|
@@ -31432,6 +31416,7 @@ var DocDBProvider = class {
|
|
|
31432
31416
|
"Tags",
|
|
31433
31417
|
"MasterUserPassword",
|
|
31434
31418
|
"RotateMasterUserPassword",
|
|
31419
|
+
"GlobalClusterIdentifier",
|
|
31435
31420
|
...DOCDB_CLUSTER_KEPT_ON_REMOVAL,
|
|
31436
31421
|
...DOCDB_CLUSTER_UNMEASURED_ON_REMOVAL
|
|
31437
31422
|
])], ["AWS::DocDB::DBInstance", /* @__PURE__ */ new Set([
|
|
@@ -31463,6 +31448,7 @@ var DocDBProvider = class {
|
|
|
31463
31448
|
"AvailabilityZones",
|
|
31464
31449
|
"CopyTagsToSnapshot",
|
|
31465
31450
|
"EnableCloudwatchLogsExports",
|
|
31451
|
+
"GlobalClusterIdentifier",
|
|
31466
31452
|
"ManageMasterUserPassword",
|
|
31467
31453
|
"MasterUserSecretKmsKeyId",
|
|
31468
31454
|
"NetworkType",
|
|
@@ -31513,9 +31499,9 @@ var DocDBProvider = class {
|
|
|
31513
31499
|
default: throw new ProvisioningError(`Unsupported resource type: ${resourceType}`, resourceType, logicalId, physicalId);
|
|
31514
31500
|
}
|
|
31515
31501
|
}
|
|
31516
|
-
async delete(logicalId, physicalId, resourceType,
|
|
31502
|
+
async delete(logicalId, physicalId, resourceType, properties, context) {
|
|
31517
31503
|
switch (resourceType) {
|
|
31518
|
-
case "AWS::DocDB::DBCluster": return this.deleteDBCluster(logicalId, physicalId, resourceType, context);
|
|
31504
|
+
case "AWS::DocDB::DBCluster": return this.deleteDBCluster(logicalId, physicalId, resourceType, properties, context);
|
|
31519
31505
|
case "AWS::DocDB::DBInstance": return this.deleteDBInstance(logicalId, physicalId, resourceType, context);
|
|
31520
31506
|
default: throw new ProvisioningError(`Unsupported resource type: ${resourceType}`, resourceType, logicalId, physicalId);
|
|
31521
31507
|
}
|
|
@@ -31534,6 +31520,11 @@ var DocDBProvider = class {
|
|
|
31534
31520
|
const { logTypes, scaling } = this.readClusterBlocks(properties, resourceType, logicalId, origin, true);
|
|
31535
31521
|
const managedPassword = this.readBooleanProperty("ManageMasterUserPassword", properties, resourceType, logicalId, origin);
|
|
31536
31522
|
const password = this.passwordBesideManaged(managedPassword, false, properties["MasterUserPassword"], resourceType, logicalId, origin);
|
|
31523
|
+
if (!readableGlobalClusterId(properties["GlobalClusterIdentifier"])) {
|
|
31524
|
+
if (!replayingState) this.refuseBlock(logicalId, resourceType, void 0, "GlobalClusterIdentifier is not a string");
|
|
31525
|
+
this.logger.warn(safeMsg`${logicalId} (${resourceType}): the recorded GlobalClusterIdentifier is unusable, so it is not sent.`);
|
|
31526
|
+
}
|
|
31527
|
+
const globalClusterId = docdbGlobalClusterId(properties["GlobalClusterIdentifier"]);
|
|
31537
31528
|
const dbClusterIdentifier = properties["DBClusterIdentifier"] || generatedNameFor("AWS::DocDB::DBCluster", logicalId);
|
|
31538
31529
|
let clusterCreated = false;
|
|
31539
31530
|
let createdResourceId;
|
|
@@ -31560,6 +31551,7 @@ var DocDBProvider = class {
|
|
|
31560
31551
|
MasterUserSecretKmsKeyId: properties["MasterUserSecretKmsKeyId"],
|
|
31561
31552
|
NetworkType: properties["NetworkType"],
|
|
31562
31553
|
StorageType: properties["StorageType"],
|
|
31554
|
+
...globalClusterId !== void 0 && { GlobalClusterIdentifier: globalClusterId },
|
|
31563
31555
|
...logTypes !== void 0 && logTypes.length > 0 && { EnableCloudwatchLogsExports: logTypes },
|
|
31564
31556
|
...scaling != null && { ServerlessV2ScalingConfiguration: scaling },
|
|
31565
31557
|
...tags.length > 0 && { Tags: tags }
|
|
@@ -31588,7 +31580,9 @@ var DocDBProvider = class {
|
|
|
31588
31580
|
physicalId
|
|
31589
31581
|
};
|
|
31590
31582
|
const { logTypes, scaling } = this.readClusterBlocks(properties, resourceType, logicalId, origin, false);
|
|
31583
|
+
const globalClusterPlan = await this.planGlobalClusterUpdate(physicalId, properties, previousProperties, resourceType, logicalId, origin, context?.desiredFromAwsReadback === true);
|
|
31591
31584
|
const logExportConfig = logTypes === void 0 ? void 0 : docdbLogExportChange(logTypes, docdbStringList(previousProperties["EnableCloudwatchLogsExports"]) ?? []);
|
|
31585
|
+
let detachedFrom;
|
|
31592
31586
|
try {
|
|
31593
31587
|
const credentials = await this.planMasterCredentials(physicalId, properties, previousProperties, resourceType, logicalId, context, origin);
|
|
31594
31588
|
const vpcSgIds = properties["VpcSecurityGroupIds"];
|
|
@@ -31602,10 +31596,16 @@ var DocDBProvider = class {
|
|
|
31602
31596
|
const storageChange = declaredChange(storageType, previousProperties["StorageType"], live?.StorageType ?? DOCDB_DEFAULT_STORAGE_TYPE);
|
|
31603
31597
|
const previousScaling = docdbServerlessScaling(previousProperties["ServerlessV2ScalingConfiguration"]);
|
|
31604
31598
|
const scalingChange = scaling != null && (scaling.MinCapacity !== previousScaling?.MinCapacity || scaling.MaxCapacity !== previousScaling?.MaxCapacity);
|
|
31599
|
+
if (globalClusterPlan.kind === "detach") {
|
|
31600
|
+
if (await this.detachFromGlobalCluster(logicalId, physicalId, globalClusterPlan.globalClusterId, {
|
|
31601
|
+
beforeDelete: false,
|
|
31602
|
+
removeProtection: false
|
|
31603
|
+
}, { stripped: false }, maskerOrIdentity(context?.maskSecrets))) detachedFrom = globalClusterPlan.globalClusterId;
|
|
31604
|
+
}
|
|
31605
31605
|
this.markChangedUnsettled(CLUSTER_MODIFY_UNSETTLED_KEYS, properties, previousProperties, context);
|
|
31606
31606
|
await this.getClient().send(new ModifyDBClusterCommand$1({
|
|
31607
31607
|
DBClusterIdentifier: physicalId,
|
|
31608
|
-
EngineVersion: properties
|
|
31608
|
+
EngineVersion: docdbEngineVersionToSend(properties, previousProperties, context),
|
|
31609
31609
|
DeletionProtection: properties["DeletionProtection"],
|
|
31610
31610
|
BackupRetentionPeriod: properties["BackupRetentionPeriod"] != null ? Number(properties["BackupRetentionPeriod"]) : void 0,
|
|
31611
31611
|
PreferredBackupWindow: properties["PreferredBackupWindow"],
|
|
@@ -31666,19 +31666,21 @@ var DocDBProvider = class {
|
|
|
31666
31666
|
...described,
|
|
31667
31667
|
Port: portToSend
|
|
31668
31668
|
} : described),
|
|
31669
|
-
...credentials.effectiveProperties !== void 0 && { effectiveProperties: credentials.effectiveProperties }
|
|
31669
|
+
...(credentials.effectiveProperties !== void 0 || globalClusterPlan.kind === "keep") && { effectiveProperties: globalClusterPlan.kind === "keep" ? withRecordedGlobalCluster(credentials.effectiveProperties ?? properties, previousProperties) : credentials.effectiveProperties }
|
|
31670
31670
|
};
|
|
31671
31671
|
} catch (error) {
|
|
31672
31672
|
if (error instanceof ProvisioningError) throw error;
|
|
31673
|
+
if (error instanceof GlobalClusterDetachError) throw markNonRetryable(new ProvisioningError(`Failed to update DocDB DBCluster ${logicalId}: ${error.message}`, resourceType, logicalId, physicalId, error));
|
|
31673
31674
|
const cause = error instanceof Error ? error : void 0;
|
|
31674
|
-
|
|
31675
|
+
const detachedNote = detachedFrom !== void 0 ? " (it was already detached from its global cluster, and stays a standalone cluster)" : "";
|
|
31676
|
+
throw this.wrapCaughtError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to update DocDB DBCluster ${logicalId}: ${text}${detachedNote}`, resourceType, logicalId, physicalId, cause));
|
|
31675
31677
|
}
|
|
31676
31678
|
}
|
|
31677
|
-
async deleteDBCluster(logicalId, physicalId, resourceType, context) {
|
|
31679
|
+
async deleteDBCluster(logicalId, physicalId, resourceType, properties, context) {
|
|
31678
31680
|
await deleteWithProtectionCompensation({
|
|
31679
31681
|
registry: this.protectionFlips,
|
|
31680
31682
|
key: protectionFlipKey(resourceType, physicalId, context?.expectedRegion),
|
|
31681
|
-
run: (flip) => this.deleteDBClusterOnce(logicalId, physicalId, resourceType, context, flip),
|
|
31683
|
+
run: (flip) => this.deleteDBClusterOnce(logicalId, physicalId, resourceType, properties, context, flip),
|
|
31682
31684
|
compensation: {
|
|
31683
31685
|
logicalId,
|
|
31684
31686
|
physicalId,
|
|
@@ -31702,8 +31704,10 @@ var DocDBProvider = class {
|
|
|
31702
31704
|
}
|
|
31703
31705
|
});
|
|
31704
31706
|
}
|
|
31705
|
-
async deleteDBClusterOnce(logicalId, physicalId, resourceType, context, flip) {
|
|
31707
|
+
async deleteDBClusterOnce(logicalId, physicalId, resourceType, properties, context, flip) {
|
|
31706
31708
|
this.logger.debug(`Deleting DocDB DBCluster ${logicalId}`);
|
|
31709
|
+
let detachedFrom;
|
|
31710
|
+
const progress = { stripped: false };
|
|
31707
31711
|
try {
|
|
31708
31712
|
if (context?.removeProtection === true) try {
|
|
31709
31713
|
await observeThenDisableProtection({
|
|
@@ -31725,6 +31729,11 @@ var DocDBProvider = class {
|
|
|
31725
31729
|
} catch (disableError) {
|
|
31726
31730
|
if (!isDocDBNotFoundError(disableError, "DBClusterNotFoundFault")) this.logger.debug(maskerOrIdentity(context?.maskSecrets)(`Could not disable deletion protection for DocDB DBCluster ${logicalId}: ${describeAwsFailure(disableError).detail}`));
|
|
31727
31731
|
}
|
|
31732
|
+
const globalClusterId = docdbGlobalClusterId(properties?.["GlobalClusterIdentifier"]);
|
|
31733
|
+
if (globalClusterId !== void 0) detachedFrom = await this.detachFromGlobalCluster(logicalId, physicalId, globalClusterId, {
|
|
31734
|
+
beforeDelete: true,
|
|
31735
|
+
removeProtection: context?.removeProtection === true
|
|
31736
|
+
}, progress, maskerOrIdentity(context?.maskSecrets)) ? globalClusterId : void 0;
|
|
31728
31737
|
const finalSnapshotId = context?.finalSnapshotIdentifier;
|
|
31729
31738
|
const sendDelete = () => this.getClient().send(new DeleteDBClusterCommand$1({
|
|
31730
31739
|
DBClusterIdentifier: physicalId,
|
|
@@ -31740,6 +31749,10 @@ var DocDBProvider = class {
|
|
|
31740
31749
|
this.logger.debug(`Successfully initiated deletion of DocDB DBCluster ${logicalId}`);
|
|
31741
31750
|
await this.waitForClusterDeleted(logicalId, physicalId);
|
|
31742
31751
|
} catch (error) {
|
|
31752
|
+
if (error instanceof GlobalClusterDetachError) {
|
|
31753
|
+
const detachFailure = markNotGone(markNonRetryable(new ProvisioningError(`Failed to delete DocDB DBCluster ${logicalId}: ${error.message}`, resourceType, logicalId, physicalId, error)));
|
|
31754
|
+
throw progress.stripped ? markDeleteStarted(detachFailure) : detachFailure;
|
|
31755
|
+
}
|
|
31743
31756
|
if (isDocDBNotFoundError(error, "DBClusterNotFoundFault")) {
|
|
31744
31757
|
const clientRegion = await this.getClient().config.region();
|
|
31745
31758
|
assertRegionMatch(clientRegion, context?.expectedRegion, resourceType, logicalId, physicalId);
|
|
@@ -31748,7 +31761,95 @@ var DocDBProvider = class {
|
|
|
31748
31761
|
return;
|
|
31749
31762
|
}
|
|
31750
31763
|
const cause = error instanceof Error ? error : void 0;
|
|
31751
|
-
|
|
31764
|
+
const detachedNote = detachedFrom !== void 0 ? " (it was already detached from its global cluster, and stays a standalone cluster)" : "";
|
|
31765
|
+
const failure = this.wrapDeleteError(context?.maskSecrets, error, (text) => new ProvisioningError(`Failed to delete DocDB DBCluster ${logicalId}: ${text}${detachedNote}`, resourceType, logicalId, physicalId, cause));
|
|
31766
|
+
throw progress.stripped ? markDeleteStarted(failure) : failure;
|
|
31767
|
+
}
|
|
31768
|
+
}
|
|
31769
|
+
wrapGlobalClusterDetachError(error, mask, build) {
|
|
31770
|
+
const failure = describeAwsFailure(error);
|
|
31771
|
+
if (failure.redacted) this.logger.debug(mask(build(mask(failure.detail))));
|
|
31772
|
+
return new GlobalClusterDetachError(build(mask(failure.summary)));
|
|
31773
|
+
}
|
|
31774
|
+
async detachFromGlobalCluster(logicalId, physicalId, globalClusterId, { beforeDelete, removeProtection }, progress, mask) {
|
|
31775
|
+
let cluster = await this.describeDBCluster(physicalId);
|
|
31776
|
+
for (let i = 0; removeProtection && cluster?.DeletionProtection === true && i < 6; i++) {
|
|
31777
|
+
await this.sleep(5e3);
|
|
31778
|
+
cluster = await this.describeDBCluster(physicalId);
|
|
31779
|
+
}
|
|
31780
|
+
if (cluster === void 0) return false;
|
|
31781
|
+
if (beforeDelete && cluster.DeletionProtection === true) throw new GlobalClusterDetachError(safeMsg`${physicalId} has deletion protection on, so cdkd did not detach it from global cluster ${globalClusterId}; turn it off (cdkd destroy --remove-protection does) and re-run`);
|
|
31782
|
+
const clusterArn = cluster.DBClusterArn;
|
|
31783
|
+
if (typeof clusterArn !== "string" || clusterArn === "") throw new GlobalClusterDetachError(safeMsg`could not read the ARN of ${physicalId} to detach it from global cluster ${globalClusterId}`);
|
|
31784
|
+
const startTime = Date.now();
|
|
31785
|
+
let delay = 5e3;
|
|
31786
|
+
const backOff = async () => {
|
|
31787
|
+
if (Date.now() - startTime >= DETACH_MAX_WAIT_MS) throw new GlobalClusterDetachError(safeMsg`timed out waiting for ${physicalId} to leave global cluster ${globalClusterId}`);
|
|
31788
|
+
await this.sleep(delay);
|
|
31789
|
+
delay = Math.min(delay * 2, 1e4);
|
|
31790
|
+
};
|
|
31791
|
+
const readMembers = async (build) => {
|
|
31792
|
+
try {
|
|
31793
|
+
return (await this.getClient().send(new DescribeGlobalClustersCommand$1({ GlobalClusterIdentifier: globalClusterId }))).GlobalClusters?.[0]?.GlobalClusterMembers ?? [];
|
|
31794
|
+
} catch (error) {
|
|
31795
|
+
const name = awsErrorName(error);
|
|
31796
|
+
if (name === "GlobalClusterNotFoundFault") return [];
|
|
31797
|
+
if (TRANSIENT_DETACH_FAULTS.has(name)) return void 0;
|
|
31798
|
+
throw this.wrapGlobalClusterDetachError(error, mask, build);
|
|
31799
|
+
}
|
|
31800
|
+
};
|
|
31801
|
+
const isMember = async (build) => {
|
|
31802
|
+
return (await readMembers(build))?.some((member) => member.DBClusterArn === clusterArn);
|
|
31803
|
+
};
|
|
31804
|
+
for (;;) {
|
|
31805
|
+
const members = await readMembers((text) => safeMsg`could not read whether ${physicalId} is a member of global cluster ${globalClusterId} (${text})`);
|
|
31806
|
+
if (members !== void 0) {
|
|
31807
|
+
const own = members.find((member) => member.DBClusterArn === clusterArn);
|
|
31808
|
+
if (own === void 0) return false;
|
|
31809
|
+
const others = members.filter((member) => member.DBClusterArn !== clusterArn).map((member) => /^arn:[^:]*:rds:[^:]*:[^:]*:cluster:(.+)$/.exec(member.DBClusterArn ?? "")?.[1] ?? "(unnamed)");
|
|
31810
|
+
if (own.IsWriter === true && others.length > 0) throw new GlobalClusterDetachError(safeMsg`${physicalId} is the primary of global cluster ${globalClusterId}, which still has other members (${others.join(", ")}); detach or delete them first, then re-run`);
|
|
31811
|
+
break;
|
|
31812
|
+
}
|
|
31813
|
+
await backOff();
|
|
31814
|
+
}
|
|
31815
|
+
let globalBusySince;
|
|
31816
|
+
for (;;) try {
|
|
31817
|
+
await this.getClient().send(new RemoveFromGlobalClusterCommand$1({
|
|
31818
|
+
GlobalClusterIdentifier: globalClusterId,
|
|
31819
|
+
DbClusterIdentifier: clusterArn
|
|
31820
|
+
}));
|
|
31821
|
+
progress.stripped = true;
|
|
31822
|
+
this.logger.info(beforeDelete ? safeMsg`Detaching DocDB DBCluster ${logicalId} from global cluster ${globalClusterId} before the delete` : safeMsg`Detaching DocDB DBCluster ${logicalId} from global cluster ${globalClusterId}: GlobalClusterIdentifier was removed`);
|
|
31823
|
+
break;
|
|
31824
|
+
} catch (error) {
|
|
31825
|
+
const name = awsErrorName(error);
|
|
31826
|
+
if (name === "GlobalClusterNotFoundFault") return false;
|
|
31827
|
+
if (name === "DBClusterNotFoundFault") {
|
|
31828
|
+
progress.stripped = true;
|
|
31829
|
+
break;
|
|
31830
|
+
}
|
|
31831
|
+
if (name === "InvalidGlobalClusterStateFault") {
|
|
31832
|
+
globalBusySince ??= Date.now();
|
|
31833
|
+
if (Date.now() - globalBusySince >= GLOBAL_CLUSTER_BUSY_MAX_WAIT_MS) throw this.wrapGlobalClusterDetachError(error, mask, (text) => safeMsg`detaching ${physicalId} from global cluster ${globalClusterId} failed (${text})`);
|
|
31834
|
+
}
|
|
31835
|
+
if (!TRANSIENT_DETACH_FAULTS.has(name)) throw this.wrapGlobalClusterDetachError(error, mask, (text) => safeMsg`detaching ${physicalId} from global cluster ${globalClusterId} failed (${text})`);
|
|
31836
|
+
await backOff();
|
|
31837
|
+
}
|
|
31838
|
+
for (;;) {
|
|
31839
|
+
if (await isMember((text) => safeMsg`could not confirm ${physicalId} left global cluster ${globalClusterId} (${text})`) === false) {
|
|
31840
|
+
let after;
|
|
31841
|
+
try {
|
|
31842
|
+
after = await this.describeDBCluster(physicalId);
|
|
31843
|
+
} catch (error) {
|
|
31844
|
+
if (!TRANSIENT_DETACH_FAULTS.has(awsErrorName(error))) throw error;
|
|
31845
|
+
await backOff();
|
|
31846
|
+
continue;
|
|
31847
|
+
}
|
|
31848
|
+
if (after === void 0) return true;
|
|
31849
|
+
this.logger.debug(safeMsg`DocDB DBCluster ${physicalId} status after the detach: ${after.Status}`);
|
|
31850
|
+
if (after.Status === "available") return true;
|
|
31851
|
+
}
|
|
31852
|
+
await backOff();
|
|
31752
31853
|
}
|
|
31753
31854
|
}
|
|
31754
31855
|
async createDBInstance(logicalId, resourceType, properties, mask, replayingState) {
|
|
@@ -31864,6 +31965,53 @@ var DocDBProvider = class {
|
|
|
31864
31965
|
refuseBlock(logicalId, resourceType, physicalId, text) {
|
|
31865
31966
|
throw markNonRetryable(new ProvisioningError(safeMsg`${resourceType === "AWS::DocDB::DBInstance" ? "DocDB DBInstance" : "DocDB DBCluster"} ${logicalId}: ${text}; nothing was changed.`, resourceType, logicalId, physicalId));
|
|
31866
31967
|
}
|
|
31968
|
+
async planGlobalClusterUpdate(physicalId, properties, previousProperties, resourceType, logicalId, origin, fromReadback) {
|
|
31969
|
+
const desired = properties["GlobalClusterIdentifier"];
|
|
31970
|
+
if (fromReadback && desired === void 0) return previousProperties["GlobalClusterIdentifier"] !== void 0 ? { kind: "keep" } : { kind: "none" };
|
|
31971
|
+
const readable = readableGlobalClusterId(desired);
|
|
31972
|
+
const desiredId = docdbGlobalClusterId(desired);
|
|
31973
|
+
const previousId = docdbGlobalClusterId(previousProperties["GlobalClusterIdentifier"]);
|
|
31974
|
+
if (readable && desiredId === previousId) return { kind: "none" };
|
|
31975
|
+
if (readable && desiredId === void 0 && previousId !== void 0) {
|
|
31976
|
+
if (origin.stateBorne) {
|
|
31977
|
+
const member = await this.liveGlobalClusterMatches(physicalId, previousId);
|
|
31978
|
+
if (member === void 0) this.logger.warn(safeMsg`${logicalId} (${resourceType}): the cluster's membership of global cluster ${previousId} could not be read, so the record treats it as absent; if it is still a member, a later destroy may need aws docdb remove-from-global-cluster first.`);
|
|
31979
|
+
if (member !== true) return { kind: "none" };
|
|
31980
|
+
this.logger.warn(safeMsg`${logicalId} (${resourceType}): the restored state has no GlobalClusterIdentifier, but cdkd did not add the cluster to global cluster ${previousId} (it was already a member), so it leaves it there.`);
|
|
31981
|
+
return { kind: "keep" };
|
|
31982
|
+
}
|
|
31983
|
+
return {
|
|
31984
|
+
kind: "detach",
|
|
31985
|
+
globalClusterId: previousId
|
|
31986
|
+
};
|
|
31987
|
+
}
|
|
31988
|
+
if (readable && await this.liveGlobalClusterMatches(physicalId, desiredId) === true) return { kind: "none" };
|
|
31989
|
+
const text = readable ? "Changing GlobalClusterIdentifier to a different global cluster is not supported unless the cluster is already part of the target global cluster (CloudFormation refuses it too). To join a different global cluster, replace the cluster, for example with a new DBClusterIdentifier" : "GlobalClusterIdentifier is not a string";
|
|
31990
|
+
if (!origin.stateBorne) this.refuseBlock(logicalId, resourceType, physicalId, text);
|
|
31991
|
+
this.logger.warn(safeMsg`${logicalId} (${resourceType}): ${text}; the cluster keeps its current global cluster membership.`);
|
|
31992
|
+
return { kind: "keep" };
|
|
31993
|
+
}
|
|
31994
|
+
async liveGlobalClusterMatches(physicalId, desiredId) {
|
|
31995
|
+
try {
|
|
31996
|
+
const arn = (await this.describeDBCluster(physicalId))?.DBClusterArn;
|
|
31997
|
+
if (typeof arn !== "string" || arn === "") return void 0;
|
|
31998
|
+
let liveId;
|
|
31999
|
+
let marker;
|
|
32000
|
+
do {
|
|
32001
|
+
const page = await this.getClient().send(new DescribeGlobalClustersCommand$1({ ...marker !== void 0 && { Marker: marker } }));
|
|
32002
|
+
const holder = (page.GlobalClusters ?? []).find((global) => (global.GlobalClusterMembers ?? []).some((member) => member.DBClusterArn === arn));
|
|
32003
|
+
if (holder !== void 0) {
|
|
32004
|
+
liveId = holder.GlobalClusterIdentifier;
|
|
32005
|
+
break;
|
|
32006
|
+
}
|
|
32007
|
+
marker = page.Marker;
|
|
32008
|
+
} while (marker);
|
|
32009
|
+
return liveId === desiredId;
|
|
32010
|
+
} catch (error) {
|
|
32011
|
+
this.logger.debug(safeMsg`Could not read a DocDB cluster's global cluster membership: ${describeAwsFailure(error).summary}`);
|
|
32012
|
+
return;
|
|
32013
|
+
}
|
|
32014
|
+
}
|
|
31867
32015
|
readClusterBlocks(properties, resourceType, logicalId, origin, creating) {
|
|
31868
32016
|
const leaveOut = (key) => {
|
|
31869
32017
|
this.logger.warn(safeMsg`${logicalId} (${resourceType}): the recorded ${key} is unusable, so it is not sent.`);
|
|
@@ -32149,6 +32297,7 @@ var DocDBProvider = class {
|
|
|
32149
32297
|
getDriftUnknownPaths(resourceType) {
|
|
32150
32298
|
if (resourceType === "AWS::DocDB::DBCluster") return [
|
|
32151
32299
|
"AvailabilityZones",
|
|
32300
|
+
"GlobalClusterIdentifier",
|
|
32152
32301
|
"MasterUserSecretKmsKeyId",
|
|
32153
32302
|
"RotateMasterUserPassword"
|
|
32154
32303
|
];
|
|
@@ -32307,8 +32456,7 @@ function securityGroupListChanged(sent, previous) {
|
|
|
32307
32456
|
return [...sent].sort().join(" ") !== [...before].sort().join(" ");
|
|
32308
32457
|
}
|
|
32309
32458
|
|
|
32310
|
-
|
|
32311
|
-
//#region src/provisioning/providers/docdb-subnet-group-provider.ts
|
|
32459
|
+
// src/provisioning/providers/docdb-subnet-group-provider.ts
|
|
32312
32460
|
var DocDBSubnetGroupProvider = class {
|
|
32313
32461
|
docdbClient;
|
|
32314
32462
|
createClient;
|
|
@@ -32445,8 +32593,7 @@ var DocDBSubnetGroupProvider = class {
|
|
|
32445
32593
|
}
|
|
32446
32594
|
};
|
|
32447
32595
|
|
|
32448
|
-
|
|
32449
|
-
//#region src/provisioning/providers/route53-provider.ts
|
|
32596
|
+
// src/provisioning/providers/route53-provider.ts
|
|
32450
32597
|
function isZoneDisabledForMutationError(error) {
|
|
32451
32598
|
return error instanceof Error && error.message.includes("is marked disabled for mutation");
|
|
32452
32599
|
}
|
|
@@ -33601,8 +33748,7 @@ var Route53Provider = class {
|
|
|
33601
33748
|
}
|
|
33602
33749
|
};
|
|
33603
33750
|
|
|
33604
|
-
|
|
33605
|
-
//#region src/provisioning/providers/wafv2-provider.ts
|
|
33751
|
+
// src/provisioning/providers/wafv2-provider.ts
|
|
33606
33752
|
function sanitizeDescription(value) {
|
|
33607
33753
|
if (value === void 0 || value === null) return void 0;
|
|
33608
33754
|
if (typeof value === "string" && value.length === 0) return void 0;
|
|
@@ -34068,8 +34214,7 @@ var WAFv2WebACLProvider = class {
|
|
|
34068
34214
|
}
|
|
34069
34215
|
};
|
|
34070
34216
|
|
|
34071
|
-
|
|
34072
|
-
//#region src/provisioning/providers/cognito-provider.ts
|
|
34217
|
+
// src/provisioning/providers/cognito-provider.ts
|
|
34073
34218
|
const USER_POOL_ECHO_MEMBERS = [
|
|
34074
34219
|
"LambdaConfig",
|
|
34075
34220
|
"UserPoolAddOns",
|
|
@@ -35216,11 +35361,11 @@ var CognitoUserPoolProvider = class {
|
|
|
35216
35361
|
}
|
|
35217
35362
|
};
|
|
35218
35363
|
|
|
35219
|
-
|
|
35220
|
-
//#region src/provisioning/providers/elasticache-provider.ts
|
|
35364
|
+
// src/provisioning/providers/elasticache-provider.ts
|
|
35221
35365
|
const CACHE_DELETE_WAIT_MS = Math.max(6e5, slowCcOperationTimeoutMs("AWS::ElastiCache::CacheCluster", "DELETE"));
|
|
35222
35366
|
const NODE_TYPE_MODIFY_WAIT_MS = Math.max(36e5, slowCcOperationTimeoutMs("AWS::ElastiCache::CacheCluster", "UPDATE"));
|
|
35223
35367
|
const MODIFY_DROPPED_AFTER_MS = 12e4;
|
|
35368
|
+
const TERMINAL_CLUSTER_STATUSES = /* @__PURE__ */ new Set(["restore-failed", "incompatible-network"]);
|
|
35224
35369
|
function availabilityZonesNotCovered(a, b) {
|
|
35225
35370
|
const remaining = [...b];
|
|
35226
35371
|
const out = [];
|
|
@@ -35325,6 +35470,7 @@ var ElastiCacheProvider = class {
|
|
|
35325
35470
|
"Tags",
|
|
35326
35471
|
"NotificationTopicArn",
|
|
35327
35472
|
"SnapshotName",
|
|
35473
|
+
"SnapshotArns",
|
|
35328
35474
|
"LogDeliveryConfigurations",
|
|
35329
35475
|
"NetworkType",
|
|
35330
35476
|
"IpDiscovery",
|
|
@@ -35476,6 +35622,7 @@ var ElastiCacheProvider = class {
|
|
|
35476
35622
|
AutoMinorVersionUpgrade: properties["AutoMinorVersionUpgrade"],
|
|
35477
35623
|
NotificationTopicArn: properties["NotificationTopicArn"],
|
|
35478
35624
|
SnapshotName: properties["SnapshotName"],
|
|
35625
|
+
SnapshotArns: properties["SnapshotArns"],
|
|
35479
35626
|
LogDeliveryConfigurations: properties["LogDeliveryConfigurations"],
|
|
35480
35627
|
NetworkType: properties["NetworkType"],
|
|
35481
35628
|
IpDiscovery: properties["IpDiscovery"],
|
|
@@ -35725,6 +35872,7 @@ var ElastiCacheProvider = class {
|
|
|
35725
35872
|
const cluster = await this.describeCacheCluster(cacheClusterId);
|
|
35726
35873
|
const status = cluster?.CacheClusterStatus;
|
|
35727
35874
|
this.logger.debug(`CacheCluster ${cacheClusterId} status: ${status}`);
|
|
35875
|
+
if (status !== void 0 && TERMINAL_CLUSTER_STATUSES.has(status)) throw new Error(safeMsg`CacheCluster ${cacheClusterId} is ${status} and will not become available. Check the cluster's events (aws elasticache describe-events --source-type cache-cluster --source-identifier ${cacheClusterId}) for the reason.`);
|
|
35728
35876
|
const liveNodeType = cluster?.CacheNodeType;
|
|
35729
35877
|
const removalDone = removedNodeIds.length === 0 || cluster?.CacheNodes !== void 0 && !cluster.CacheNodes.some((n) => n.CacheNodeId !== void 0 && removedNodeIds.includes(n.CacheNodeId));
|
|
35730
35878
|
if (status === "available" && removalDone && (expectedNodeType === void 0 || liveNodeType === expectedNodeType)) return;
|
|
@@ -35756,6 +35904,9 @@ var ElastiCacheProvider = class {
|
|
|
35756
35904
|
sleep(ms) {
|
|
35757
35905
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
35758
35906
|
}
|
|
35907
|
+
getDriftUnknownPaths(resourceType) {
|
|
35908
|
+
return resourceType === "AWS::ElastiCache::CacheCluster" ? ["SnapshotArns", "SnapshotName"] : [];
|
|
35909
|
+
}
|
|
35759
35910
|
async readCurrentState(physicalId, _logicalId, resourceType) {
|
|
35760
35911
|
switch (resourceType) {
|
|
35761
35912
|
case "AWS::ElastiCache::CacheCluster": return this.readCacheCluster(physicalId);
|
|
@@ -35863,8 +36014,7 @@ var ElastiCacheProvider = class {
|
|
|
35863
36014
|
}
|
|
35864
36015
|
};
|
|
35865
36016
|
|
|
35866
|
-
|
|
35867
|
-
//#region src/provisioning/providers/servicediscovery-provider.ts
|
|
36017
|
+
// src/provisioning/providers/servicediscovery-provider.ts
|
|
35868
36018
|
const PUBLIC_DNS_NAMESPACE_DEFAULT_SOA_TTL = 60;
|
|
35869
36019
|
const PRIVATE_DNS_NAMESPACE_DEFAULT_SOA_TTL = 15;
|
|
35870
36020
|
const CREATE_SERVICE_NAMESPACE_LAG_MAX_RETRIES = 9;
|
|
@@ -36797,8 +36947,7 @@ var ServiceDiscoveryProvider = class ServiceDiscoveryProvider {
|
|
|
36797
36947
|
}
|
|
36798
36948
|
};
|
|
36799
36949
|
|
|
36800
|
-
|
|
36801
|
-
//#region src/provisioning/providers/appsync-provider.ts
|
|
36950
|
+
// src/provisioning/providers/appsync-provider.ts
|
|
36802
36951
|
const createGraphqlApiLatch = new AmbiguousCreateLatch("CreateGraphqlApi");
|
|
36803
36952
|
const graphqlApisCreatedByThisProcess = new RecentIdSet();
|
|
36804
36953
|
const MAX_GRAPHQL_API_LIST_PAGES = 40;
|
|
@@ -38460,8 +38609,7 @@ var AppSyncProvider = class {
|
|
|
38460
38609
|
}
|
|
38461
38610
|
};
|
|
38462
38611
|
|
|
38463
|
-
|
|
38464
|
-
//#region src/provisioning/providers/glue-provider.ts
|
|
38612
|
+
// src/provisioning/providers/glue-provider.ts
|
|
38465
38613
|
const GLUE_TABLE_ID_FORMAT = {
|
|
38466
38614
|
label: "Glue Table",
|
|
38467
38615
|
segments: ["databaseName", "tableName"]
|
|
@@ -40802,8 +40950,7 @@ var GlueTriggerProvider = class {
|
|
|
40802
40950
|
}
|
|
40803
40951
|
};
|
|
40804
40952
|
|
|
40805
|
-
|
|
40806
|
-
//#region src/provisioning/providers/kms-provider.ts
|
|
40953
|
+
// src/provisioning/providers/kms-provider.ts
|
|
40807
40954
|
const createKeyLatch = new AmbiguousCreateLatch("CreateKey");
|
|
40808
40955
|
const keysCreatedByThisProcess = new RecentIdSet();
|
|
40809
40956
|
const pendingKeys = /* @__PURE__ */ new Map();
|
|
@@ -41434,8 +41581,7 @@ function templateBool(value) {
|
|
|
41434
41581
|
return Boolean(value);
|
|
41435
41582
|
}
|
|
41436
41583
|
|
|
41437
|
-
|
|
41438
|
-
//#region src/provisioning/providers/budgets-budget-provider.ts
|
|
41584
|
+
// src/provisioning/providers/budgets-budget-provider.ts
|
|
41439
41585
|
const BUDGET_LIST_WHAT = {
|
|
41440
41586
|
NotificationsWithSubscribers: "entries with a Notification (NotificationType, ComparisonOperator, numeric Threshold) and Subscribers (SubscriptionType, Address)",
|
|
41441
41587
|
ResourceTags: "tags with a string Key"
|
|
@@ -42170,8 +42316,7 @@ var BudgetsBudgetProvider = class {
|
|
|
42170
42316
|
}
|
|
42171
42317
|
};
|
|
42172
42318
|
|
|
42173
|
-
|
|
42174
|
-
//#region src/provisioning/providers/kinesis-provider.ts
|
|
42319
|
+
// src/provisioning/providers/kinesis-provider.ts
|
|
42175
42320
|
function isKmsEncryption(value) {
|
|
42176
42321
|
if (!value) return false;
|
|
42177
42322
|
return value["EncryptionType"] === "KMS";
|
|
@@ -42831,8 +42976,7 @@ var KinesisStreamProvider = class {
|
|
|
42831
42976
|
}
|
|
42832
42977
|
};
|
|
42833
42978
|
|
|
42834
|
-
|
|
42835
|
-
//#region src/provisioning/providers/kinesis-streamconsumer-provider.ts
|
|
42979
|
+
// src/provisioning/providers/kinesis-streamconsumer-provider.ts
|
|
42836
42980
|
function consumerArnParts(consumerArn) {
|
|
42837
42981
|
const at = consumerArn.lastIndexOf("/consumer/");
|
|
42838
42982
|
if (at <= 0) return void 0;
|
|
@@ -43053,8 +43197,7 @@ function tagListToMap(tags) {
|
|
|
43053
43197
|
return Object.fromEntries(tags.map((t) => [t.Key, t.Value]));
|
|
43054
43198
|
}
|
|
43055
43199
|
|
|
43056
|
-
|
|
43057
|
-
//#region src/provisioning/providers/scheduler-schedule-provider.ts
|
|
43200
|
+
// src/provisioning/providers/scheduler-schedule-provider.ts
|
|
43058
43201
|
const RECORDED_CREATION_DATE_KEY = "cdkd:CreationDate";
|
|
43059
43202
|
function recordedCreationDate(attributes) {
|
|
43060
43203
|
const value = attributes?.[RECORDED_CREATION_DATE_KEY];
|
|
@@ -43490,8 +43633,7 @@ var SchedulerScheduleProvider = class {
|
|
|
43490
43633
|
}
|
|
43491
43634
|
};
|
|
43492
43635
|
|
|
43493
|
-
|
|
43494
|
-
//#region src/provisioning/providers/pipes-provider.ts
|
|
43636
|
+
// src/provisioning/providers/pipes-provider.ts
|
|
43495
43637
|
const PIPE_TYPE = "AWS::Pipes::Pipe";
|
|
43496
43638
|
function isPipeName(id) {
|
|
43497
43639
|
return /^[.\-_A-Za-z0-9]{1,64}$/.test(id);
|
|
@@ -44125,8 +44267,7 @@ var PipesPipeProvider = class {
|
|
|
44125
44267
|
}
|
|
44126
44268
|
};
|
|
44127
44269
|
|
|
44128
|
-
|
|
44129
|
-
//#region src/provisioning/providers/server-clock.ts
|
|
44270
|
+
// src/provisioning/providers/server-clock.ts
|
|
44130
44271
|
const SERVER_CLOCK_MARGIN_MS = 5e3;
|
|
44131
44272
|
const CLOCK_FALLBACK_MARGIN_MS = 3e5;
|
|
44132
44273
|
const readings = /* @__PURE__ */ new WeakMap();
|
|
@@ -44163,8 +44304,7 @@ function earliestOwnCreationTime(firstSentLocalMs, reading) {
|
|
|
44163
44304
|
return firstSentLocalMs + (reading.serverDateMs - reading.receivedAtMs) - SERVER_CLOCK_MARGIN_MS;
|
|
44164
44305
|
}
|
|
44165
44306
|
|
|
44166
|
-
|
|
44167
|
-
//#region src/provisioning/providers/efs-provider.ts
|
|
44307
|
+
// src/provisioning/providers/efs-provider.ts
|
|
44168
44308
|
function samePosixUser(requested, described) {
|
|
44169
44309
|
if (requested == null || described == null) return requested == null && described == null;
|
|
44170
44310
|
const gids = (user) => JSON.stringify([...new Set(user.SecondaryGids ?? [])].sort((a, b) => a - b));
|
|
@@ -45006,8 +45146,7 @@ var EFSProvider = class {
|
|
|
45006
45146
|
}
|
|
45007
45147
|
};
|
|
45008
45148
|
|
|
45009
|
-
|
|
45010
|
-
//#region src/provisioning/providers/fsx-filesystem-provider.ts
|
|
45149
|
+
// src/provisioning/providers/fsx-filesystem-provider.ts
|
|
45011
45150
|
const DEFAULT_MAX_WAIT_MS$3 = 36e5;
|
|
45012
45151
|
const DEFAULT_POLL_INTERVAL_MS$3 = 15e3;
|
|
45013
45152
|
const FILE_SYSTEM_ID_PATTERN = /^fs-[0-9a-f]+$/;
|
|
@@ -46237,13 +46376,12 @@ var FSxFileSystemProvider = class {
|
|
|
46237
46376
|
}
|
|
46238
46377
|
};
|
|
46239
46378
|
|
|
46240
|
-
|
|
46241
|
-
|
|
46242
|
-
function isRecord$1(value) {
|
|
46379
|
+
// src/provisioning/emr-configuration.ts
|
|
46380
|
+
function isRecord$2(value) {
|
|
46243
46381
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
46244
46382
|
}
|
|
46245
46383
|
function toSdkConfiguration(raw) {
|
|
46246
|
-
if (!isRecord$
|
|
46384
|
+
if (!isRecord$2(raw)) return raw;
|
|
46247
46385
|
const { ConfigurationProperties, Configurations, ...rest } = raw;
|
|
46248
46386
|
return {
|
|
46249
46387
|
...rest,
|
|
@@ -46260,9 +46398,9 @@ function toSdkStepConfigs(value) {
|
|
|
46260
46398
|
if (value === void 0) return void 0;
|
|
46261
46399
|
if (!Array.isArray(value)) return value;
|
|
46262
46400
|
return value.map((step) => {
|
|
46263
|
-
if (!isRecord$
|
|
46401
|
+
if (!isRecord$2(step)) return step;
|
|
46264
46402
|
const hadoopJarStep = step["HadoopJarStep"];
|
|
46265
|
-
if (!isRecord$
|
|
46403
|
+
if (!isRecord$2(hadoopJarStep) || hadoopJarStep["StepProperties"] === void 0) return step;
|
|
46266
46404
|
const { StepProperties, ...restHadoopJarStep } = hadoopJarStep;
|
|
46267
46405
|
return {
|
|
46268
46406
|
...step,
|
|
@@ -46277,7 +46415,7 @@ function toSdkInstanceTypeConfigs(value) {
|
|
|
46277
46415
|
if (value === void 0) return void 0;
|
|
46278
46416
|
if (!Array.isArray(value)) return value;
|
|
46279
46417
|
return value.map((instanceTypeConfig) => {
|
|
46280
|
-
if (!isRecord$
|
|
46418
|
+
if (!isRecord$2(instanceTypeConfig) || instanceTypeConfig["Configurations"] === void 0) return instanceTypeConfig;
|
|
46281
46419
|
return {
|
|
46282
46420
|
...instanceTypeConfig,
|
|
46283
46421
|
Configurations: toSdkConfigurations(instanceTypeConfig["Configurations"])
|
|
@@ -46285,8 +46423,7 @@ function toSdkInstanceTypeConfigs(value) {
|
|
|
46285
46423
|
});
|
|
46286
46424
|
}
|
|
46287
46425
|
|
|
46288
|
-
|
|
46289
|
-
//#region src/provisioning/providers/emr-instance-group-config-provider.ts
|
|
46426
|
+
// src/provisioning/providers/emr-instance-group-config-provider.ts
|
|
46290
46427
|
const DEFAULT_MAX_WAIT_MS$2 = 36e5;
|
|
46291
46428
|
const DEFAULT_POLL_INTERVAL_MS$2 = 15e3;
|
|
46292
46429
|
const READY_STATES$1 = /* @__PURE__ */ new Set(["RUNNING"]);
|
|
@@ -46660,8 +46797,7 @@ var EMRInstanceGroupConfigProvider = class {
|
|
|
46660
46797
|
}
|
|
46661
46798
|
};
|
|
46662
46799
|
|
|
46663
|
-
|
|
46664
|
-
//#region src/provisioning/providers/emr-instance-fleet-config-provider.ts
|
|
46800
|
+
// src/provisioning/providers/emr-instance-fleet-config-provider.ts
|
|
46665
46801
|
const DEFAULT_MAX_WAIT_MS$1 = 36e5;
|
|
46666
46802
|
const DEFAULT_POLL_INTERVAL_MS$1 = 15e3;
|
|
46667
46803
|
const READY_STATES = /* @__PURE__ */ new Set(["RUNNING"]);
|
|
@@ -47009,8 +47145,7 @@ var EMRInstanceFleetConfigProvider = class {
|
|
|
47009
47145
|
}
|
|
47010
47146
|
};
|
|
47011
47147
|
|
|
47012
|
-
|
|
47013
|
-
//#region src/provisioning/providers/emr-cluster-provider.ts
|
|
47148
|
+
// src/provisioning/providers/emr-cluster-provider.ts
|
|
47014
47149
|
const DEFAULT_MAX_WAIT_MS = 36e5;
|
|
47015
47150
|
const DEFAULT_POLL_INTERVAL_MS = 15e3;
|
|
47016
47151
|
const CREATE_READY_STATES = /* @__PURE__ */ new Set(["WAITING", "RUNNING"]);
|
|
@@ -48012,8 +48147,7 @@ var EMRClusterProvider = class {
|
|
|
48012
48147
|
}
|
|
48013
48148
|
};
|
|
48014
48149
|
|
|
48015
|
-
|
|
48016
|
-
//#region src/provisioning/providers/firehose-provider.ts
|
|
48150
|
+
// src/provisioning/providers/firehose-provider.ts
|
|
48017
48151
|
const ENCRYPTION_KEY = "DeliveryStreamEncryptionConfigurationInput";
|
|
48018
48152
|
function readEncryptionInput(value, emptyIsAbsent) {
|
|
48019
48153
|
if (value === void 0 || value === null) return { kind: "absent" };
|
|
@@ -48106,7 +48240,8 @@ var FirehoseProvider = class {
|
|
|
48106
48240
|
"AmazonopensearchserviceDestinationConfiguration",
|
|
48107
48241
|
"SplunkDestinationConfiguration",
|
|
48108
48242
|
"AmazonOpenSearchServerlessDestinationConfiguration",
|
|
48109
|
-
"DeliveryStreamEncryptionConfigurationInput"
|
|
48243
|
+
"DeliveryStreamEncryptionConfigurationInput",
|
|
48244
|
+
"IcebergDestinationConfiguration"
|
|
48110
48245
|
])]]);
|
|
48111
48246
|
getClient() {
|
|
48112
48247
|
if (!this.client) {
|
|
@@ -48258,6 +48393,7 @@ var FirehoseProvider = class {
|
|
|
48258
48393
|
VpcConfiguration: aossConfig["VpcConfiguration"]
|
|
48259
48394
|
};
|
|
48260
48395
|
}
|
|
48396
|
+
if (properties["IcebergDestinationConfiguration"]) input.IcebergDestinationConfiguration = this.mapIcebergDestinationConfiguration(properties["IcebergDestinationConfiguration"]);
|
|
48261
48397
|
if (properties["DeliveryStreamEncryptionConfigurationInput"]) {
|
|
48262
48398
|
const encConfig = properties["DeliveryStreamEncryptionConfigurationInput"];
|
|
48263
48399
|
input.DeliveryStreamEncryptionConfigurationInput = {
|
|
@@ -48837,6 +48973,15 @@ var FirehoseProvider = class {
|
|
|
48837
48973
|
IcebergDestinationUpdate: this.mapIcebergConfigToUpdate(nextConfig)
|
|
48838
48974
|
}));
|
|
48839
48975
|
}
|
|
48976
|
+
mapIcebergDestinationConfiguration(config) {
|
|
48977
|
+
const result = this.mapIcebergConfigToUpdate(config);
|
|
48978
|
+
const catalog = config["CatalogConfiguration"];
|
|
48979
|
+
if (catalog !== void 0) result.CatalogConfiguration = {
|
|
48980
|
+
...catalog["CatalogArn"] !== void 0 && { CatalogARN: catalog["CatalogArn"] },
|
|
48981
|
+
...catalog["WarehouseLocation"] !== void 0 && { WarehouseLocation: catalog["WarehouseLocation"] }
|
|
48982
|
+
};
|
|
48983
|
+
return result;
|
|
48984
|
+
}
|
|
48840
48985
|
mapIcebergConfigToUpdate(config) {
|
|
48841
48986
|
const result = {};
|
|
48842
48987
|
if (config["DestinationTableConfigurationList"] !== void 0) result.DestinationTableConfigurationList = config["DestinationTableConfigurationList"];
|
|
@@ -48845,12 +48990,11 @@ var FirehoseProvider = class {
|
|
|
48845
48990
|
if (config["BufferingHints"] !== void 0) result.BufferingHints = config["BufferingHints"];
|
|
48846
48991
|
if (config["CloudWatchLoggingOptions"] !== void 0) result.CloudWatchLoggingOptions = config["CloudWatchLoggingOptions"];
|
|
48847
48992
|
if (config["ProcessingConfiguration"] !== void 0) result.ProcessingConfiguration = config["ProcessingConfiguration"];
|
|
48848
|
-
if (config["
|
|
48993
|
+
if (config["s3BackupMode"] !== void 0) result.S3BackupMode = config["s3BackupMode"];
|
|
48849
48994
|
if (config["RetryOptions"] !== void 0) result.RetryOptions = config["RetryOptions"];
|
|
48850
48995
|
const roleArn = config["RoleARN"] ?? config["RoleArn"];
|
|
48851
48996
|
if (roleArn !== void 0) result.RoleARN = roleArn;
|
|
48852
48997
|
if (config["AppendOnly"] !== void 0) result.AppendOnly = config["AppendOnly"];
|
|
48853
|
-
if (config["CatalogConfiguration"] !== void 0) result.CatalogConfiguration = config["CatalogConfiguration"];
|
|
48854
48998
|
if (config["S3Configuration"] !== void 0) result.S3Configuration = this.mapS3DestinationConfiguration(config["S3Configuration"]);
|
|
48855
48999
|
return result;
|
|
48856
49000
|
}
|
|
@@ -48942,6 +49086,7 @@ var FirehoseProvider = class {
|
|
|
48942
49086
|
if (directPut?.ThroughputHintInMBs !== void 0) result["DirectPutSourceConfiguration"] = { ThroughputHintInMBs: directPut.ThroughputHintInMBs };
|
|
48943
49087
|
const dest = desc.Destinations?.[0];
|
|
48944
49088
|
if (dest?.ExtendedS3DestinationDescription) result["ExtendedS3DestinationConfiguration"] = mapExtendedS3DescriptionToCfn(dest.ExtendedS3DestinationDescription);
|
|
49089
|
+
else if (dest?.IcebergDestinationDescription) result["IcebergDestinationConfiguration"] = mapIcebergDescriptionToCfn(dest.IcebergDestinationDescription);
|
|
48945
49090
|
else if (dest?.S3DestinationDescription) result["S3DestinationConfiguration"] = mapS3DescriptionToCfn(dest.S3DestinationDescription);
|
|
48946
49091
|
else if (dest?.RedshiftDestinationDescription) result["RedshiftDestinationConfiguration"] = mapRedshiftDescriptionToCfn(dest.RedshiftDestinationDescription);
|
|
48947
49092
|
else if (dest?.ElasticsearchDestinationDescription) result["ElasticsearchDestinationConfiguration"] = mapNonS3DestinationToCfn(dest.ElasticsearchDestinationDescription);
|
|
@@ -49104,6 +49249,31 @@ function mapRedshiftDescriptionToCfn(desc) {
|
|
|
49104
49249
|
if (desc["S3BackupDescription"]) out["S3BackupConfiguration"] = mapS3DescriptionToCfn(desc["S3BackupDescription"]);
|
|
49105
49250
|
return out;
|
|
49106
49251
|
}
|
|
49252
|
+
function mapIcebergDescriptionToCfn(desc) {
|
|
49253
|
+
const out = {};
|
|
49254
|
+
for (const k of [
|
|
49255
|
+
"DestinationTableConfigurationList",
|
|
49256
|
+
"SchemaEvolutionConfiguration",
|
|
49257
|
+
"TableCreationConfiguration",
|
|
49258
|
+
"BufferingHints",
|
|
49259
|
+
"CloudWatchLoggingOptions",
|
|
49260
|
+
"ProcessingConfiguration",
|
|
49261
|
+
"RetryOptions",
|
|
49262
|
+
"RoleARN",
|
|
49263
|
+
"AppendOnly"
|
|
49264
|
+
]) {
|
|
49265
|
+
const v = pickDefinedDeep(desc[k]);
|
|
49266
|
+
if (v !== void 0) out[k] = v;
|
|
49267
|
+
}
|
|
49268
|
+
if (desc["S3BackupMode"] !== void 0) out["s3BackupMode"] = desc["S3BackupMode"];
|
|
49269
|
+
const catalog = desc["CatalogConfiguration"];
|
|
49270
|
+
if (catalog) out["CatalogConfiguration"] = {
|
|
49271
|
+
...catalog["CatalogARN"] !== void 0 && { CatalogArn: catalog["CatalogARN"] },
|
|
49272
|
+
...catalog["WarehouseLocation"] !== void 0 && { WarehouseLocation: catalog["WarehouseLocation"] }
|
|
49273
|
+
};
|
|
49274
|
+
if (desc["S3DestinationDescription"]) out["S3Configuration"] = mapS3DescriptionToCfn(desc["S3DestinationDescription"]);
|
|
49275
|
+
return out;
|
|
49276
|
+
}
|
|
49107
49277
|
function mapHttpEndpointDescriptionToCfn(desc) {
|
|
49108
49278
|
const out = {};
|
|
49109
49279
|
for (const k of [
|
|
@@ -49125,8 +49295,7 @@ function mapHttpEndpointDescriptionToCfn(desc) {
|
|
|
49125
49295
|
return out;
|
|
49126
49296
|
}
|
|
49127
49297
|
|
|
49128
|
-
|
|
49129
|
-
//#region src/provisioning/providers/cloudtrail-provider.ts
|
|
49298
|
+
// src/provisioning/providers/cloudtrail-provider.ts
|
|
49130
49299
|
const DEFAULT_EVENT_SELECTORS = Object.freeze([Object.freeze({
|
|
49131
49300
|
ReadWriteType: "All",
|
|
49132
49301
|
IncludeManagementEvents: true
|
|
@@ -49681,8 +49850,7 @@ var CloudTrailProvider = class {
|
|
|
49681
49850
|
}
|
|
49682
49851
|
};
|
|
49683
49852
|
|
|
49684
|
-
|
|
49685
|
-
//#region src/provisioning/providers/codebuild-provider.ts
|
|
49853
|
+
// src/provisioning/providers/codebuild-provider.ts
|
|
49686
49854
|
const DEFAULT_PROJECT_VISIBILITY = "PRIVATE";
|
|
49687
49855
|
const DEFAULT_ENCRYPTION_KEY = "alias/aws/s3";
|
|
49688
49856
|
function readVisibility(properties, mask) {
|
|
@@ -49700,6 +49868,89 @@ function readVisibility(properties, mask) {
|
|
|
49700
49868
|
...typeof role === "string" && role !== "" && { resourceAccessRole: role }
|
|
49701
49869
|
};
|
|
49702
49870
|
}
|
|
49871
|
+
const DEFAULT_WEBHOOK_BUILD_TYPE = "BUILD";
|
|
49872
|
+
const NEW_PROJECT_WEBHOOK_ATTEMPTS = 4;
|
|
49873
|
+
const NEW_PROJECT_WEBHOOK_RETRY_BASE_MS = 2e3;
|
|
49874
|
+
const DEFAULT_WEBHOOK_SOURCE_LOCATION = "CODEBUILD_DEFAULT_WEBHOOK_SOURCE_LOCATION";
|
|
49875
|
+
const DEFAULT_WEBHOOK_SCOPE = "GITHUB_ORGANIZATION";
|
|
49876
|
+
function relayedConnectionRace(error, detail) {
|
|
49877
|
+
if (!(error instanceof Error) || error.name !== "OAuthProviderException") return "";
|
|
49878
|
+
if (detail.includes("security token included in the request is invalid")) return " (The security token included in the request is invalid. (Service: CodeBuild))";
|
|
49879
|
+
if (detail.includes("not authorized to access connection")) return " (The service role is not authorized to perform access to the connection Source.Auth names)";
|
|
49880
|
+
return "";
|
|
49881
|
+
}
|
|
49882
|
+
function isRecord$1(value) {
|
|
49883
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
49884
|
+
}
|
|
49885
|
+
function readTriggers(properties, mask) {
|
|
49886
|
+
const triggers = properties["Triggers"];
|
|
49887
|
+
if (triggers == null) return { kind: "unmanaged" };
|
|
49888
|
+
const refuse = (key, expected, value) => ({
|
|
49889
|
+
kind: "unusable",
|
|
49890
|
+
reason: `AWS::CodeBuild::Project ${key} must be ${expected}, got ${JSON.stringify(maskDeep(value, mask))}`
|
|
49891
|
+
});
|
|
49892
|
+
if (!isRecord$1(triggers)) return refuse("Triggers", "an object", triggers);
|
|
49893
|
+
const declared = triggers["Webhook"];
|
|
49894
|
+
const webhook = declared == null ? void 0 : coerceCfnBoolean(declared);
|
|
49895
|
+
if (declared != null && webhook === void 0) return refuse("Triggers.Webhook", "a boolean", declared);
|
|
49896
|
+
const groups = triggers["FilterGroups"];
|
|
49897
|
+
const buildType = triggers["BuildType"];
|
|
49898
|
+
if (webhook !== true) {
|
|
49899
|
+
for (const [key, value, noun] of [[
|
|
49900
|
+
"FilterGroups",
|
|
49901
|
+
groups,
|
|
49902
|
+
"filter groups"
|
|
49903
|
+
], [
|
|
49904
|
+
"BuildType",
|
|
49905
|
+
buildType,
|
|
49906
|
+
"build type"
|
|
49907
|
+
]]) if (value != null) return {
|
|
49908
|
+
kind: "unusable",
|
|
49909
|
+
reason: `AWS::CodeBuild::Project Triggers.${key}: cannot specify ${noun} when webhook is disabled`
|
|
49910
|
+
};
|
|
49911
|
+
return { kind: webhook === false ? "disabled" : "unmanaged" };
|
|
49912
|
+
}
|
|
49913
|
+
if (buildType != null && typeof buildType !== "string") return refuse("Triggers.BuildType", "a string", buildType);
|
|
49914
|
+
let filterGroups;
|
|
49915
|
+
if (groups != null) {
|
|
49916
|
+
if (!Array.isArray(groups) || !groups.every(Array.isArray)) return refuse("Triggers.FilterGroups", "a list of filter lists", groups);
|
|
49917
|
+
const rows = groups;
|
|
49918
|
+
if (!rows.every((group) => group.every(isRecord$1))) return refuse("Triggers.FilterGroups", "a list of filter lists", groups);
|
|
49919
|
+
filterGroups = rows.map((group) => group.map((filter) => {
|
|
49920
|
+
const excluded = filter["ExcludeMatchedPattern"];
|
|
49921
|
+
return {
|
|
49922
|
+
type: filter["Type"],
|
|
49923
|
+
pattern: filter["Pattern"],
|
|
49924
|
+
...excluded != null && { excludeMatchedPattern: coerceCfnBoolean(excluded) ?? excluded }
|
|
49925
|
+
};
|
|
49926
|
+
}));
|
|
49927
|
+
}
|
|
49928
|
+
const policy = triggers["PullRequestBuildPolicy"];
|
|
49929
|
+
if (policy != null && !isRecord$1(policy)) return refuse("Triggers.PullRequestBuildPolicy", "an object", policy);
|
|
49930
|
+
const scope = triggers["ScopeConfiguration"];
|
|
49931
|
+
if (scope != null && !isRecord$1(scope)) return refuse("Triggers.ScopeConfiguration", "an object", scope);
|
|
49932
|
+
if (scope != null) {
|
|
49933
|
+
const source = properties["Source"];
|
|
49934
|
+
if (!isRecord$1(source) || source["Location"] !== DEFAULT_WEBHOOK_SOURCE_LOCATION) return {
|
|
49935
|
+
kind: "unusable",
|
|
49936
|
+
reason: `AWS::CodeBuild::Project Triggers.ScopeConfiguration: cannot specify a scope when the project source location is not ${DEFAULT_WEBHOOK_SOURCE_LOCATION}`
|
|
49937
|
+
};
|
|
49938
|
+
}
|
|
49939
|
+
return {
|
|
49940
|
+
kind: "enabled",
|
|
49941
|
+
...filterGroups !== void 0 && { filterGroups },
|
|
49942
|
+
...buildType != null && { buildType },
|
|
49943
|
+
...scope != null && { scopeConfiguration: {
|
|
49944
|
+
name: scope["Name"],
|
|
49945
|
+
scope: scope["Scope"] ?? DEFAULT_WEBHOOK_SCOPE,
|
|
49946
|
+
...scope["Domain"] != null && { domain: scope["Domain"] }
|
|
49947
|
+
} },
|
|
49948
|
+
...policy != null && { pullRequestBuildPolicy: {
|
|
49949
|
+
requiresCommentApproval: policy["RequiresCommentApproval"],
|
|
49950
|
+
...policy["ApproverRoles"] != null && { approverRoles: policy["ApproverRoles"] }
|
|
49951
|
+
} }
|
|
49952
|
+
};
|
|
49953
|
+
}
|
|
49703
49954
|
var CodeBuildProvider = class {
|
|
49704
49955
|
client;
|
|
49705
49956
|
createClient;
|
|
@@ -49730,7 +49981,8 @@ var CodeBuildProvider = class {
|
|
|
49730
49981
|
"SourceVersion",
|
|
49731
49982
|
"AutoRetryLimit",
|
|
49732
49983
|
"Visibility",
|
|
49733
|
-
"ResourceAccessRole"
|
|
49984
|
+
"ResourceAccessRole",
|
|
49985
|
+
"Triggers"
|
|
49734
49986
|
])]]);
|
|
49735
49987
|
getClient() {
|
|
49736
49988
|
if (!this.client) {
|
|
@@ -49928,6 +50180,11 @@ var CodeBuildProvider = class {
|
|
|
49928
50180
|
if (context?.replayingState !== true) throw new ProvisioningError(visibilityRead.reason, resourceType, logicalId);
|
|
49929
50181
|
this.logger.warn(mask(`${visibilityRead.reason}. Replaying a state record, so CodeBuild Project ${logicalId} is left ${DEFAULT_PROJECT_VISIBILITY} with no resource access role rather than refusing the restore`));
|
|
49930
50182
|
}
|
|
50183
|
+
const triggersRead = readTriggers(properties, mask);
|
|
50184
|
+
if (triggersRead.kind === "unusable") {
|
|
50185
|
+
if (context?.replayingState !== true) throw new ProvisioningError(triggersRead.reason, resourceType, logicalId);
|
|
50186
|
+
this.logger.warn(mask(`${triggersRead.reason}. Replaying a state record, so CodeBuild Project ${logicalId} gets no webhook rather than refusing the restore`));
|
|
50187
|
+
}
|
|
49931
50188
|
let createdName;
|
|
49932
50189
|
try {
|
|
49933
50190
|
const input = this.mapProperties(() => generatedNameFor("AWS::CodeBuild::Project", logicalId), properties);
|
|
@@ -49936,6 +50193,7 @@ var CodeBuildProvider = class {
|
|
|
49936
50193
|
const projectArn = result.project.arn;
|
|
49937
50194
|
createdName = projectName;
|
|
49938
50195
|
reportCreatedResource(logicalId, resourceType, createdName);
|
|
50196
|
+
if (triggersRead.kind === "enabled") await this.createWebhookOnNewProject(projectName, triggersRead);
|
|
49939
50197
|
if (visibilityRead.kind === "usable" && (visibilityRead.visibility !== DEFAULT_PROJECT_VISIBILITY || visibilityRead.resourceAccessRole !== void 0)) await this.applyVisibility(projectArn, visibilityRead);
|
|
49940
50198
|
this.logger.debug(`Successfully created CodeBuild Project ${logicalId}: ${projectName}`);
|
|
49941
50199
|
return {
|
|
@@ -49945,11 +50203,67 @@ var CodeBuildProvider = class {
|
|
|
49945
50203
|
} catch (error) {
|
|
49946
50204
|
if (createdName !== void 0) markAuxiliaryFailure(error, logicalId);
|
|
49947
50205
|
const cause = error instanceof Error ? error : void 0;
|
|
49948
|
-
const thrown = this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to create CodeBuild Project ${logicalId}: ${text}`, resourceType, logicalId, void 0, cause));
|
|
50206
|
+
const thrown = this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to create CodeBuild Project ${logicalId}: ${text}`, resourceType, logicalId, void 0, cause), createdName === void 0);
|
|
49949
50207
|
if (createdName !== void 0) markCreatedBeforeFailure(thrown, logicalId, resourceType, createdName);
|
|
49950
50208
|
throw thrown;
|
|
49951
50209
|
}
|
|
49952
50210
|
}
|
|
50211
|
+
async createWebhook(projectName, read) {
|
|
50212
|
+
await this.getCreateClient().send(new CreateWebhookCommand({
|
|
50213
|
+
projectName,
|
|
50214
|
+
...read.filterGroups !== void 0 && { filterGroups: read.filterGroups },
|
|
50215
|
+
...read.buildType !== void 0 && { buildType: read.buildType },
|
|
50216
|
+
...read.scopeConfiguration !== void 0 && { scopeConfiguration: read.scopeConfiguration },
|
|
50217
|
+
...read.pullRequestBuildPolicy !== void 0 && { pullRequestBuildPolicy: read.pullRequestBuildPolicy }
|
|
50218
|
+
}));
|
|
50219
|
+
}
|
|
50220
|
+
async createWebhookOnNewProject(projectName, read) {
|
|
50221
|
+
const watch = startInterruptWatch(`The webhook of CodeBuild Project ${projectName}`);
|
|
50222
|
+
let mayHaveLanded = false;
|
|
50223
|
+
try {
|
|
50224
|
+
for (let attempt = 1;; attempt++) try {
|
|
50225
|
+
await this.createWebhook(projectName, read);
|
|
50226
|
+
return;
|
|
50227
|
+
} catch (error) {
|
|
50228
|
+
if (!(error instanceof Error)) throw error;
|
|
50229
|
+
if (mayHaveLanded && error.name === "ResourceAlreadyExistsException") return;
|
|
50230
|
+
const ambiguous = isAmbiguousOutcomeError(error);
|
|
50231
|
+
mayHaveLanded ||= ambiguous;
|
|
50232
|
+
if (!(ambiguous || isRetryableTransientError(error, error.message)) || attempt === NEW_PROJECT_WEBHOOK_ATTEMPTS) throw markNonRetryable(error);
|
|
50233
|
+
let remaining = NEW_PROJECT_WEBHOOK_RETRY_BASE_MS * 2 ** (attempt - 1);
|
|
50234
|
+
while (remaining > 0) {
|
|
50235
|
+
if (watch.isInterrupted()) throw watch.onInterrupted();
|
|
50236
|
+
const chunk = Math.min(1e3, remaining);
|
|
50237
|
+
await this.sleep(chunk);
|
|
50238
|
+
remaining -= chunk;
|
|
50239
|
+
}
|
|
50240
|
+
if (watch.isInterrupted()) throw watch.onInterrupted();
|
|
50241
|
+
}
|
|
50242
|
+
} finally {
|
|
50243
|
+
watch.dispose();
|
|
50244
|
+
}
|
|
50245
|
+
}
|
|
50246
|
+
sleep(ms) {
|
|
50247
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
50248
|
+
}
|
|
50249
|
+
async reconcileWebhook(projectName, read, liveWebhook) {
|
|
50250
|
+
if (read.kind === "disabled" && liveWebhook) {
|
|
50251
|
+
await this.getClient().send(new DeleteWebhookCommand({ projectName }));
|
|
50252
|
+
return;
|
|
50253
|
+
}
|
|
50254
|
+
if (read.kind !== "enabled") return;
|
|
50255
|
+
if (!liveWebhook) {
|
|
50256
|
+
await this.createWebhook(projectName, read);
|
|
50257
|
+
return;
|
|
50258
|
+
}
|
|
50259
|
+
await this.getClient().send(new UpdateWebhookCommand({
|
|
50260
|
+
projectName,
|
|
50261
|
+
filterGroups: read.filterGroups ?? [],
|
|
50262
|
+
buildType: read.buildType ?? DEFAULT_WEBHOOK_BUILD_TYPE,
|
|
50263
|
+
rotateSecret: false,
|
|
50264
|
+
...read.pullRequestBuildPolicy !== void 0 && { pullRequestBuildPolicy: read.pullRequestBuildPolicy }
|
|
50265
|
+
}));
|
|
50266
|
+
}
|
|
49953
50267
|
async applyVisibility(projectArn, read) {
|
|
49954
50268
|
await this.getClient().send(new UpdateProjectVisibilityCommand({
|
|
49955
50269
|
projectArn,
|
|
@@ -49961,6 +50275,11 @@ var CodeBuildProvider = class {
|
|
|
49961
50275
|
this.logger.debug(`Updating CodeBuild Project ${logicalId}: ${physicalId}`);
|
|
49962
50276
|
const mask = maskerOrIdentity(context?.maskSecrets);
|
|
49963
50277
|
assertRegionMatch(context?.expectedRegion ? await this.getClient().config.region() : void 0, context?.expectedRegion, resourceType, logicalId, physicalId, "pre-update");
|
|
50278
|
+
const triggersRead = readTriggers(properties, mask);
|
|
50279
|
+
if (triggersRead.kind === "unusable") {
|
|
50280
|
+
if (context?.replayingState !== true) throw new ProvisioningError(triggersRead.reason, resourceType, logicalId, physicalId);
|
|
50281
|
+
this.logger.warn(mask(`${triggersRead.reason}. Replaying a state record, so the webhook of CodeBuild Project ${physicalId} is left unchanged`));
|
|
50282
|
+
}
|
|
49964
50283
|
try {
|
|
49965
50284
|
const input = this.mapProperties(() => physicalId, properties);
|
|
49966
50285
|
input.name = physicalId;
|
|
@@ -49969,6 +50288,9 @@ var CodeBuildProvider = class {
|
|
|
49969
50288
|
if (!declaredKey(properties["EncryptionKey"]) && declaredKey(previousProperties["EncryptionKey"])) input.encryptionKey = DEFAULT_ENCRYPTION_KEY;
|
|
49970
50289
|
if (properties["Tags"] == null && previousProperties["Tags"] != null) input.tags = [];
|
|
49971
50290
|
const updated = await this.getClient().send(new UpdateProjectCommand(input));
|
|
50291
|
+
const liveWebhook = updated.project?.webhook;
|
|
50292
|
+
await this.reconcileWebhook(physicalId, triggersRead, liveWebhook != null);
|
|
50293
|
+
if (triggersRead.kind === "enabled" && triggersRead.scopeConfiguration !== void 0 && liveWebhook != null && Object.entries(triggersRead.scopeConfiguration).some(([key, value]) => liveWebhook.scopeConfiguration?.[key] !== value)) this.logger.warn(mask(`The Triggers.ScopeConfiguration of CodeBuild Project ${physicalId} differs from its live webhook, which cannot change scope: the webhook keeps its scope. Delete it with Webhook: false, then deploy Webhook: true to apply the new one`));
|
|
49972
50294
|
const desiredVisibility = readVisibility(properties, mask);
|
|
49973
50295
|
const recorded = readVisibility(previousProperties, mask);
|
|
49974
50296
|
if (desiredVisibility.kind === "unusable") {
|
|
@@ -49986,14 +50308,14 @@ var CodeBuildProvider = class {
|
|
|
49986
50308
|
};
|
|
49987
50309
|
} catch (error) {
|
|
49988
50310
|
const cause = error instanceof Error ? error : void 0;
|
|
49989
|
-
throw this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to update CodeBuild Project ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
50311
|
+
throw this.wrapCaughtError(mask, error, (text) => new ProvisioningError(`Failed to update CodeBuild Project ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause), true);
|
|
49990
50312
|
}
|
|
49991
50313
|
}
|
|
49992
|
-
wrapCaughtError(mask, error, build) {
|
|
50314
|
+
wrapCaughtError(mask, error, build, retryConnectionRace) {
|
|
49993
50315
|
const failure = describeAwsFailure(error);
|
|
49994
50316
|
if (!failure.redacted) return wrapMaskedAwsError(mask, error, build);
|
|
49995
50317
|
this.logger.debug(mask(build(mask(failure.detail)).message));
|
|
49996
|
-
const wrapped = build(`${mask(failure.summary)}${relayedNameCollision(failure.detail)}`);
|
|
50318
|
+
const wrapped = build(`${mask(failure.summary)}${relayedNameCollision(failure.detail)}` + (retryConnectionRace ? relayedConnectionRace(error, failure.detail) : ""));
|
|
49997
50319
|
return error instanceof Error ? markRedactedCause(wrapped) : wrapped;
|
|
49998
50320
|
}
|
|
49999
50321
|
async delete(logicalId, physicalId, resourceType, _properties, context) {
|
|
@@ -50009,7 +50331,7 @@ var CodeBuildProvider = class {
|
|
|
50009
50331
|
return;
|
|
50010
50332
|
}
|
|
50011
50333
|
const cause = error instanceof Error ? error : void 0;
|
|
50012
|
-
const thrown = this.wrapCaughtError(maskerOrIdentity(context?.maskSecrets), error, (text) => new ProvisioningError(`Failed to delete CodeBuild Project ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause));
|
|
50334
|
+
const thrown = this.wrapCaughtError(maskerOrIdentity(context?.maskSecrets), error, (text) => new ProvisioningError(`Failed to delete CodeBuild Project ${logicalId}: ${text}`, resourceType, logicalId, physicalId, cause), false);
|
|
50013
50335
|
throw error instanceof Error && error.name.includes("NotFound") ? markNotGone(thrown) : thrown;
|
|
50014
50336
|
}
|
|
50015
50337
|
}
|
|
@@ -50189,7 +50511,7 @@ var CodeBuildProvider = class {
|
|
|
50189
50511
|
return result;
|
|
50190
50512
|
}
|
|
50191
50513
|
getDriftUnknownPaths() {
|
|
50192
|
-
return ["Source.Auth"];
|
|
50514
|
+
return ["Source.Auth", "Triggers"];
|
|
50193
50515
|
}
|
|
50194
50516
|
async import(input) {
|
|
50195
50517
|
const explicit = resolveExplicitPhysicalId(input, "Name");
|
|
@@ -50206,8 +50528,7 @@ var CodeBuildProvider = class {
|
|
|
50206
50528
|
}
|
|
50207
50529
|
};
|
|
50208
50530
|
|
|
50209
|
-
|
|
50210
|
-
//#region src/provisioning/providers/codecommit-repository-provider.ts
|
|
50531
|
+
// src/provisioning/providers/codecommit-repository-provider.ts
|
|
50211
50532
|
function toSdkTagMap(tags) {
|
|
50212
50533
|
if (!tags || tags.length === 0) return void 0;
|
|
50213
50534
|
const out = {};
|
|
@@ -50742,8 +51063,7 @@ var CodeCommitRepositoryProvider = class {
|
|
|
50742
51063
|
}
|
|
50743
51064
|
};
|
|
50744
51065
|
|
|
50745
|
-
|
|
50746
|
-
//#region src/provisioning/providers/dlm-lifecycle-policy-provider.ts
|
|
51066
|
+
// src/provisioning/providers/dlm-lifecycle-policy-provider.ts
|
|
50747
51067
|
const KEPT_ON_REMOVAL = [
|
|
50748
51068
|
"Description",
|
|
50749
51069
|
"ExecutionRoleArn",
|
|
@@ -51030,8 +51350,7 @@ var DLMLifecyclePolicyProvider = class {
|
|
|
51030
51350
|
}
|
|
51031
51351
|
};
|
|
51032
51352
|
|
|
51033
|
-
|
|
51034
|
-
//#region src/provisioning/providers/s3-vectors-provider.ts
|
|
51353
|
+
// src/provisioning/providers/s3-vectors-provider.ts
|
|
51035
51354
|
var S3VectorsProvider = class {
|
|
51036
51355
|
client;
|
|
51037
51356
|
createClient;
|
|
@@ -51251,8 +51570,7 @@ var S3VectorsProvider = class {
|
|
|
51251
51570
|
}
|
|
51252
51571
|
};
|
|
51253
51572
|
|
|
51254
|
-
|
|
51255
|
-
//#region src/provisioning/providers/s3-directory-bucket-provider.ts
|
|
51573
|
+
// src/provisioning/providers/s3-directory-bucket-provider.ts
|
|
51256
51574
|
function notEmptyRefusalMessage(bucketName, maskSecrets) {
|
|
51257
51575
|
const mask = maskerOrIdentity(maskSecrets);
|
|
51258
51576
|
const secretDerived = mask(bucketName) !== bucketName;
|
|
@@ -52077,8 +52395,7 @@ var S3DirectoryBucketProvider = class {
|
|
|
52077
52395
|
}
|
|
52078
52396
|
};
|
|
52079
52397
|
|
|
52080
|
-
|
|
52081
|
-
//#region src/provisioning/providers/s3-tables-provider.ts
|
|
52398
|
+
// src/provisioning/providers/s3-tables-provider.ts
|
|
52082
52399
|
const S3_TABLES_NAMESPACE_ID_FORMAT = {
|
|
52083
52400
|
label: "S3 Tables Namespace",
|
|
52084
52401
|
segments: ["tableBucketARN", "namespace"]
|
|
@@ -53295,8 +53612,7 @@ var S3TablesProvider = class {
|
|
|
53295
53612
|
}
|
|
53296
53613
|
};
|
|
53297
53614
|
|
|
53298
|
-
|
|
53299
|
-
//#region src/provisioning/providers/ecr-provider.ts
|
|
53615
|
+
// src/provisioning/providers/ecr-provider.ts
|
|
53300
53616
|
var ECRProvider = class {
|
|
53301
53617
|
client;
|
|
53302
53618
|
createClient;
|
|
@@ -53589,8 +53905,7 @@ var ECRProvider = class {
|
|
|
53589
53905
|
}
|
|
53590
53906
|
};
|
|
53591
53907
|
|
|
53592
|
-
|
|
53593
|
-
//#region src/provisioning/nested-stack-messages.ts
|
|
53908
|
+
// src/provisioning/nested-stack-messages.ts
|
|
53594
53909
|
function nestedStackChildFailureMessage(childStackName, errorCount, alsoSkippedCount, alsoInterrupted, inspectCommand, holeNote = "") {
|
|
53595
53910
|
const extra = [];
|
|
53596
53911
|
if (alsoSkippedCount > 0) extra.push(`${alsoSkippedCount} resource(s) were also skipped`);
|
|
@@ -53598,8 +53913,7 @@ function nestedStackChildFailureMessage(childStackName, errorCount, alsoSkippedC
|
|
|
53598
53913
|
return `Nested stack ${childStackName} failed to destroy: ${errorCount} resource(s) failed to delete` + (extra.length > 0 ? ` (${extra.join("; ")})` : "") + ". The child's state is PRESERVED and still lists them — inspect it, resolve the failure, and re-run the destroy. The parent's record of this nested stack is kept so the child stays reachable." + holeNote + `\nInspect it with: ${inspectCommand}`;
|
|
53599
53914
|
}
|
|
53600
53915
|
|
|
53601
|
-
|
|
53602
|
-
//#region src/provisioning/providers/nested-stack-provider.ts
|
|
53916
|
+
// src/provisioning/providers/nested-stack-provider.ts
|
|
53603
53917
|
function isAbsoluteCrossPlatform(p) {
|
|
53604
53918
|
return isAbsoluteAssetPath(p);
|
|
53605
53919
|
}
|
|
@@ -53968,8 +54282,7 @@ function inheritedPhysicalNameCopiesOf(bag) {
|
|
|
53968
54282
|
return copies === void 0 || copies.size === 0 ? void 0 : new Set(copies);
|
|
53969
54283
|
}
|
|
53970
54284
|
|
|
53971
|
-
|
|
53972
|
-
//#region src/provisioning/providers/wait-condition-handle-provider.ts
|
|
54285
|
+
// src/provisioning/providers/wait-condition-handle-provider.ts
|
|
53973
54286
|
var WaitConditionHandleProvider = class {
|
|
53974
54287
|
logger = getLogger().child("WaitConditionHandleProvider");
|
|
53975
54288
|
handledProperties = /* @__PURE__ */ new Map([["AWS::CloudFormation::WaitConditionHandle", /* @__PURE__ */ new Set([])]]);
|
|
@@ -54006,8 +54319,7 @@ var WaitConditionHandleProvider = class {
|
|
|
54006
54319
|
}
|
|
54007
54320
|
};
|
|
54008
54321
|
|
|
54009
|
-
|
|
54010
|
-
//#region src/provisioning/providers/acm-certificate-provider.ts
|
|
54322
|
+
// src/provisioning/providers/acm-certificate-provider.ts
|
|
54011
54323
|
function certificateInUseByName(error) {
|
|
54012
54324
|
let current = error;
|
|
54013
54325
|
for (let depth = 0; depth < 5 && current instanceof Error; depth++) {
|
|
@@ -54405,6 +54717,5 @@ var ACMCertificateProvider = class {
|
|
|
54405
54717
|
}
|
|
54406
54718
|
};
|
|
54407
54719
|
|
|
54408
|
-
//#endregion
|
|
54409
54720
|
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 };
|
|
54410
|
-
//# sourceMappingURL=provider-classes-
|
|
54721
|
+
//# sourceMappingURL=provider-classes-DGFOKPO9.js.map
|