@go-to-k/cdkd 0.291.25 → 0.291.26
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-B32vpt_E.js → asg-provider-Dbqbr89e.js} +2 -2
- package/dist/{asg-provider-B32vpt_E.js.map → asg-provider-Dbqbr89e.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-JdJuqXID.js → deploy-engine-BZps_IKn.js} +1500 -702
- package/dist/deploy-engine-BZps_IKn.js.map +1 -0
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/{program-DGa6mbzV.js → program-BALgPCWL.js} +154 -65
- package/dist/{program-DGa6mbzV.js.map → program-BALgPCWL.js.map} +1 -1
- package/dist/{version-BuS5njuZ.js → version-BkoR4hMq.js} +2 -2
- package/dist/{version-BuS5njuZ.js.map → version-BkoR4hMq.js.map} +1 -1
- package/package.json +2 -2
- package/dist/deploy-engine-JdJuqXID.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { $ as yellow, $i as synthesisStatusMessage, $n as refuseMalformedOrphanRecordsForDestroy, $r as forceQuitRecoveryClause, $t as configIntegerRefusal, A as createPreDeleteFinalSnapshot, Aa as credentialFingerprint, Ai as validateContainerRepoName, An as hasReadableOutputs, Ao as retryClassificationText, Ar as TEMPLATE_SOURCED_RULES, At as deleteSkipReason, B as isStatefulRecreateTargetSync, Ba as absoluteAssemblyPathEscape, Bi as getDockerCmd, Bn as malformedOrphansRefusalMessage, Br as maskSecretsInText, Bt as isImpossibleEmptyStoredAttribute, C as namesAnyDeclaredParameter, Ca as expectedOwnerParam, Ci as assertAssetBucketRegion, Cn as STATE_REGION_DIVERGED, Co as shellQuote, Cr as describeTypeWithThrottleRetry, Ct as compositeIdSkipResult, D as PRE_DELETE_SNAPSHOT_TYPES, Da as ambientClientDefaults, Di as parseBootstrapMarker, Dn as deployRefusesOrphanRowsReason, Do as isTransientServerError, Dr as STATE_SOURCED_BASELINE_RULES, Dt as maskerOrIdentity, E as ATOMIC_FINAL_SNAPSHOT_TYPES, Ea as derivePartitionAndUrlSuffix, Ei as isCrossRegionRedirect, En as UNREADABLE_RESOURCES_MAP_ROW, Eo as isThrottlingError, Er as TemplateParser, Et as maskDeep, F as extractDeploymentEventError, Fa as defineOwnKey, Fi as describeDockerExecFailure, Fn as malformedExportSourceWarning, Fr as identityKeyFor, Ft as carriesDynamicReference, G as toCfnInteger, Ga as resolveBucketRegion, Gi as runDockerForeground, Gn as malformedResourceEntriesWarning, Gr as redactSecretsForState, Gt as isSettledInstanceState, H as WARM_THROUGHPUT_MEMBERS, Ha as renderAssemblyPathEscape, Hi as isMalformedEnvKey, Hn as malformedOutputsRefusalMessage, Hr as recordMaskOnlyValue, Ht as isUnboundTemplateParameter, I as makeSiblingClaimReader, Ia as hasOwnKey, Ii as describeDockerFailure, In as malformedLocalOutputsWarning, Ir as isSingleDynamicReferenceToken, It as carriesFetchableDynamicReference, J as bold, Ja as resetAwsClients, Ji as escapeRegExp, Jn as malformedStateRefusalMessage, Jr as S3StateBackend, Jt as resolveExplicitPhysicalId, K as toFiniteNumber, Ka as AwsClients, Ki as runDockerStreaming, Kn as malformedResourcePropertiesWarning, Kr as scrubResourceRecord, Kt as WAFv2WebACLProvider, L as planOrphanAdoption, La as hasPlainPrototype, Li as dockerSpawnEnvWithSensitive, Ln as malformedOrphanRecordsRefusalMessage, Lr as isUncertifiedBaselineMaskPosition, Lt as cfnRefValueFromPhysicalId, M as refusesFinalSnapshot, Ma as failedStageNote, Mi as buildDockerImage, Mn as isReadableOrphanRecord, Mo as safeStringify, Mr as createSecretMasker, Mt as disableInstanceApiTermination, N as unsupportedFinalSnapshotError, Na as globMatches, Ni as resolveDockerContextDirectory, Nn as isReadableResourceEntry, Nr as dynamicReferenceTokens, Nt as isTerminationProtectionPropagationError, O as buildFinalSnapshotIdentifier, Oa as ambientCredentialConfig, Oi as readBootstrapMarkerBody, On as displayLogicalId, Oo as markNonRetryable, Or as STATE_SOURCED_CROSS_GENERATION_RULES, Ot as UNSPECIFIED_SKIP_REASON, P as makeCanonicalizePropertiesFn, Pa as processStackMessages, Pi as describeDockerCapturedOutput, Pn as malformedExportNamesWarning, Pr as errorCauseChain, Pt as IntrinsicFunctionResolver, Q as red, Qa as CdkdError, Qi as Synthesizer, Qn as refuseMalformedOrphanRecords, Qr as buildLockContentionMessage, Qt as configBooleanRefusal, R as MULTI_REGION_RECREATE_BLOCKED_TYPES, Ra as nullPrototypeRecord, Ri as finchSecretArgvRefusal, Rn as malformedOrphanRecordsWarning, Rr as markSameGenerationBag, Rt as coerceParameterTypedValue, S as computeParameterTaint, Sa as decodeListingKey, Si as BOOTSTRAP_MARKER_PREFIX, Sn as INTRINSIC_KEYS, So as pasteableCommand, Sr as findSilentDropProperties, St as compositeIdSeparatorRefusal, T as resourcesNamingDeclaredParameter, Ta as canonicalizeRegion, Ti as getBootstrapMarkerKey, Tn as UNREADABLE_ORPHANS_CONTAINER_ROW, To as isRetryableTransientError, Tr as DagBuilder, Tt as createMaskedRetryLogger, U as coerceWarmThroughput$1, Ua as resolveAssemblyPath, Ui as partitionSensitiveEnv, Un as malformedOutputsWarning, Ur as recordMaskOnlyValuesIn, Ut as parameterTypeMayLoseSecretIdentity, V as renderStatefulReason, Va as displayAssemblyPath, Vi as isDockerClientEnvKey, Vn as malformedOrphansWarning, Vr as pathCrossesDottedKey, Vt as isNamelessDynamicReferenceError, W as isWarmThroughputDecrease, Wi as redactDockerArgvValues, Wn as malformedRenderedContainersWarning, Wr as recoverMaskedOutput, Wt as refStateLookupFromResource, X as gray, Xa as setAwsClients, Xi as AssetManifestLoader, Xn as refuseDivergentRecordRegionForDestroy, Xr as UNREPRODUCIBLE_LOCK_CLAUSE, Xt as coerceCfnBoolean, Y as cyan, Ya as runWithStackAwsClients, Yi as stripControlChars, Yn as previewableOrphanRecords, Yr as rebuildClientForBucketRegion, Yt as assertRegionMatch, Z as green, Zi as getDockerImageBySourceHash, Zn as refuseMalformedNestedChildOutputs, Zr as buildForceUnlockCommand, Zt as coerceCfnInteger, _ as bagHoldsSecretExpression, _a as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, _i as buildAssetRedirectMap, _n as AWS_CREDENTIAL_ENV_KEYS, _o as SynthesisError, _r as safeRegion, _t as startInterruptWatch, a as DeploymentEventsStore, aa as resolveSkipPrefix, ai as hasReadableExportSet, an as requireConfigString, ao as LocalInvokeBuildError$1, ar as refuseMalformedResourceAttributesForOrphan, at as secretBearingStateKeyWarning, b as mergeNoChangeOutputs, ba as producerCoordinateKey, bi as rewriteTemplateAssetReferences, bn as envCredentialsAreAssumedRole, bo as normalizeAwsError, br as unreadableOrphanRecords, bt as ccProtectionRegistryTypes, c as replayFailedOperations, ca as resolveUseCdkBootstrapAssets, ci as importableOutputKeys, cn as classifyReplaySecretRegion, co as MalformedProducerRecordRefusalError, cr as refuseMalformedResourcePropertiesForOrphan, ct as IAMRoleProvider, d as updatePartialMessage, da as ssmResolvedValueType, di as orphansAfterRollback, dn as s3BucketArn, do as ProvisioningError, dr as repairMalformedOrphanRecordsForReadOnly, dt as ProviderRegistry, ea as getDefaultStateBucketName, ei as formatLockExpiry, en as configStringRefusal, eo as CrossAccountSecretRefusalError, er as refuseMalformedOrphans, et as collectDeclaredOutputNames, f as updatePartialReason, fa as CFN_TEMPLATE_BODY_LIMIT, fi as orphansCarriedFrom, fn as s3BucketDomainName, fo as ResourceTimeoutError, fr as repairMalformedOrphansForReadOnly, ft as wouldReturnToSdkProvider, g as computeImplicitDeleteEdges, ga as uploadCfnTemplate, gi as WorkGraph, gn as applyRoleArnIfSet, gr as repairMalformedResourcesForReadOnly, gt as isInterruptedWaitError, h as IMPLICIT_DELETE_DEPENDENCIES, ha as findLargeInlineResources, hi as stringifyValue, hn as s3BucketWebsiteUrl, ho as StackTerminationProtectionError, hr as repairMalformedResourcePropertiesForReadOnly, ht as interruptWatchListenerCount, i as DeploymentEventsReader, ia as resolveCaptureObservedState, ii as exportNamesCarriedFrom, in as requireConfigObject, io as IntrinsicResolutionRefusalError, ir as refuseMalformedOutputsForDestroy, it as secretBearing, j as isFinalSnapshotError, ja as AssemblyReader, ji as buildDenyExternalAccessPolicy, jn as hasReadableResources, jo as describeAwsFailure, jr as carriesSecretMask, jt as isWaitAbandonedError, k as ccRoutedFinalSnapshotError, ka as clientDefaultsFor, ki as validateAssetBucketName, kn as hasReadableOrphans, ko as markRedactedCause, kr as STATE_SOURCED_READBACK_RULES, kt as deleteIndeterminateGuards, l as replayRollback, la as stateBucketExistenceConfirmed, li as importableOutputs, ln as producerRegionsFromState, lo as NestedStackChildDirectDestroyError, lr as refuseMalformedResourcesForDestroy, lt as collectInlinePolicyNamesManagedBySiblings, m as maskingRetryLogger, ma as MIGRATE_TMP_PREFIX, mi as AssetPublisher, mn as s3BucketRegionalDomainName, mo as StackHasActiveImportsError, mr as repairMalformedResourceEntriesForReadOnly, mt as endCommandInterruptScope, n as DEFAULT_RESOURCE_WARN_AFTER_MS, na as resolveApp, ni as DEFAULT_STATE_PREFIX, nn as replayWarn, no as DeployCancelledError, nr as refuseMalformedOrphansForOrphan, nt as exportAliasCollisionScrubWarning, o as planFailedOps, oa as resolveStateBucketWithDefault, oi as hasReasonlessBaselineRefusal, on as definedAttributes, oo as LocalStartServiceError, or as refuseMalformedResourceEntries, ot as secretSafeKeyDisplay, p as withResourceDeadline, pa as CFN_TEMPLATE_URL_LIMIT, pi as shouldRetainResource, pn as s3BucketDualStackDomainName, po as ResourceUpdateNotSupportedError, pr as repairMalformedOutputsForReadOnly, pt as beginCommandInterruptScope, q as formatResourceLine, qa as getAwsClients, qi as warnFinchArgvExposure, qn as malformedResourcesWarning, qr as LockManager, qt as normalizeAwsTagsToCfn, r as DeployEngine, ra as resolveAutoAssetStorage, ri as describeRegionValueKind, rn as requireConfigArray, ro as DynamicReferenceRegionAmbiguousError, rr as refuseMalformedOutputs, rt as isExportAliasCollision, s as planRollback, sa as resolveStateBucketWithDefaultAndSource, si as hasUnverifiableParameterRefusal, sn as stringifyIfAssigned, sr as refuseMalformedResourceEntriesForOrphan, st as getCurrentResourceSecrets, t as DEFAULT_RESOURCE_TIMEOUT_MS, ta as getLegacyStateBucketName, ti as CUSTOM_RESOURCE_RESPONSE_PREFIX, tn as readConfigString, tr as refuseMalformedOrphansForDestroy, tt as collectPublishedOutputNames, u as resolveReplacementOldType, ua as warnDeprecatedNoPrefixCliFlag, ui as isReadableBag, un as withSharedDrainBudget, uo as PartialFailureError, ur as refuseMalformedState, ut as clearOnUpdateRemoval, v as isSecretBearingReferenceString, va as injectiveKey, vi as createAssetRedirectResolver, vn as applyCallerIdentityCredentials, vr as safeStackName, vt as CloudControlProvider, w as reachableDivergentParameters, wa as PARTITION_TABLE, wi as ensureAssetStorage, wn as STATE_RESOURCES_MALFORMED, wo as isMarkedNonRetryable, wr as withRetry, wt as packCompositeId, x as bindingSkippedOutputs, xa as producerRecordKey, xi as AssetModeResolver, xn as DiffCalculator, xo as withErrorHandling, xr as findActionableSilentDrops, xt as compositeIdFormatMessage, y as keptWholeReasonText, ya as injectiveKeyPrefix, yi as loadPublishableAssetManifest, yn as callerEnvCredentials, yr as unpreviewableOrphanRecords, yt as slowCcOperationTimeoutMs, z as isStatefulRecreateTargetForReplace, za as ownValue, zi as formatDockerLoginError, zn as malformedOrphanRowsKeptWarning, zr as maskSecretsInError, zt as getAccountInfo } from "./deploy-engine-JdJuqXID.js";
|
|
1
|
+
import { $ as yellow, $a as CdkdError, $i as synthesisStatusMessage, $n as refuseMalformedOrphanRecordsForDestroy, $r as forceQuitRecoveryClause, $t as configIntegerRefusal, A as createPreDeleteFinalSnapshot, Aa as credentialFingerprint, Ai as validateContainerRepoName, An as hasReadableOutputs, Ao as markRedactedCause, Ar as TEMPLATE_SOURCED_RULES, At as deleteSkipReason, B as isStatefulRecreateTargetSync, Ba as absoluteAssemblyPathEscape, Bi as getDockerCmd, Bn as malformedOrphansRefusalMessage, Br as maskSecretsInText, Bt as isImpossibleEmptyStoredAttribute, C as namesAnyDeclaredParameter, Ca as expectedOwnerParam, Ci as assertAssetBucketRegion, Cn as STATE_REGION_DIVERGED, Co as pasteableCommand, Cr as describeTypeWithThrottleRetry, Ct as compositeIdSkipResult, D as PRE_DELETE_SNAPSHOT_TYPES, Da as ambientClientDefaults, Di as parseBootstrapMarker, Dn as deployRefusesOrphanRowsReason, Do as isThrottlingError, Dr as STATE_SOURCED_BASELINE_RULES, Dt as maskerOrIdentity, E as ATOMIC_FINAL_SNAPSHOT_TYPES, Ea as derivePartitionAndUrlSuffix, Ei as isCrossRegionRedirect, En as UNREADABLE_RESOURCES_MAP_ROW, Eo as isRetryableTransientError, Er as TemplateParser, Et as maskDeep, F as extractDeploymentEventError, Fa as defineOwnKey, Fi as describeDockerExecFailure, Fn as malformedExportSourceWarning, Fr as identityKeyFor, Ft as carriesDynamicReference, G as toCfnInteger, Gi as runDockerForeground, Gn as malformedResourceEntriesWarning, Gr as redactSecretsForState, Gt as isSettledInstanceState, H as WARM_THROUGHPUT_MEMBERS, Ha as displayAssemblyPath, Hi as isMalformedEnvKey, Hn as malformedOutputsRefusalMessage, Hr as recordMaskOnlyValue, Ht as isUnboundTemplateParameter, I as makeSiblingClaimReader, Ia as hasOwnKey, Ii as describeDockerFailure, In as malformedLocalOutputsWarning, Ir as isSingleDynamicReferenceToken, It as carriesFetchableDynamicReference, J as bold, Ja as getAwsClients, Ji as escapeRegExp, Jn as malformedStateRefusalMessage, Jr as S3StateBackend, Jt as resolveExplicitPhysicalId, K as toFiniteNumber, Ka as resolveBucketRegion, Ki as runDockerStreaming, Kn as malformedResourcePropertiesWarning, Kr as scrubResourceRecord, Kt as WAFv2WebACLProvider, L as planOrphanAdoption, La as hasPlainPrototype, Li as dockerSpawnEnvWithSensitive, Ln as malformedOrphanRecordsRefusalMessage, Lr as isUncertifiedBaselineMaskPosition, Lt as cfnRefValueFromPhysicalId, M as refusesFinalSnapshot, Ma as failedStageNote, Mi as buildDockerImage, Mn as isReadableOrphanRecord, Mo as describeAwsFailure, Mr as createSecretMasker, Mt as disableInstanceApiTermination, N as unsupportedFinalSnapshotError, Na as globMatches, Ni as resolveDockerContextDirectory, Nn as isReadableResourceEntry, No as safeStringify, Nr as dynamicReferenceTokens, Nt as isTerminationProtectionPropagationError, O as buildFinalSnapshotIdentifier, Oa as ambientCredentialConfig, Oi as readBootstrapMarkerBody, On as displayLogicalId, Oo as isTransientServerError, Or as STATE_SOURCED_CROSS_GENERATION_RULES, Ot as UNSPECIFIED_SKIP_REASON, P as makeCanonicalizePropertiesFn, Pa as processStackMessages, Pi as describeDockerCapturedOutput, Pn as malformedExportNamesWarning, Pr as errorCauseChain, Pt as IntrinsicFunctionResolver, Q as red, Qi as Synthesizer, Qn as refuseMalformedOrphanRecords, Qr as buildLockContentionMessage, Qt as configBooleanRefusal, R as MULTI_REGION_RECREATE_BLOCKED_TYPES, Ra as nullPrototypeRecord, Ri as finchSecretArgvRefusal, Rn as malformedOrphanRecordsWarning, Rr as markSameGenerationBag, Rt as coerceParameterTypedValue, S as computeParameterTaint, Sa as decodeListingKey, Si as BOOTSTRAP_MARKER_PREFIX, Sn as INTRINSIC_KEYS, So as withErrorHandling, Sr as findSilentDropProperties, St as compositeIdSeparatorRefusal, T as resourcesNamingDeclaredParameter, Ta as canonicalizeRegion, Ti as getBootstrapMarkerKey, Tn as UNREADABLE_ORPHANS_CONTAINER_ROW, To as isMarkedNonRetryable, Tr as DagBuilder, Tt as createMaskedRetryLogger, U as coerceWarmThroughput$1, Ua as renderAssemblyPathEscape, Ui as partitionSensitiveEnv, Un as malformedOutputsWarning, Ur as recordMaskOnlyValuesIn, Ut as parameterTypeMayLoseSecretIdentity, V as renderStatefulReason, Va as describeFileReadFailure, Vi as isDockerClientEnvKey, Vn as malformedOrphansWarning, Vr as pathCrossesDottedKey, Vt as isNamelessDynamicReferenceError, W as isWarmThroughputDecrease, Wa as resolveAssemblyPath, Wi as redactDockerArgvValues, Wn as malformedRenderedContainersWarning, Wr as recoverMaskedOutput, Wt as refStateLookupFromResource, X as gray, Xa as runWithStackAwsClients, Xi as AssetManifestLoader, Xn as refuseDivergentRecordRegionForDestroy, Xr as UNREPRODUCIBLE_LOCK_CLAUSE, Xt as coerceCfnBoolean, Y as cyan, Ya as resetAwsClients, Yi as stripControlChars, Yn as previewableOrphanRecords, Yr as rebuildClientForBucketRegion, Yt as assertRegionMatch, Z as green, Za as setAwsClients, Zi as getDockerImageBySourceHash, Zn as refuseMalformedNestedChildOutputs, Zr as buildForceUnlockCommand, Zt as coerceCfnInteger, _ as bagHoldsSecretExpression, _a as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, _i as buildAssetRedirectMap, _n as AWS_CREDENTIAL_ENV_KEYS, _r as safeRegion, _t as startInterruptWatch, a as DeploymentEventsStore, aa as resolveSkipPrefix, ai as hasReadableExportSet, an as requireConfigString, ao as IntrinsicResolutionRefusalError, ar as refuseMalformedResourceAttributesForOrphan, at as secretBearingStateKeyWarning, b as mergeNoChangeOutputs, ba as producerCoordinateKey, bi as rewriteTemplateAssetReferences, bn as envCredentialsAreAssumedRole, br as unreadableOrphanRecords, bt as ccProtectionRegistryTypes, c as replayFailedOperations, ca as resolveUseCdkBootstrapAssets, ci as importableOutputKeys, cn as classifyReplaySecretRegion, cr as refuseMalformedResourcePropertiesForOrphan, ct as IAMRoleProvider, d as updatePartialMessage, da as ssmResolvedValueType, di as orphansAfterRollback, dn as s3BucketArn, do as PartialFailureError, dr as repairMalformedOrphanRecordsForReadOnly, dt as ProviderRegistry, ea as getDefaultStateBucketName, ei as formatLockExpiry, en as configStringRefusal, er as refuseMalformedOrphans, et as collectDeclaredOutputNames, f as updatePartialReason, fa as CFN_TEMPLATE_BODY_LIMIT, fi as orphansCarriedFrom, fn as s3BucketDomainName, fo as ProvisioningError, fr as repairMalformedOrphansForReadOnly, ft as wouldReturnToSdkProvider, g as computeImplicitDeleteEdges, ga as uploadCfnTemplate, gi as WorkGraph, gn as applyRoleArnIfSet, go as StackTerminationProtectionError, gr as repairMalformedResourcesForReadOnly, gt as isInterruptedWaitError, h as IMPLICIT_DELETE_DEPENDENCIES, ha as findLargeInlineResources, hi as stringifyValue, hn as s3BucketWebsiteUrl, ho as StackHasActiveImportsError, hr as repairMalformedResourcePropertiesForReadOnly, ht as interruptWatchListenerCount, i as DeploymentEventsReader, ia as resolveCaptureObservedState, ii as exportNamesCarriedFrom, in as requireConfigObject, io as DynamicReferenceRegionAmbiguousError, ir as refuseMalformedOutputsForDestroy, it as secretBearing, j as isFinalSnapshotError, ja as AssemblyReader, ji as buildDenyExternalAccessPolicy, jn as hasReadableResources, jo as retryClassificationText, jr as carriesSecretMask, jt as isWaitAbandonedError, k as ccRoutedFinalSnapshotError, ka as clientDefaultsFor, ki as validateAssetBucketName, kn as hasReadableOrphans, ko as markNonRetryable, kr as STATE_SOURCED_READBACK_RULES, kt as deleteIndeterminateGuards, l as replayRollback, la as stateBucketExistenceConfirmed, li as importableOutputs, ln as producerRegionsFromState, lo as MalformedProducerRecordRefusalError, lr as refuseMalformedResourcesForDestroy, lt as collectInlinePolicyNamesManagedBySiblings, m as maskingRetryLogger, ma as MIGRATE_TMP_PREFIX, mi as AssetPublisher, mn as s3BucketRegionalDomainName, mo as ResourceUpdateNotSupportedError, mr as repairMalformedResourceEntriesForReadOnly, mt as endCommandInterruptScope, n as DEFAULT_RESOURCE_WARN_AFTER_MS, na as resolveApp, ni as DEFAULT_STATE_PREFIX, nn as replayWarn, nr as refuseMalformedOrphansForOrphan, nt as exportAliasCollisionScrubWarning, o as planFailedOps, oa as resolveStateBucketWithDefault, oi as hasReasonlessBaselineRefusal, on as definedAttributes, oo as LocalInvokeBuildError$1, or as refuseMalformedResourceEntries, ot as secretSafeKeyDisplay, p as withResourceDeadline, pa as CFN_TEMPLATE_URL_LIMIT, pi as shouldRetainResource, pn as s3BucketDualStackDomainName, po as ResourceTimeoutError, pr as repairMalformedOutputsForReadOnly, pt as beginCommandInterruptScope, q as formatResourceLine, qa as AwsClients, qi as warnFinchArgvExposure, qn as malformedResourcesWarning, qr as LockManager, qt as normalizeAwsTagsToCfn, r as DeployEngine, ra as resolveAutoAssetStorage, ri as describeRegionValueKind, rn as requireConfigArray, ro as DeployCancelledError, rr as refuseMalformedOutputs, rt as isExportAliasCollision, s as planRollback, sa as resolveStateBucketWithDefaultAndSource, si as hasUnverifiableParameterRefusal, sn as stringifyIfAssigned, so as LocalStartServiceError, sr as refuseMalformedResourceEntriesForOrphan, st as getCurrentResourceSecrets, t as DEFAULT_RESOURCE_TIMEOUT_MS, ta as getLegacyStateBucketName, ti as CUSTOM_RESOURCE_RESPONSE_PREFIX, tn as readConfigString, to as CrossAccountSecretRefusalError, tr as refuseMalformedOrphansForDestroy, tt as collectPublishedOutputNames, u as resolveReplacementOldType, ua as warnDeprecatedNoPrefixCliFlag, ui as isReadableBag, un as withSharedDrainBudget, uo as NestedStackChildDirectDestroyError, ur as refuseMalformedState, ut as clearOnUpdateRemoval, v as isSecretBearingReferenceString, va as injectiveKey, vi as createAssetRedirectResolver, vn as applyCallerIdentityCredentials, vo as SynthesisError, vr as safeStackName, vt as CloudControlProvider, w as reachableDivergentParameters, wa as PARTITION_TABLE, wi as ensureAssetStorage, wn as STATE_RESOURCES_MALFORMED, wo as shellQuote, wr as withRetry, wt as packCompositeId, x as bindingSkippedOutputs, xa as producerRecordKey, xi as AssetModeResolver, xn as DiffCalculator, xo as normalizeAwsError, xr as findActionableSilentDrops, xt as compositeIdFormatMessage, y as keptWholeReasonText, ya as injectiveKeyPrefix, yi as loadPublishableAssetManifest, yn as callerEnvCredentials, yr as unpreviewableOrphanRecords, yt as slowCcOperationTimeoutMs, z as isStatefulRecreateTargetForReplace, za as ownValue, zi as formatDockerLoginError, zn as malformedOrphanRowsKeptWarning, zr as maskSecretsInError, zt as getAccountInfo } from "./deploy-engine-BZps_IKn.js";
|
|
2
2
|
import { C as displayAwsMessage, D as isPasteableIdent, E as displayStackName, O as truncateCodePoints, S as UNRENDERABLE, T as displaySafe, _ as withSkipPrefix, b as SECRET_REF_MAX_CODE_POINTS, c as PATTERN_B_NAME_OPTIONS, f as explicitNamePropertyFor, h as getCurrentStackName, i as reserveStdoutForPayload, l as PATTERN_B_NAME_PROPERTIES, m as generateResourceNameWithFallback, n as getLogger, o as runStackBuffered, p as generateResourceName, s as getLiveRenderer, u as PATTERN_B_RESOURCE_TYPES, v as withStackName, w as displayIdent, x as STACK_REF_MAX_CODE_POINTS } from "./logger-Bt0RGDfb.js";
|
|
3
3
|
import { n as awsClientDefaults, s as ambientRegion } from "./aws-client-defaults-jISU4PHo.js";
|
|
4
|
-
import { t as getCdkdVersion } from "./version-
|
|
5
|
-
import { a as renderDisableCommand, i as protectedReplacementAdvice, r as UNNAMEABLE_ID_CLAUSE, t as ASGProvider } from "./asg-provider-
|
|
4
|
+
import { t as getCdkdVersion } from "./version-BkoR4hMq.js";
|
|
5
|
+
import { a as renderDisableCommand, i as protectedReplacementAdvice, r as UNNAMEABLE_ID_CLAUSE, t as ASGProvider } from "./asg-provider-Dbqbr89e.js";
|
|
6
6
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
7
7
|
import { createHash, randomBytes, randomUUID } from "node:crypto";
|
|
8
8
|
import { CopyObjectCommand, CreateBucketCommand, DeleteBucketAnalyticsConfigurationCommand, DeleteBucketCommand, DeleteBucketCorsCommand, DeleteBucketEncryptionCommand, DeleteBucketIntelligentTieringConfigurationCommand, DeleteBucketInventoryConfigurationCommand, DeleteBucketLifecycleCommand, DeleteBucketMetricsConfigurationCommand, DeleteBucketOwnershipControlsCommand, DeleteBucketPolicyCommand, DeleteBucketReplicationCommand, DeleteBucketTaggingCommand, DeleteBucketWebsiteCommand, DeleteObjectsCommand, GetBucketAccelerateConfigurationCommand, GetBucketCorsCommand, GetBucketEncryptionCommand, GetBucketLifecycleConfigurationCommand, GetBucketLocationCommand, GetBucketLoggingCommand, GetBucketNotificationConfigurationCommand, GetBucketOwnershipControlsCommand, GetBucketPolicyCommand, GetBucketReplicationCommand, GetBucketTaggingCommand, GetBucketVersioningCommand, GetBucketWebsiteCommand, GetObjectCommand, GetObjectLockConfigurationCommand, GetPublicAccessBlockCommand, HeadBucketCommand, ListBucketAnalyticsConfigurationsCommand, ListBucketIntelligentTieringConfigurationsCommand, ListBucketInventoryConfigurationsCommand, ListBucketMetricsConfigurationsCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, NotFound, PutBucketAccelerateConfigurationCommand, PutBucketAnalyticsConfigurationCommand, PutBucketCorsCommand, PutBucketEncryptionCommand, PutBucketIntelligentTieringConfigurationCommand, PutBucketInventoryConfigurationCommand, PutBucketLifecycleConfigurationCommand, PutBucketLoggingCommand, PutBucketMetricsConfigurationCommand, PutBucketNotificationConfigurationCommand, PutBucketOwnershipControlsCommand, PutBucketPolicyCommand, PutBucketReplicationCommand, PutBucketTaggingCommand, PutBucketVersioningCommand, PutBucketWebsiteCommand, PutObjectCommand, PutObjectLockConfigurationCommand, PutPublicAccessBlockCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
|
|
@@ -3073,7 +3073,7 @@ function validateRecreateTargets(input) {
|
|
|
3073
3073
|
if (MULTI_REGION_RECREATE_BLOCKED_TYPES.has(resourceType)) blockedMultiRegionTargets.push(target);
|
|
3074
3074
|
if (resourceType === NESTED_STACK_RESOURCE_TYPE$1 || templateResource.Type === NESTED_STACK_RESOURCE_TYPE$1) blockedNestedStackTargets.push(target);
|
|
3075
3075
|
if (direction === "to-cc-api") {
|
|
3076
|
-
const actionableDrops = findActionableSilentDrops(resourceType, templateResource.Properties, EMPTY_ALLOW_SET$1);
|
|
3076
|
+
const actionableDrops = findActionableSilentDrops(resourceType, templateResource.Properties, EMPTY_ALLOW_SET$1, recordedResource.properties, { unresolvedAs: "changed" });
|
|
3077
3077
|
for (const { property } of actionableDrops) {
|
|
3078
3078
|
const allowKey = `${resourceType}:${property}`;
|
|
3079
3079
|
if (input.allowUnsupportedProperties.has(allowKey)) ambiguousIntent.push({
|
|
@@ -3084,7 +3084,7 @@ function validateRecreateTargets(input) {
|
|
|
3084
3084
|
}
|
|
3085
3085
|
if (recordedResource.provisionedBy === "cc-api") blockedAlreadyCcApi.push(target);
|
|
3086
3086
|
} else {
|
|
3087
|
-
const actionableDrops = findActionableSilentDrops(resourceType, templateResource.Properties, input.allowUnsupportedProperties);
|
|
3087
|
+
const actionableDrops = findActionableSilentDrops(resourceType, templateResource.Properties, input.allowUnsupportedProperties, recordedResource.properties, { unresolvedAs: "changed" });
|
|
3088
3088
|
for (const { property } of actionableDrops) ambiguousIntentSdk.push({
|
|
3089
3089
|
logicalId,
|
|
3090
3090
|
resourceType,
|
|
@@ -8600,6 +8600,16 @@ function noRecordedRegionCause() {
|
|
|
8600
8600
|
remedy: "This record predates cdkd's region-keyed state layout. Re-deploy the stack to write a record that carries its region, or confirm the bucket's location yourself, to have the guard run on the next destroy."
|
|
8601
8601
|
};
|
|
8602
8602
|
}
|
|
8603
|
+
/**
|
|
8604
|
+
* A lifecycle rule's `Id` as the warnings print it (go-to-k/cdkd#3617). The id
|
|
8605
|
+
* is template-chosen and free-form, so it renders through `displayIdent` --
|
|
8606
|
+
* bare when plain, otherwise one JSON string -- rather than inside cdkd's own
|
|
8607
|
+
* quotes, which a `'` in it would close. An absent or empty id is named in
|
|
8608
|
+
* words.
|
|
8609
|
+
*/
|
|
8610
|
+
function shownLifecycleRuleId(id) {
|
|
8611
|
+
return id === void 0 || id === null || id === "" ? "(no Id)" : displayIdent(id);
|
|
8612
|
+
}
|
|
8603
8613
|
var S3BucketProvider = class S3BucketProvider {
|
|
8604
8614
|
s3Client;
|
|
8605
8615
|
logger = getLogger().child("S3BucketProvider");
|
|
@@ -8901,7 +8911,7 @@ var S3BucketProvider = class S3BucketProvider {
|
|
|
8901
8911
|
if (coerceCfnBoolean(rule["ExpiredObjectDeleteMarker"]) === true) {
|
|
8902
8912
|
const exp = sdkRule.Expiration;
|
|
8903
8913
|
if (!(exp?.["Days"] !== void 0 || exp?.["Date"] !== void 0)) sdkRule.Expiration = { ExpiredObjectDeleteMarker: true };
|
|
8904
|
-
else this.logger.warn(`Lifecycle rule
|
|
8914
|
+
else this.logger.warn(`Lifecycle rule ${shownLifecycleRuleId(rule["Id"])} on ${displaySafe(bucketName)} sets ExpiredObjectDeleteMarker alongside an expiration Days/Date; S3 forbids combining them, so the delete-marker cleanup was not applied.`);
|
|
8905
8915
|
}
|
|
8906
8916
|
const nve = isPlainObject$2(rule["NoncurrentVersionExpiration"]) ? rule["NoncurrentVersionExpiration"] : void 0;
|
|
8907
8917
|
const legacyNveDays = rule["NoncurrentVersionExpirationInDays"];
|
|
@@ -8917,7 +8927,7 @@ var S3BucketProvider = class S3BucketProvider {
|
|
|
8917
8927
|
});
|
|
8918
8928
|
const nvts = rule["NoncurrentVersionTransitions"];
|
|
8919
8929
|
const singularNvt = rule["NoncurrentVersionTransition"];
|
|
8920
|
-
const allNvts = mergeLegacySingular(nvts, singularNvt, (sc) => this.logger.warn(`Lifecycle rule
|
|
8930
|
+
const allNvts = mergeLegacySingular(nvts, singularNvt, (sc) => this.logger.warn(`Lifecycle rule ${shownLifecycleRuleId(rule["Id"])} on ${displaySafe(bucketName)} declares both NoncurrentVersionTransitions and the legacy NoncurrentVersionTransition for storage class ${displaySafe(sc)}; S3 rejects duplicates, so the legacy singular was ignored.`));
|
|
8921
8931
|
if (allNvts.length > 0) sdkRule.NoncurrentVersionTransitions = allNvts.map(toSdkNvt);
|
|
8922
8932
|
const toSdkTransition = (t) => ({
|
|
8923
8933
|
Days: t["TransitionInDays"] ?? t["Days"],
|
|
@@ -8926,7 +8936,7 @@ var S3BucketProvider = class S3BucketProvider {
|
|
|
8926
8936
|
});
|
|
8927
8937
|
const transitions = rule["Transitions"];
|
|
8928
8938
|
const singularTransition = rule["Transition"];
|
|
8929
|
-
const allTransitions = mergeLegacySingular(transitions, singularTransition, (sc) => this.logger.warn(`Lifecycle rule
|
|
8939
|
+
const allTransitions = mergeLegacySingular(transitions, singularTransition, (sc) => this.logger.warn(`Lifecycle rule ${shownLifecycleRuleId(rule["Id"])} on ${displaySafe(bucketName)} declares both Transitions and the legacy Transition for storage class ${displaySafe(sc)}; S3 rejects duplicates, so the legacy singular was ignored.`));
|
|
8930
8940
|
if (allTransitions.length > 0) sdkRule.Transitions = allTransitions.map(toSdkTransition);
|
|
8931
8941
|
const abort = isPlainObject$2(rule["AbortIncompleteMultipartUpload"]) ? rule["AbortIncompleteMultipartUpload"] : void 0;
|
|
8932
8942
|
if (abort) sdkRule.AbortIncompleteMultipartUpload = { DaysAfterInitiation: abort["DaysAfterInitiation"] };
|
|
@@ -21135,23 +21145,29 @@ var DynamoDBTableProvider = class {
|
|
|
21135
21145
|
* CALLER-BLIND, decided rather than overlooked (PR review). A TEMPLATE-borne
|
|
21136
21146
|
* `{0, 0}` warn-skips here while `create()` fails loudly on the same value,
|
|
21137
21147
|
* which reads like the "loud failure for a quiet lie" trade the adopted-index
|
|
21138
|
-
* arm below forbids. It
|
|
21139
|
-
*
|
|
21140
|
-
*
|
|
21141
|
-
*
|
|
21142
|
-
*
|
|
21143
|
-
*
|
|
21144
|
-
*
|
|
21145
|
-
*
|
|
21146
|
-
*
|
|
21147
|
-
*
|
|
21148
|
-
*
|
|
21149
|
-
*
|
|
21150
|
-
*
|
|
21151
|
-
*
|
|
21152
|
-
*
|
|
21153
|
-
*
|
|
21154
|
-
*
|
|
21148
|
+
* arm below forbids. It was decided for three reasons; the first no longer
|
|
21149
|
+
* holds as written (see its own bullet), the other two still do:
|
|
21150
|
+
*
|
|
21151
|
+
* - When this was decided, no discriminator separated the callers that
|
|
21152
|
+
* matter. `ResourceProvider.update` takes an optional `UpdateContext`, and
|
|
21153
|
+
* `desiredFromAwsReadback` on it is set ONLY by `cdkd drift --revert`
|
|
21154
|
+
* (`src/cli/commands/drift.ts`). The rollback executor's revert arms DO
|
|
21155
|
+
* pass a context (a `maskSecrets` capability, issue #1932) but never set
|
|
21156
|
+
* that flag: their desired bag is `previousState.properties`, a TEMPLATE
|
|
21157
|
+
* recorded earlier. At the time they were therefore indistinguishable
|
|
21158
|
+
* from an ordinary template deploy — and THAT is the pair this decision
|
|
21159
|
+
* turns on. (An earlier revision said the revert arms "pass NO context",
|
|
21160
|
+
* which stopped being true with #1932 — issue #1999.) Since issue #3141
|
|
21161
|
+
* they ALSO set `UpdateContext.replayingState`, so the caller is now
|
|
21162
|
+
* knowable: the per-index `OnDemandThroughput` refusal in `update()` gates
|
|
21163
|
+
* on exactly that pair of flags (the go-to-k/cdkd#3401 review). This arm
|
|
21164
|
+
* was not re-decided when that became possible; splitting it the same way
|
|
21165
|
+
* would turn a template-path warn-skip into a refusal, a behaviour change
|
|
21166
|
+
* that needs its own review rather than a comment edit (issue #3728).
|
|
21167
|
+
* - The repo's general rule for the UPDATE path is WARN-never-throw (issues
|
|
21168
|
+
* #1545 / #1552): the desired bag here can BE a historical cdkd state
|
|
21169
|
+
* record, and a refusal would make the table un-updatable and
|
|
21170
|
+
* un-rollbackable with no template-side remedy.
|
|
21155
21171
|
* - The lie is bounded and self-surfacing. AWS never accepted `{0, 0}` at
|
|
21156
21172
|
* create either, so no live table can be holding it; and where the value
|
|
21157
21173
|
* would actually matter — a PROVISIONED table, whose indexes hold a real
|
|
@@ -31657,9 +31673,10 @@ var EC2Provider = class {
|
|
|
31657
31673
|
* narrowing here the template's extra keys read as an ADDED property on the
|
|
31658
31674
|
* next deploy — and every destination key is create-only in the registry
|
|
31659
31675
|
* schema, so the diff would classify a REPLACEMENT and the engine's
|
|
31660
|
-
* replacement create (
|
|
31661
|
-
* `
|
|
31662
|
-
* previously-green no-op deploy
|
|
31676
|
+
* replacement create (whose context carries a `maskSecrets` capability but
|
|
31677
|
+
* never `replayingState`, and so gets no `onMultipleDestinations`
|
|
31678
|
+
* downgrade) would hit the #1566 refusal. A previously-green no-op deploy
|
|
31679
|
+
* would start failing.
|
|
31663
31680
|
*
|
|
31664
31681
|
* Shares `narrowRouteDestinations` with the provisioning path so the two
|
|
31665
31682
|
* cannot disagree about which key survives.
|
|
@@ -31668,8 +31685,8 @@ var EC2Provider = class {
|
|
|
31668
31685
|
* half for the same reason: `IpProtocol` is create-only on that type in the
|
|
31669
31686
|
* registry schema, so normalizing state alone would make the template's
|
|
31670
31687
|
* original value read as a changed immutable property — a REPLACEMENT, whose
|
|
31671
|
-
* create
|
|
31672
|
-
* previously-green no-op deploy into a hard failure. Normalizing BOTH sides
|
|
31688
|
+
* create never sets `replayingState` and so gets no `onUnusable` downgrade,
|
|
31689
|
+
* turning a previously-green no-op deploy into a hard failure. Normalizing BOTH sides
|
|
31673
31690
|
* is also what keeps the fix correct for records written BEFORE it existed,
|
|
31674
31691
|
* which still carry the un-narrowed value.
|
|
31675
31692
|
*/
|
|
@@ -51256,6 +51273,40 @@ const GLUE_TABLE_ID_FORMAT = {
|
|
|
51256
51273
|
segments: ["databaseName", "tableName"]
|
|
51257
51274
|
};
|
|
51258
51275
|
/**
|
|
51276
|
+
* Decode an `AWS::Glue::Table` physicalId `<databaseName>|<tableName>`.
|
|
51277
|
+
*
|
|
51278
|
+
* The separator is unescaped (issue #1672), so a bare split of an id whose
|
|
51279
|
+
* table name carries a `|` returns a DIFFERENT table — `mydb|a|b` splits to
|
|
51280
|
+
* `mydb.a`, both halves non-empty, and a delete of it would hit the wrong
|
|
51281
|
+
* table. Such ids exist: a state-replay create warns and packs one anyway, and
|
|
51282
|
+
* binaries before the #1719 refusal recorded them. The recorded `DatabaseName`
|
|
51283
|
+
* disambiguates the id without re-deriving the identity from the bag: it is
|
|
51284
|
+
* used only when the id starts with it, and the table name is the remainder.
|
|
51285
|
+
*
|
|
51286
|
+
* `bags` are tried in order, so pass the one describing what was DEPLOYED
|
|
51287
|
+
* first. With no usable anchor only an id with exactly one separator decodes;
|
|
51288
|
+
* anything longer is ambiguous and returns `undefined`, the malformed-id arm
|
|
51289
|
+
* every caller already has.
|
|
51290
|
+
*/
|
|
51291
|
+
function decodeTableId(physicalId, ...bags) {
|
|
51292
|
+
for (const bag of bags) {
|
|
51293
|
+
const databaseName = bag?.["DatabaseName"];
|
|
51294
|
+
if (typeof databaseName !== "string" || databaseName === "") continue;
|
|
51295
|
+
if (!physicalId.startsWith(`${databaseName}|`)) continue;
|
|
51296
|
+
const tableName = physicalId.slice(databaseName.length + 1);
|
|
51297
|
+
if (tableName !== "") return {
|
|
51298
|
+
databaseName,
|
|
51299
|
+
tableName
|
|
51300
|
+
};
|
|
51301
|
+
}
|
|
51302
|
+
const parts = physicalId.split("|");
|
|
51303
|
+
if (parts.length !== 2 || !parts[0] || !parts[1]) return void 0;
|
|
51304
|
+
return {
|
|
51305
|
+
databaseName: parts[0],
|
|
51306
|
+
tableName: parts[1]
|
|
51307
|
+
};
|
|
51308
|
+
}
|
|
51309
|
+
/**
|
|
51259
51310
|
* Read a template-borne value that is about to be forwarded to a Glue read
|
|
51260
51311
|
* API as a string.
|
|
51261
51312
|
*
|
|
@@ -51585,8 +51636,9 @@ var GlueProvider = class {
|
|
|
51585
51636
|
}
|
|
51586
51637
|
async updateTable(logicalId, physicalId, resourceType, properties, previousProperties) {
|
|
51587
51638
|
this.logger.debug(`Updating Glue Table ${logicalId}: ${physicalId}`);
|
|
51588
|
-
const
|
|
51589
|
-
if (!
|
|
51639
|
+
const decoded = decodeTableId(physicalId, previousProperties, properties);
|
|
51640
|
+
if (!decoded) throw new ProvisioningError(compositeIdFormatMessage(GLUE_TABLE_ID_FORMAT, logicalId, physicalId), resourceType, logicalId, physicalId);
|
|
51641
|
+
const { databaseName, tableName } = decoded;
|
|
51590
51642
|
const tableInput = properties["TableInput"];
|
|
51591
51643
|
if (!tableInput) throw new ProvisioningError(`TableInput is required for Glue Table update ${logicalId}`, resourceType, logicalId, physicalId);
|
|
51592
51644
|
const catalogId = properties["CatalogId"];
|
|
@@ -51621,11 +51673,12 @@ var GlueProvider = class {
|
|
|
51621
51673
|
}
|
|
51622
51674
|
async deleteTable(logicalId, physicalId, resourceType, properties, context) {
|
|
51623
51675
|
this.logger.debug(`Deleting Glue Table ${logicalId}: ${physicalId}`);
|
|
51624
|
-
const
|
|
51625
|
-
if (!
|
|
51676
|
+
const decoded = decodeTableId(physicalId, properties);
|
|
51677
|
+
if (!decoded) {
|
|
51626
51678
|
this.logger.warn(compositeIdFormatMessage(GLUE_TABLE_ID_FORMAT, logicalId, physicalId, { skipping: true }));
|
|
51627
51679
|
return compositeIdSkipResult();
|
|
51628
51680
|
}
|
|
51681
|
+
const { databaseName, tableName } = decoded;
|
|
51629
51682
|
const target = deleteCatalogId(properties);
|
|
51630
51683
|
if (target.declaredButUnusable) this.logger.debug(`Glue Table ${logicalId}: CatalogId is not a usable value (likely an unresolved intrinsic), so DeleteTable targets ${describeCatalog(target.catalogId)}.`);
|
|
51631
51684
|
try {
|
|
@@ -51897,9 +51950,12 @@ var GlueProvider = class {
|
|
|
51897
51950
|
* downgrades through the shared `replayWarn`, since a reverse-replacement
|
|
51898
51951
|
* re-create reads a STATE record the user cannot edit from the template.
|
|
51899
51952
|
* - UPDATE passes a warn callback UNCONDITIONALLY (the `updateRoute`
|
|
51900
|
-
* precedent
|
|
51901
|
-
*
|
|
51902
|
-
*
|
|
51953
|
+
* precedent, decided when `update()` could not tell a template push
|
|
51954
|
+
* from the state-borne bag `drift --revert` and the rollback revert arm
|
|
51955
|
+
* hand it — since issue #3141 `UpdateContext.replayingState` plus
|
|
51956
|
+
* `desiredFromAwsReadback` can, and this arm was not re-decided — issue
|
|
51957
|
+
* #3728), and
|
|
51958
|
+
* then RETAINS the PREVIOUS side's block, which is why
|
|
51903
51959
|
* `previousDatabaseInput` is threaded in. Omitting instead would ERASE a
|
|
51904
51960
|
* live resource link, because `UpdateDatabase` replaces `DatabaseInput`
|
|
51905
51961
|
* wholesale — the #1612 "UPDATE retains the previous value" row, reached
|
|
@@ -52112,7 +52168,7 @@ var GlueProvider = class {
|
|
|
52112
52168
|
const catalogId = catalogIdForApi(properties?.["CatalogId"]);
|
|
52113
52169
|
switch (resourceType) {
|
|
52114
52170
|
case "AWS::Glue::Database": return this.readDatabase(physicalId, catalogId);
|
|
52115
|
-
case "AWS::Glue::Table": return this.readTable(physicalId, catalogId);
|
|
52171
|
+
case "AWS::Glue::Table": return this.readTable(physicalId, catalogId, properties);
|
|
52116
52172
|
default: return;
|
|
52117
52173
|
}
|
|
52118
52174
|
}
|
|
@@ -52175,9 +52231,10 @@ var GlueProvider = class {
|
|
|
52175
52231
|
if (db.Name !== void 0) result["DatabaseName"] = db.Name;
|
|
52176
52232
|
return result;
|
|
52177
52233
|
}
|
|
52178
|
-
async readTable(physicalId, catalogId) {
|
|
52179
|
-
const
|
|
52180
|
-
if (!
|
|
52234
|
+
async readTable(physicalId, catalogId, properties) {
|
|
52235
|
+
const decoded = decodeTableId(physicalId, properties);
|
|
52236
|
+
if (!decoded) return void 0;
|
|
52237
|
+
const { databaseName, tableName } = decoded;
|
|
52181
52238
|
let table;
|
|
52182
52239
|
try {
|
|
52183
52240
|
table = (await this.getClient().send(new GetTableCommand({
|
|
@@ -52421,8 +52478,19 @@ var GlueWorkflowProvider = class {
|
|
|
52421
52478
|
}
|
|
52422
52479
|
return null;
|
|
52423
52480
|
}
|
|
52481
|
+
/**
|
|
52482
|
+
* The workflow ARN `GetTags` needs. The partition is derived from the
|
|
52483
|
+
* client's region (issue #1815): the literal `arn:aws:` is structurally valid
|
|
52484
|
+
* everywhere, so in `aws-cn` / `aws-us-gov` nothing rejected it — `GetTags`
|
|
52485
|
+
* was simply aimed at an ARN naming no workflow, and the best-effort catch
|
|
52486
|
+
* below reads a failure there as EMPTY tags. A commercial region still derives to `aws`,
|
|
52487
|
+
* so commercial output is unchanged byte for byte.
|
|
52488
|
+
*/
|
|
52424
52489
|
async buildWorkflowArn(workflowName) {
|
|
52425
|
-
|
|
52490
|
+
const region = await this.getRegion();
|
|
52491
|
+
const account = await this.getAccountId();
|
|
52492
|
+
const { partition } = derivePartitionAndUrlSuffix(region);
|
|
52493
|
+
return `arn:${partition}:glue:${region}:${account}:workflow/${workflowName}`;
|
|
52426
52494
|
}
|
|
52427
52495
|
async getRegion() {
|
|
52428
52496
|
return await this.getClient().config.region() || this.providerRegion || "us-east-1";
|
|
@@ -52640,8 +52708,18 @@ function findIcebergTableInputKey(properties) {
|
|
|
52640
52708
|
* must never call `this.create()` from inside its own `update()` the way ACM /
|
|
52641
52709
|
* IAM / Lambda-permission / SNS-subscription do: those internal re-creates
|
|
52642
52710
|
* forward `update()`'s `properties` — a STATE record during a rollback replay —
|
|
52643
|
-
* and `
|
|
52644
|
-
*
|
|
52711
|
+
* and pass no `CreateContext`, so this refusal would fire on a replay with no
|
|
52712
|
+
* way to detect it. (`update()` DOES take a context — an `UpdateContext` since
|
|
52713
|
+
* issue #1732 — and since issue #3141 that context carries its own
|
|
52714
|
+
* `replayingState`, set by the rollback executor's two revert arms. So the
|
|
52715
|
+
* information now reaches `update()`; what is missing is a re-create that
|
|
52716
|
+
* builds a `CreateContext` from it, and none of those providers does. An
|
|
52717
|
+
* earlier revision said `update()` had "no context parameter to carry the
|
|
52718
|
+
* flag" — issue #1999.) Were GlueProvider ever to re-create inside `update()`,
|
|
52719
|
+
* it would have to forward a replay signal into that `create()` —
|
|
52720
|
+
* `context.replayingState` on the rollback path — and decide separately what
|
|
52721
|
+
* this refusal means for the `desiredFromAwsReadback` bag `cdkd drift --revert`
|
|
52722
|
+
* hands it, since that path sets no `replayingState`.
|
|
52645
52723
|
*
|
|
52646
52724
|
* **Known bypass: the sticky Cloud Control route.** This is a GlueProvider
|
|
52647
52725
|
* pre-flight, so it only runs on the SDK route. When a table's state record
|
|
@@ -52747,11 +52825,22 @@ function cleanCfnObject(obj) {
|
|
|
52747
52825
|
}
|
|
52748
52826
|
/**
|
|
52749
52827
|
* Build the ARN for a Glue resource. Used by tag-fetch via
|
|
52750
|
-
* `GetTagsCommand` which only accepts an ARN
|
|
52751
|
-
*
|
|
52828
|
+
* `GetTagsCommand` which only accepts an ARN, and by the Job / Crawler /
|
|
52829
|
+
* Trigger `applyTagDiff` as the `TagResource` / `UntagResource` target.
|
|
52830
|
+
* Account id falls back to STS when not provided.
|
|
52831
|
+
*
|
|
52832
|
+
* The partition is derived from the region (issue #1815). A hardcoded
|
|
52833
|
+
* `arn:aws:` is structurally valid everywhere, so in `aws-cn` / `aws-us-gov`
|
|
52834
|
+
* nothing rejected it: the tag MUTATION was aimed at an ARN naming no
|
|
52835
|
+
* resource, and the drift read's best-effort `GetTags` read the failure as
|
|
52836
|
+
* empty tags. A commercial region still derives to `aws`, so commercial output
|
|
52837
|
+
* is unchanged byte for byte.
|
|
52752
52838
|
*/
|
|
52753
52839
|
async function buildGlueResourceArn(client, stsClient, resource, name, accountId) {
|
|
52754
|
-
|
|
52840
|
+
const region = await client.config.region() || ambientRegion() || "us-east-1";
|
|
52841
|
+
const account = accountId ?? await resolveAccountId(stsClient);
|
|
52842
|
+
const { partition } = derivePartitionAndUrlSuffix(region);
|
|
52843
|
+
return `arn:${partition}:glue:${region}:${account}:${resource}/${name}`;
|
|
52755
52844
|
}
|
|
52756
52845
|
async function resolveAccountId(stsClient) {
|
|
52757
52846
|
const identity = await stsClient.send(new GetCallerIdentityCommand({}));
|
|
@@ -65583,13 +65672,13 @@ var NestedStackProvider = class {
|
|
|
65583
65672
|
try {
|
|
65584
65673
|
raw = fs.readFileSync(templatePath, "utf-8");
|
|
65585
65674
|
} catch (err) {
|
|
65586
|
-
throw new Error(`Failed to read nested template at ${displayAssemblyPath(templatePath)}: ${
|
|
65675
|
+
throw new Error(`Failed to read nested template at ${displayAssemblyPath(templatePath)}: ${describeFileReadFailure(err, templatePath)}`);
|
|
65587
65676
|
}
|
|
65588
65677
|
let template;
|
|
65589
65678
|
try {
|
|
65590
65679
|
template = JSON.parse(raw);
|
|
65591
65680
|
} catch (err) {
|
|
65592
|
-
throw new Error(`Failed to parse nested template at ${displayAssemblyPath(templatePath)}: ${
|
|
65681
|
+
throw new Error(`Failed to parse nested template at ${displayAssemblyPath(templatePath)}: ${describeFileReadFailure(err, templatePath)}`);
|
|
65593
65682
|
}
|
|
65594
65683
|
const grandchildTemplates = this.indexGrandchildTemplates(template, templatePath);
|
|
65595
65684
|
if (assetRedirect) {
|
|
@@ -68503,12 +68592,12 @@ function readNestedTemplate(templatePath) {
|
|
|
68503
68592
|
try {
|
|
68504
68593
|
raw = fs.readFileSync(templatePath, "utf-8");
|
|
68505
68594
|
} catch (err) {
|
|
68506
|
-
throw new Error(`Failed to read nested template at ${templatePath}: ${err
|
|
68595
|
+
throw new Error(`Failed to read nested template at ${displayAssemblyPath(templatePath)}: ${describeFileReadFailure(err, templatePath)}`);
|
|
68507
68596
|
}
|
|
68508
68597
|
try {
|
|
68509
68598
|
return JSON.parse(raw);
|
|
68510
68599
|
} catch (err) {
|
|
68511
|
-
throw new Error(`Failed to parse nested template at ${templatePath}: ${err
|
|
68600
|
+
throw new Error(`Failed to parse nested template at ${displayAssemblyPath(templatePath)}: ${describeFileReadFailure(err, templatePath)}`);
|
|
68512
68601
|
}
|
|
68513
68602
|
}
|
|
68514
68603
|
/**
|
|
@@ -69028,7 +69117,7 @@ function collectCcApiRoutes(template, state) {
|
|
|
69028
69117
|
if (!resource) continue;
|
|
69029
69118
|
if (resource.Type === "AWS::CDK::Metadata") continue;
|
|
69030
69119
|
if (resource.Type === "AWS::CloudFormation::Stack") continue;
|
|
69031
|
-
const drops = findActionableSilentDrops(resource.Type, resource.Properties, EMPTY_ALLOW_SET);
|
|
69120
|
+
const drops = findActionableSilentDrops(resource.Type, resource.Properties, EMPTY_ALLOW_SET, state.resources[logicalId]?.properties);
|
|
69032
69121
|
if (drops.length > 0) {
|
|
69033
69122
|
hits.set(logicalId, drops.map((d) => d.property));
|
|
69034
69123
|
continue;
|
|
@@ -69246,7 +69335,7 @@ function renderChangeLines(changes, logFn, ccApiRoutes, adoptedOrphans) {
|
|
|
69246
69335
|
logFn(` [~] ${logicalId} (${change.resourceType})${annotateAdoption(logicalId)}${annotateRouting(logicalId)}`);
|
|
69247
69336
|
if (change.propertyChanges && change.propertyChanges.length > 0) for (const propChange of change.propertyChanges) {
|
|
69248
69337
|
const requiresReplace = propChange.requiresReplacement ? " [requires replacement]" : "";
|
|
69249
|
-
const propagated = propChange.replacementPropagated ? " [replacement propagated]" : "";
|
|
69338
|
+
const propagated = propChange.replacementPropagated ? " [replacement propagated]" : propChange.inPlacePropagated ? " [attribute propagated]" : "";
|
|
69250
69339
|
const indent = " ";
|
|
69251
69340
|
const [oldFiltered, newFiltered] = stripUnchangedValuePair(propChange.oldValue, propChange.newValue);
|
|
69252
69341
|
const oldStr = renderDiffValue(propChange.oldValue, oldFiltered, indent, false);
|
|
@@ -86381,7 +86470,7 @@ var AttributeFetcher = class {
|
|
|
86381
86470
|
const orphan = this.orphans[orphanLogicalId];
|
|
86382
86471
|
const bag = orphan.attributes;
|
|
86383
86472
|
if (bag !== void 0 && !isReadableBag(bag)) {
|
|
86384
|
-
this.logger.warn(`--force: state.attributes of
|
|
86473
|
+
this.logger.warn(`--force: state.attributes of ${displayIdent(orphanLogicalId)} is not a readable map, so it is not consulted for ${displayIdent(attribute)}; leaving the original intrinsic in place.`);
|
|
86385
86474
|
return {
|
|
86386
86475
|
ok: false,
|
|
86387
86476
|
reason: `${reason}; the state.attributes cache is not a readable map`
|
|
@@ -95043,7 +95132,7 @@ async function resolveOne(entry, secretsClient, ssmClient) {
|
|
|
95043
95132
|
switch (shape.kind) {
|
|
95044
95133
|
case "secrets-manager": return resolveSecretsManager(entry, shape, secretsClient);
|
|
95045
95134
|
case "ssm": return resolveSsm(entry, shape, ssmClient);
|
|
95046
|
-
case "unknown": throw new EcsSecretsResolutionError(`Container
|
|
95135
|
+
case "unknown": throw new EcsSecretsResolutionError(`Container ${displayIdent(entry.containerName)} secret ${displayIdent(entry.name)} references an unsupported ValueFrom shape ${displayIdent(arn, { maxCodePoints: SECRET_REF_MAX_CODE_POINTS })}. Expected Secrets Manager ARN (optionally with :<json-key>::) or SSM Parameter ARN.`);
|
|
95047
95136
|
}
|
|
95048
95137
|
}
|
|
95049
95138
|
/**
|
|
@@ -95076,20 +95165,20 @@ async function resolveSecretsManager(entry, shape, client) {
|
|
|
95076
95165
|
try {
|
|
95077
95166
|
secretString = (await client.send(new GetSecretValueCommand({ SecretId: shape.baseArn }))).SecretString;
|
|
95078
95167
|
} catch (err) {
|
|
95079
|
-
throw new EcsSecretsResolutionError(`Failed to resolve Secrets Manager secret for container
|
|
95168
|
+
throw new EcsSecretsResolutionError(`Failed to resolve Secrets Manager secret for container ${displayIdent(entry.containerName)} / env ${displayIdent(entry.name)} (${displayIdent(shape.baseArn, { maxCodePoints: SECRET_REF_MAX_CODE_POINTS })}): ${displaySafe(err instanceof Error ? err.message : String(err))}`);
|
|
95080
95169
|
}
|
|
95081
|
-
if (secretString === void 0) throw new EcsSecretsResolutionError(`Secrets Manager returned no SecretString for container
|
|
95170
|
+
if (secretString === void 0) throw new EcsSecretsResolutionError(`Secrets Manager returned no SecretString for container ${displayIdent(entry.containerName)} / env ${displayIdent(entry.name)} (${displayIdent(shape.baseArn, { maxCodePoints: SECRET_REF_MAX_CODE_POINTS })}). Binary secrets are not supported.`);
|
|
95082
95171
|
if (shape.jsonKey === void 0) return secretString;
|
|
95083
95172
|
let parsed;
|
|
95084
95173
|
try {
|
|
95085
95174
|
parsed = JSON.parse(secretString);
|
|
95086
95175
|
} catch (err) {
|
|
95087
95176
|
const kind = err instanceof Error ? err.name : "unknown";
|
|
95088
|
-
throw new EcsSecretsResolutionError(`Container
|
|
95177
|
+
throw new EcsSecretsResolutionError(`Container ${displayIdent(entry.containerName)} secret ${displayIdent(entry.name)} specified json-key ${displayIdent(shape.jsonKey)} but the secret value is not valid JSON (${displayIdent(kind)}). The parser detail is withheld because it would echo the secret plaintext.`);
|
|
95089
95178
|
}
|
|
95090
|
-
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) throw new EcsSecretsResolutionError(`Container
|
|
95179
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) throw new EcsSecretsResolutionError(`Container ${displayIdent(entry.containerName)} secret ${displayIdent(entry.name)} specified json-key ${displayIdent(shape.jsonKey)} but the secret root is not a JSON object.`);
|
|
95091
95180
|
const value = parsed[shape.jsonKey];
|
|
95092
|
-
if (value === void 0) throw new EcsSecretsResolutionError(`Container
|
|
95181
|
+
if (value === void 0) throw new EcsSecretsResolutionError(`Container ${displayIdent(entry.containerName)} secret ${displayIdent(entry.name)} specified json-key ${displayIdent(shape.jsonKey)} but no such key exists in the secret JSON.`);
|
|
95093
95182
|
return typeof value === "string" ? value : JSON.stringify(value);
|
|
95094
95183
|
}
|
|
95095
95184
|
async function resolveSsm(entry, shape, client) {
|
|
@@ -95098,11 +95187,11 @@ async function resolveSsm(entry, shape, client) {
|
|
|
95098
95187
|
Name: shape.name,
|
|
95099
95188
|
WithDecryption: true
|
|
95100
95189
|
}))).Parameter?.Value;
|
|
95101
|
-
if (value === void 0) throw new EcsSecretsResolutionError(`SSM parameter
|
|
95190
|
+
if (value === void 0) throw new EcsSecretsResolutionError(`SSM parameter ${displayIdent(shape.name, { maxCodePoints: SECRET_REF_MAX_CODE_POINTS })} returned no Value for container ${displayIdent(entry.containerName)} / env ${displayIdent(entry.name)}.`);
|
|
95102
95191
|
return value;
|
|
95103
95192
|
} catch (err) {
|
|
95104
95193
|
if (err instanceof EcsSecretsResolutionError) throw err;
|
|
95105
|
-
throw new EcsSecretsResolutionError(`Failed to resolve SSM parameter for container
|
|
95194
|
+
throw new EcsSecretsResolutionError(`Failed to resolve SSM parameter for container ${displayIdent(entry.containerName)} / env ${displayIdent(entry.name)} (${displayIdent(shape.name, { maxCodePoints: SECRET_REF_MAX_CODE_POINTS })}): ${displaySafe(err instanceof Error ? err.message : String(err))}`);
|
|
95106
95195
|
}
|
|
95107
95196
|
}
|
|
95108
95197
|
|
|
@@ -95515,7 +95604,7 @@ async function prepareOneImage(task, container, options) {
|
|
|
95515
95604
|
tag,
|
|
95516
95605
|
...task.stack.assetOutdir !== void 0 && { assetOutdir: task.stack.assetOutdir },
|
|
95517
95606
|
...options.platformOverride !== void 0 && { platform: options.platformOverride },
|
|
95518
|
-
wrapError: (stderr) => new LocalInvokeBuildError$1(`docker build failed for ECS container
|
|
95607
|
+
wrapError: (stderr) => new LocalInvokeBuildError$1(`docker build failed for ECS container ${displayIdent(container.name)} (${asset.source.directory !== void 0 ? displayAssemblyPath(asset.source.directory) : asset.source.executable ? redactDockerArgvValues(asset.source.executable).join(" ") : void 0}): ${displaySafe(stderr)}`)
|
|
95519
95608
|
});
|
|
95520
95609
|
if (actualTag !== tag) {
|
|
95521
95610
|
const tagArgs = [
|
|
@@ -95526,7 +95615,7 @@ async function prepareOneImage(task, container, options) {
|
|
|
95526
95615
|
try {
|
|
95527
95616
|
await runDockerStreaming(tagArgs);
|
|
95528
95617
|
} catch (err) {
|
|
95529
|
-
throw new LocalInvokeBuildError$1(`docker tag failed re-tagging
|
|
95618
|
+
throw new LocalInvokeBuildError$1(`docker tag failed re-tagging ${displayIdent(actualTag)} → ${displayIdent(tag)} for ECS container ${displayIdent(container.name)}: ${displaySafe(describeDockerFailure(err, tagArgs))}`);
|
|
95530
95619
|
}
|
|
95531
95620
|
}
|
|
95532
95621
|
return tag;
|
|
@@ -99055,4 +99144,4 @@ function buildProgram() {
|
|
|
99055
99144
|
|
|
99056
99145
|
//#endregion
|
|
99057
99146
|
export { buildProgram };
|
|
99058
|
-
//# sourceMappingURL=program-
|
|
99147
|
+
//# sourceMappingURL=program-BALgPCWL.js.map
|