@go-to-k/cdkd 0.296.2 → 0.296.3

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.
@@ -2,8 +2,8 @@ import { a as runWithStackAwsClients, i as resetAwsClients, o as setAwsClients,
2
2
  import { A as displaySafe, C as SAFE_MSG_ALTERED_CHAR, D as cutMarker, E as UNRENDERABLE, F as safeMsg, I as stringifyJsonPayload, L as truncateCodePoints, M as isPasteableIdent, O as displayAwsMessage, P as plainIdentOr, T as STACK_REF_MAX_CODE_POINTS, b as withSkipPrefix, c as getLiveRenderer, d as PATTERN_B_RESOURCE_TYPES, h as generateResourceName, i as reserveStdoutForPayload, j as displayStackName, k as displayIdent, l as PATTERN_B_NAME_OPTIONS, m as explicitNamePropertyFor, n as getLogger, o as runStackBuffered, p as derivesPatternBName, r as isStdoutReservedForPayload, u as PATTERN_B_NAME_PROPERTIES, w as SECRET_REF_MAX_CODE_POINTS, x as withStackName } from "./logger-Dvc7ddKe.js";
3
3
  import { An as setPasteableVerbFlags, At as CUSTOM_RESOURCE_RESPONSE_PREFIX, Bt as clientDefaultsFor, Ct as buildForceUnlockCommand, Dn as shellQuote, Dt as formatLockOperation, En as shellBoundedDisplay, Et as formatLockExpiry, F as runDeleteAttempt, Ft as producerRecordKey, G as beginCommandInterruptScope, Gn as retryClassificationText, Ht as AccountIdUnavailableError, It as setPasteableAwsProfile, J as isInterruptedWaitError, Jn as safeStringify, Jt as DeployCancelledError, K as endCommandInterruptScope, Kn as describeAwsFailure, Kt as CrossAccountSecretRefusalError, Lt as withPasteableAwsProfile, Mt as injectiveKey, On as withheldTargetClause, Ot as formatLockOwner, Pt as producerCoordinateKey, Qn as markNonRetryable, Qt as LocalStartServiceError, Rt as ambientClientDefaults, Sn as pasteableCommand, St as UNREPRODUCIBLE_LOCK_CLAUSE, Tn as quotedOrDescribed, Tt as forceQuitRecoveryClause, Un as isRetryableTransientError, V as isAwsCliLiteral, Vn as isAmbiguousOutcomeError, Vt as credentialFingerprint, Wn as isTransientServerError, Wt as CdkdError, Xn as isMarkedNonRetryable, Xt as IntrinsicResolutionRefusalError, Yt as DynamicReferenceRegionAmbiguousError, Zn as isThrottlingError, Zt as LocalInvokeBuildError$1, _ as VALUE_NOT_SHOWN, _n as SHELL_ACTIVE_WHY, an as ResourceTimeoutError, cn as StackTerminationProtectionError, g as assertRegionMatch, h as RESOURCE_NOT_FOUND, hn as TIMEOUT_FLAG_RESOURCE_TYPE, in as ProvisioningError, it as resourceTypeShown, jt as DEFAULT_STATE_PREFIX, kn as setPasteableRunFlags, mn as withErrorHandling, n as RESOLVED_PREVIOUS_PRINCIPAL_KEYS, nn as NestedStackChildDirectDestroyError, nt as logicalIdShown, on as ResourceUpdateNotSupportedError, pn as normalizeAwsError, q as interruptWatchListenerCount, rn as PartialFailureError, s as readRecordedPrincipals, sn as StackHasActiveImportsError, t as IAM_PRINCIPAL_NAME, tn as MalformedProducerRecordRefusalError, un as SynthesisError, w as remedyLogicalId, wn as plainOrDescribed, wt as buildLockContentionMessage, xn as isInertUnquoted, yn as commandHole, zt as ambientCredentialConfig } from "./iam-policy-targets-DSDSdxXz.js";
4
4
  import { n as awsClientDefaults, r as getAssumedRoleCredentials, u as formatAuthority } from "./aws-client-defaults-D0q0z4dG.js";
5
- import { $ as resourcesNamingDeclaredParameter, $o as buildDenyExternalAccessPolicy, $r as malformedDriftResourcePropertiesWarning, $s as nullPrototypeRecord, $t as extractDeploymentEventError, Ai as refuseMalformedResourceEntriesForDeploy, Ao as importableOutputs, Ar as carriesFetchableDynamicReference, As as resolveStateBucketWithDefault, At as planRollback, Ba as literalSplitDelimitersOf, Bi as refuseMalformedResourcesForDestroy, Bn as CloudControlProvider, Bo as createAssetRedirectResolver, Bs as uploadCfnTemplate, Bt as createPreDeleteFinalSnapshot, C as perType, Ci as refuseMalformedOrphans, Cn as withCreateTokenLedger, Co as acceptedCreateOnlyDropsOf, Cs as getDefaultStateBucketName, Da as describeTypeWithThrottleRetry, Di as refuseMalformedOutputsForDestroy, Do as hasReasonlessBaselineRefusal, Dr as getAccountInfo, Ds as resolveAutoAssetStorage, Dt as isJournaledOrphan, Ea as templateResourceTypes, Ei as refuseMalformedOutputs, Eo as hasReadableExportSet, Er as parameterTypeMayLoseSecretIdentity, Es as resolveApp, Et as demoteSupersededOrphans, Fa as inheritNestedStackParameterAssociations, Fi as refuseMalformedResourcePropertiesForDestroy, Fn as ProviderRegistry, Fo as AssetPublisher, Fr as isStalePlaceholderArnAttribute, Fs as ssmResolvedValueType, Ft as inheritProducerRegions, G as cyan, Ga as shareLogOnlyValues, Gi as repairMalformedOutputsForReadOnly, Gn as deleteIndeterminateGuards, Go as assertAssetBucketRegion, Gr as UNREADABLE_RESOURCES_MAP_ROW, Gs as canonicalizeRegion, H as formatResourceLine, Ha as printingCorpusOf, Hi as refuseMalformedState, Hn as ccProtectionRegistryTypes, Ho as rewriteTemplateAssetReferences, Hr as STATE_REGION_DIVERGED, Hs as decodeListingKey, Ht as isFinalSnapshotError, Ia as recordNestedStackParameterExpressions, Ii as refuseMalformedResourcePropertiesForDrift, In as ccBrokenReason, Io as isSensitiveAttributeName, Ir as refStateLookupFromResource, Is as CFN_TEMPLATE_BODY_LIMIT, It as ATOMIC_FINAL_SNAPSHOT_TYPES, J as red, Ja as maskSecretsInError, Ji as repairMalformedResourcesForReadOnly, Jn as isWaitAbandonedError, Jo as isCrossRegionRedirect, Jr as hasReadableOrphans, Js as StageLoadError, K as gray, Ka as createSecretMasker, Ki as repairMalformedResourceEntriesForReadOnly, Kn as deleteSkipReason, Ko as ensureAssetStorage, Kr as deployRefusesOrphanRowsReason, Ks as derivePartitionAndUrlSuffix, La as carryLogOnlyValues, Li as refuseMalformedResourcePropertiesForExport, Ln as wouldReturnToSdkProvider, Lo as stringifyValue, Ls as CFN_TEMPLATE_URL_LIMIT, Lt as PRE_DELETE_SNAPSHOT_TYPES, Ma as DagBuilder, Mi as refuseMalformedResourceEntriesForImport, Mo as orphansAfterRollback, Mr as keepsSecretReferenceToken, Ms as resolveUseCdkBootstrapAssets, Mt as resolveReplacementOldType, Na as TemplateParser, Ni as refuseMalformedResourceEntriesForImportSave, No as orphansCarriedFrom, Nr as AWS_NO_VALUE, Ns as stateBucketExistenceConfirmed, Nt as findNestedStackTypeChanges, Oa as withRetry, Oi as refuseMalformedResourceAttributesForOrphan, Oo as hasUnverifiableParameterRefusal, Or as isImpossibleEmptyStoredAttribute, Os as resolveCaptureObservedState, Ot as isReplacementOrphan, Pa as liveMatchesUnresolvedTokenFrame, Pi as refuseMalformedResourceEntriesForOrphan, Pn as CC_BROKEN_REASON, Po as shouldRetainResource, Pr as cfnRefValueFromPhysicalId, Ps as warnDeprecatedNoPrefixCliFlag, Q as reachableDivergentParameters, Qa as scrubResourceRecord, Qi as findActionableSilentDrops, Qo as validateContainerRepoName, Qr as isReadableResourceEntry, Qs as hasPlainPrototype, Qt as DeploymentEventsStore, Ra as createUnionSecretMasker, Ri as refuseMalformedResourcePropertiesForOrphan, Rn as isCustomResourceType$1, Ro as WorkGraph, Rr as withSharedDrainBudget, Rs as MIGRATE_TMP_PREFIX, Rt as buildFinalSnapshotIdentifier, S as isProtectionValueActive, Si as refuseMalformedOrphanRecordsForDestroy, So as splitImportedOps, Ss as synthesisStatusMessage, St as destroyStackRecordsView, Ta as prefetchCreateOnlyPropertyPaths, Ti as refuseMalformedOrphansForOrphan, To as exportNamesCarriedFrom, Tr as isUnboundTemplateParameter, Ts as loadCdkJson, Tt as recordAfterRollbackUpdate, U as createReadOnlyAttributeHealerFactory, Ua as recordLogOnlyParameterValue, Ui as repairMalformedOrphanRecordsForReadOnly, Uo as AssetModeResolver, Ur as STATE_RESOURCES_MALFORMED, Us as expectedOwnerParam, Ut as refusesFinalSnapshot, Va as logOnlyValueCount, Vi as refuseMalformedResourcesForExport, Vn as slowCcOperationTimeoutMs, Vo as loadPublishableAssetManifest, Vr as JSON_LISTING_HOLE_VALUE, Vs as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, Vt as effectiveDeletionPolicy, W as bold, Wa as recordLogOnlyValue, Wi as repairMalformedOrphansForReadOnly, Wn as UNSPECIFIED_SKIP_REASON, Wo as BOOTSTRAP_MARKER_PREFIX, Wr as UNREADABLE_ORPHANS_CONTAINER_ROW, Ws as PARTITION_TABLE, Wt as unsupportedFinalSnapshotError, X as computeParameterTaint, Xa as markSameGenerationBag, Xi as unreadableOrphanRecords, Xo as readBootstrapMarkerBody, Xr as hasReadableResources, Xs as defineOwnKey, Xt as updatePartialReason, Y as yellow, Ya as maskSecretsInText, Yi as unpreviewableOrphanRecords, Yo as parseBootstrapMarker, Yr as hasReadableOutputs, Ys as processStackMessages, Yt as updatePartialMessage, Z as namesAnyDeclaredParameter, Za as redactSecretsForState, Zi as unreadableResourceEntries, Zo as validateAssetBucketName, Zr as isReadableOrphanRecord, Zs as hasOwnKey, Zt as DeploymentEventsReader, _ as makeCanonicalizePropertiesFn, _i as malformedStateRefusalMessage, _n as findDestructiveChanges, _o as isSingleDynamicReferenceToken, _r as envCredentialsAreAssumedRole, _s as escapeRegExp, a as findNestedTemplateTreeDefect, aa as shownType, ac as resolveAssemblyPath, ai as malformedOrphanRecordsRefusalMessage, an as secretSafeKeyDisplay, ao as carriesSecretMask, ar as classifyReplaySecretRegion, as as dockerSpawnEnvWithSensitive, at as makeSiblingClaimReader, b as recordedProtectionNote, bo as S3StateBackend, bs as getDockerImageBySourceHash, bt as replayRollback, c as renderNestedTemplateTreeDefect, ca as isStatefulRecreateTargetSync, ci as malformedOrphansRefusalMessage, cn as noEchoParameterValueSeed, co as recordMaskOnlyValuesIn, cr as applyRoleArnIfSet, cs as getDockerCmd, ct as displacedOpClause, d as conditionInputsFrom, di as malformedOutputsWarning, dn as isExportAliasCollision, do as wholeStringLeavesOf, dr as explicitRoleArnOrThrow, ds as partitionSensitiveEnv, ea as unwrittenCreateOnlyReplacement, ec as ownValue, ei as malformedExportNamesWarning, en as WITHHELD_NAME_DISPLAY, eo as DYNAMIC_REFERENCE_TOKEN_SCAN, es as buildDockerImage, et as deleteJournaledOrphans, f as parentSuppliedValues, fi as malformedRenderedContainersWarning, fn as bindingSkippedOutputs, fo as STATE_SOURCED_BASELINE_RULES, fr as isIamRoleArn, fs as redactDockerArgvValues, ft as nestedChildStackName$1, g as mergeNoChangeOutputs, gi as malformedScrubResourceEntriesRefusalMessage, gn as constructPathOf, go as WHOLE_DYNAMIC_REFERENCE_PATTERN, gr as callerEnvCredentials, gs as warnFinchArgvExposure, gt as withNestedRevertRun, h as keptWholeReasonText, hi as malformedResourcesWarning, hn as maskingRetryLogger, ho as TEMPLATE_SOURCED_RULES, hr as applyCallerIdentityCredentials, hs as runDockerStreaming, ht as revertedNestedRowIds, i as childTemplateLoader, ia as findReplacedReadersOfRecreateTargets, ic as renderAssemblyPathEscape, ii as malformedLocalResourcesWarning, in as secretBearingStateKeyWarning, io as identityKeyFor, ir as IntrinsicFunctionResolver, is as describeDockerFailure, it as sameJournaledOrphans, ji as refuseMalformedResourceEntriesForDestroy, jo as isReadableBag, jr as isNamelessDynamicReferenceError, js as resolveStateBucketWithDefaultAndSource, jt as replacementNeverSwapped, ki as refuseMalformedResourceEntries, ko as importableOutputKeys, kr as carriesDynamicReference, ks as resolveSkipPrefix, kt as planFailedOps, l as templateIdentity, la as renderStatefulReason, li as malformedOrphansWarning, ln as collectDeclaredOutputNames, lo as recordNoEchoAttributeValues, lr as assertFlagRoleArn, ls as isDockerClientEnvKey, lt as displacedPhysicalIdShown, m as isSecretBearingReferenceString, mi as malformedResourcePropertiesWarning, mn as DEFAULT_RESOURCE_WARN_AFTER_MS, mo as STATE_SOURCED_READBACK_RULES, mr as AWS_CREDENTIAL_ENV_KEYS, ms as runDockerForeground, n as IMPLICIT_DELETE_DEPENDENCIES, na as NO_CC_HANDLERS_REASON, nc as describeFileReadFailure, ni as malformedLocalOutputsWarning, nn as exportAliasCollisionScrubWarning, no as isUncertifiedBaselineMaskPosition, nr as DiffCalculator, ns as describeDockerCapturedOutput, nt as journaledOrphanLines, o as isAbsoluteAssetPath, oa as MULTI_REGION_RECREATE_BLOCKED_TYPES, oi as malformedOrphanRecordsWarning, on as exportNameSecretExposure, oo as provenPublicValue, or as producerRegionsFromState, os as finchSecretArgvRefusal, ot as planOrphanAdoption, p as readRecordedConditionVerdicts, pi as malformedResourceEntriesWarning, pn as DEFAULT_RESOURCE_TIMEOUT_MS, po as STATE_SOURCED_CROSS_GENERATION_RULES, pr as sendableAssumeRoleCommand, ps as redactedDockerCause, pt as recordDisplacedSkips, q as green, qa as errorCauseChain, qi as repairMalformedResourcePropertiesForReadOnly, qo as getBootstrapMarkerKey, qr as displayLogicalId, qs as AssemblyReader, r as computeImplicitDeleteEdges, ra as hasNoCloudControlHandlers, rc as displayAssemblyPath, ri as malformedLocalResourceEntriesWarning, rn as secretBearing, ro as pathCrossesDottedKey, rr as INTRINSIC_KEYS, rs as describeDockerExecFailure, rt as loadJournaledOrphans, s as listNestedTemplateRows, sa as isStatefulRecreateTargetForReplace, sc as resolveBucketRegion, si as malformedOrphanRowsKeptWarning, sn as isWholeDynamicReferenceValue, so as recordMaskOnlyValue, sr as regionLessSecretName, ss as formatDockerLoginError, st as NESTED_PENDING_PARENT_REASON, t as DeployEngine, tc as absoluteAssemblyPathEscape, ti as malformedExportSourceWarning, tn as displayTextOrWithheld, to as dynamicReferenceTokens, ts as resolveDockerContextDirectory, tt as isHandledOrphan, u as conditionFingerprint, ui as malformedOutputsRefusalMessage, un as collectPublishedOutputNames, uo as recordProvenPublicExpression, ur as assertSendableRoleArn, us as isMalformedEnvKey, ut as dropSettledNestedJournals, v as withResourceDeadline, vi as previewableOrphanRecords, vn as formatDestructiveChange, vo as LockManager, vs as stripControlChars, vt as withNestedStackContext, w as readProtection, wi as refuseMalformedOrphansForDestroy, wo as describeRegionValueKind, wr as coerceParameterTypedValue, ws as getLegacyStateBucketName, wt as withStackRecords, x as PROTECTION_PROPERTY_BY_TYPE, xi as refuseMalformedOrphanRecords, xn as ledgerForStack, xo as rebuildClientForBucketRegion, xs as Synthesizer, y as recordedProtectionEvidence, yi as refuseDivergentRecordRegionForDestroy, yn as RollbackInlinePolicyWriters, yo as isLockInfoExpired, ys as AssetManifestLoader, yt as replayFailedOperations, za as hasMaskableValues, zi as refuseMalformedResourcesForDeploy, zo as buildAssetRedirectMap, zr as parameterInputsFor, zs as findLargeInlineResources, zt as ccRoutedFinalSnapshotError } from "./deploy-engine-C_Eg-RHm.js";
6
- import { t as getCdkdVersion } from "./version-WJhcQQ3m.js";
5
+ import { $ as resourcesNamingDeclaredParameter, $o as buildDenyExternalAccessPolicy, $r as malformedDriftResourcePropertiesWarning, $s as nullPrototypeRecord, $t as extractDeploymentEventError, Ai as refuseMalformedResourceEntriesForDeploy, Ao as importableOutputs, Ar as carriesFetchableDynamicReference, As as resolveStateBucketWithDefault, At as planRollback, Ba as literalSplitDelimitersOf, Bi as refuseMalformedResourcesForDestroy, Bn as CloudControlProvider, Bo as createAssetRedirectResolver, Bs as uploadCfnTemplate, Bt as createPreDeleteFinalSnapshot, C as perType, Ci as refuseMalformedOrphans, Cn as withCreateTokenLedger, Co as acceptedCreateOnlyDropsOf, Cs as getDefaultStateBucketName, Da as describeTypeWithThrottleRetry, Di as refuseMalformedOutputsForDestroy, Do as hasReasonlessBaselineRefusal, Dr as getAccountInfo, Ds as resolveAutoAssetStorage, Dt as isJournaledOrphan, Ea as templateResourceTypes, Ei as refuseMalformedOutputs, Eo as hasReadableExportSet, Er as parameterTypeMayLoseSecretIdentity, Es as resolveApp, Et as demoteSupersededOrphans, Fa as inheritNestedStackParameterAssociations, Fi as refuseMalformedResourcePropertiesForDestroy, Fn as ProviderRegistry, Fo as AssetPublisher, Fr as isStalePlaceholderArnAttribute, Fs as ssmResolvedValueType, Ft as inheritProducerRegions, G as cyan, Ga as shareLogOnlyValues, Gi as repairMalformedOutputsForReadOnly, Gn as deleteIndeterminateGuards, Go as assertAssetBucketRegion, Gr as UNREADABLE_RESOURCES_MAP_ROW, Gs as canonicalizeRegion, H as formatResourceLine, Ha as printingCorpusOf, Hi as refuseMalformedState, Hn as ccProtectionRegistryTypes, Ho as rewriteTemplateAssetReferences, Hr as STATE_REGION_DIVERGED, Hs as decodeListingKey, Ht as isFinalSnapshotError, Ia as recordNestedStackParameterExpressions, Ii as refuseMalformedResourcePropertiesForDrift, In as ccBrokenReason, Io as isSensitiveAttributeName, Ir as refStateLookupFromResource, Is as CFN_TEMPLATE_BODY_LIMIT, It as ATOMIC_FINAL_SNAPSHOT_TYPES, J as red, Ja as maskSecretsInError, Ji as repairMalformedResourcesForReadOnly, Jn as isWaitAbandonedError, Jo as isCrossRegionRedirect, Jr as hasReadableOrphans, Js as StageLoadError, K as gray, Ka as createSecretMasker, Ki as repairMalformedResourceEntriesForReadOnly, Kn as deleteSkipReason, Ko as ensureAssetStorage, Kr as deployRefusesOrphanRowsReason, Ks as derivePartitionAndUrlSuffix, La as carryLogOnlyValues, Li as refuseMalformedResourcePropertiesForExport, Ln as wouldReturnToSdkProvider, Lo as stringifyValue, Ls as CFN_TEMPLATE_URL_LIMIT, Lt as PRE_DELETE_SNAPSHOT_TYPES, Ma as DagBuilder, Mi as refuseMalformedResourceEntriesForImport, Mo as orphansAfterRollback, Mr as keepsSecretReferenceToken, Ms as resolveUseCdkBootstrapAssets, Mt as resolveReplacementOldType, Na as TemplateParser, Ni as refuseMalformedResourceEntriesForImportSave, No as orphansCarriedFrom, Nr as AWS_NO_VALUE, Ns as stateBucketExistenceConfirmed, Nt as findNestedStackTypeChanges, Oa as withRetry, Oi as refuseMalformedResourceAttributesForOrphan, Oo as hasUnverifiableParameterRefusal, Or as isImpossibleEmptyStoredAttribute, Os as resolveCaptureObservedState, Ot as isReplacementOrphan, Pa as liveMatchesUnresolvedTokenFrame, Pi as refuseMalformedResourceEntriesForOrphan, Pn as CC_BROKEN_REASON, Po as shouldRetainResource, Pr as cfnRefValueFromPhysicalId, Ps as warnDeprecatedNoPrefixCliFlag, Q as reachableDivergentParameters, Qa as scrubResourceRecord, Qi as findActionableSilentDrops, Qo as validateContainerRepoName, Qr as isReadableResourceEntry, Qs as hasPlainPrototype, Qt as DeploymentEventsStore, Ra as createUnionSecretMasker, Ri as refuseMalformedResourcePropertiesForOrphan, Rn as isCustomResourceType$1, Ro as WorkGraph, Rr as withSharedDrainBudget, Rs as MIGRATE_TMP_PREFIX, Rt as buildFinalSnapshotIdentifier, S as isProtectionValueActive, Si as refuseMalformedOrphanRecordsForDestroy, So as splitImportedOps, Ss as synthesisStatusMessage, St as destroyStackRecordsView, Ta as prefetchCreateOnlyPropertyPaths, Ti as refuseMalformedOrphansForOrphan, To as exportNamesCarriedFrom, Tr as isUnboundTemplateParameter, Ts as loadCdkJson, Tt as recordAfterRollbackUpdate, U as createReadOnlyAttributeHealerFactory, Ua as recordLogOnlyParameterValue, Ui as repairMalformedOrphanRecordsForReadOnly, Uo as AssetModeResolver, Ur as STATE_RESOURCES_MALFORMED, Us as expectedOwnerParam, Ut as refusesFinalSnapshot, Va as logOnlyValueCount, Vi as refuseMalformedResourcesForExport, Vn as slowCcOperationTimeoutMs, Vo as loadPublishableAssetManifest, Vr as JSON_LISTING_HOLE_VALUE, Vs as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, Vt as effectiveDeletionPolicy, W as bold, Wa as recordLogOnlyValue, Wi as repairMalformedOrphansForReadOnly, Wn as UNSPECIFIED_SKIP_REASON, Wo as BOOTSTRAP_MARKER_PREFIX, Wr as UNREADABLE_ORPHANS_CONTAINER_ROW, Ws as PARTITION_TABLE, Wt as unsupportedFinalSnapshotError, X as computeParameterTaint, Xa as markSameGenerationBag, Xi as unreadableOrphanRecords, Xo as readBootstrapMarkerBody, Xr as hasReadableResources, Xs as defineOwnKey, Xt as updatePartialReason, Y as yellow, Ya as maskSecretsInText, Yi as unpreviewableOrphanRecords, Yo as parseBootstrapMarker, Yr as hasReadableOutputs, Ys as processStackMessages, Yt as updatePartialMessage, Z as namesAnyDeclaredParameter, Za as redactSecretsForState, Zi as unreadableResourceEntries, Zo as validateAssetBucketName, Zr as isReadableOrphanRecord, Zs as hasOwnKey, Zt as DeploymentEventsReader, _ as makeCanonicalizePropertiesFn, _i as malformedStateRefusalMessage, _n as findDestructiveChanges, _o as isSingleDynamicReferenceToken, _r as envCredentialsAreAssumedRole, _s as escapeRegExp, a as findNestedTemplateTreeDefect, aa as shownType, ac as resolveAssemblyPath, ai as malformedOrphanRecordsRefusalMessage, an as secretSafeKeyDisplay, ao as carriesSecretMask, ar as classifyReplaySecretRegion, as as dockerSpawnEnvWithSensitive, at as makeSiblingClaimReader, b as recordedProtectionNote, bo as S3StateBackend, bs as getDockerImageBySourceHash, bt as replayRollback, c as renderNestedTemplateTreeDefect, ca as isStatefulRecreateTargetSync, ci as malformedOrphansRefusalMessage, cn as noEchoParameterValueSeed, co as recordMaskOnlyValuesIn, cr as applyRoleArnIfSet, cs as getDockerCmd, ct as displacedOpClause, d as conditionInputsFrom, di as malformedOutputsWarning, dn as isExportAliasCollision, do as wholeStringLeavesOf, dr as explicitRoleArnOrThrow, ds as partitionSensitiveEnv, ea as unwrittenCreateOnlyReplacement, ec as ownValue, ei as malformedExportNamesWarning, en as WITHHELD_NAME_DISPLAY, eo as DYNAMIC_REFERENCE_TOKEN_SCAN, es as buildDockerImage, et as deleteJournaledOrphans, f as parentSuppliedValues, fi as malformedRenderedContainersWarning, fn as bindingSkippedOutputs, fo as STATE_SOURCED_BASELINE_RULES, fr as isIamRoleArn, fs as redactDockerArgvValues, ft as nestedChildStackName$1, g as mergeNoChangeOutputs, gi as malformedScrubResourceEntriesRefusalMessage, gn as constructPathOf, go as WHOLE_DYNAMIC_REFERENCE_PATTERN, gr as callerEnvCredentials, gs as warnFinchArgvExposure, gt as withNestedRevertRun, h as keptWholeReasonText, hi as malformedResourcesWarning, hn as maskingRetryLogger, ho as TEMPLATE_SOURCED_RULES, hr as applyCallerIdentityCredentials, hs as runDockerStreaming, ht as revertedNestedRowIds, i as childTemplateLoader, ia as findReplacedReadersOfRecreateTargets, ic as renderAssemblyPathEscape, ii as malformedLocalResourcesWarning, in as secretBearingStateKeyWarning, io as identityKeyFor, ir as IntrinsicFunctionResolver, is as describeDockerFailure, it as sameJournaledOrphans, ji as refuseMalformedResourceEntriesForDestroy, jo as isReadableBag, jr as isNamelessDynamicReferenceError, js as resolveStateBucketWithDefaultAndSource, jt as replacementNeverSwapped, ki as refuseMalformedResourceEntries, ko as importableOutputKeys, kr as carriesDynamicReference, ks as resolveSkipPrefix, kt as planFailedOps, l as templateIdentity, la as renderStatefulReason, li as malformedOrphansWarning, ln as collectDeclaredOutputNames, lo as recordNoEchoAttributeValues, lr as assertFlagRoleArn, ls as isDockerClientEnvKey, lt as displacedPhysicalIdShown, m as isSecretBearingReferenceString, mi as malformedResourcePropertiesWarning, mn as DEFAULT_RESOURCE_WARN_AFTER_MS, mo as STATE_SOURCED_READBACK_RULES, mr as AWS_CREDENTIAL_ENV_KEYS, ms as runDockerForeground, n as IMPLICIT_DELETE_DEPENDENCIES, na as NO_CC_HANDLERS_REASON, nc as describeFileReadFailure, ni as malformedLocalOutputsWarning, nn as exportAliasCollisionScrubWarning, no as isUncertifiedBaselineMaskPosition, nr as DiffCalculator, ns as describeDockerCapturedOutput, nt as journaledOrphanLines, o as isAbsoluteAssetPath, oa as MULTI_REGION_RECREATE_BLOCKED_TYPES, oi as malformedOrphanRecordsWarning, on as exportNameSecretExposure, oo as provenPublicValue, or as producerRegionsFromState, os as finchSecretArgvRefusal, ot as planOrphanAdoption, p as readRecordedConditionVerdicts, pi as malformedResourceEntriesWarning, pn as DEFAULT_RESOURCE_TIMEOUT_MS, po as STATE_SOURCED_CROSS_GENERATION_RULES, pr as sendableAssumeRoleCommand, ps as redactedDockerCause, pt as recordDisplacedSkips, q as green, qa as errorCauseChain, qi as repairMalformedResourcePropertiesForReadOnly, qo as getBootstrapMarkerKey, qr as displayLogicalId, qs as AssemblyReader, r as computeImplicitDeleteEdges, ra as hasNoCloudControlHandlers, rc as displayAssemblyPath, ri as malformedLocalResourceEntriesWarning, rn as secretBearing, ro as pathCrossesDottedKey, rr as INTRINSIC_KEYS, rs as describeDockerExecFailure, rt as loadJournaledOrphans, s as listNestedTemplateRows, sa as isStatefulRecreateTargetForReplace, sc as resolveBucketRegion, si as malformedOrphanRowsKeptWarning, sn as isWholeDynamicReferenceValue, so as recordMaskOnlyValue, sr as regionLessSecretName, ss as formatDockerLoginError, st as NESTED_PENDING_PARENT_REASON, t as DeployEngine, tc as absoluteAssemblyPathEscape, ti as malformedExportSourceWarning, tn as displayTextOrWithheld, to as dynamicReferenceTokens, ts as resolveDockerContextDirectory, tt as isHandledOrphan, u as conditionFingerprint, ui as malformedOutputsRefusalMessage, un as collectPublishedOutputNames, uo as recordProvenPublicExpression, ur as assertSendableRoleArn, us as isMalformedEnvKey, ut as dropSettledNestedJournals, v as withResourceDeadline, vi as previewableOrphanRecords, vn as formatDestructiveChange, vo as LockManager, vs as stripControlChars, vt as withNestedStackContext, w as readProtection, wi as refuseMalformedOrphansForDestroy, wo as describeRegionValueKind, wr as coerceParameterTypedValue, ws as getLegacyStateBucketName, wt as withStackRecords, x as PROTECTION_PROPERTY_BY_TYPE, xi as refuseMalformedOrphanRecords, xn as ledgerForStack, xo as rebuildClientForBucketRegion, xs as Synthesizer, y as recordedProtectionEvidence, yi as refuseDivergentRecordRegionForDestroy, yn as RollbackInlinePolicyWriters, yo as isLockInfoExpired, ys as AssetManifestLoader, yt as replayFailedOperations, za as hasMaskableValues, zi as refuseMalformedResourcesForDeploy, zo as buildAssetRedirectMap, zr as parameterInputsFor, zs as findLargeInlineResources, zt as ccRoutedFinalSnapshotError } from "./deploy-engine-Dre6eDNJ.js";
6
+ import { t as getCdkdVersion } from "./version-B5LYpWJH.js";
7
7
  import { randomBytes, randomUUID } from "node:crypto";
8
8
  import { CopyObjectCommand, CreateBucketCommand, DeleteBucketCommand, DeleteObjectsCommand, GetBucketLocationCommand, GetObjectCommand, HeadBucketCommand, ListObjectVersionsCommand, ListObjectsV2Command, NoSuchBucket, NotFound, PutBucketEncryptionCommand, PutBucketPolicyCommand, PutBucketVersioningCommand, PutObjectCommand, S3Client, S3ServiceException } from "@aws-sdk/client-s3";
9
9
  import { GetRoleCommand, GetUserCommand } from "@aws-sdk/client-iam";
@@ -29,7 +29,7 @@ import * as readline$1 from "node:readline/promises";
29
29
  import readline from "node:readline/promises";
30
30
  import { Document, Pair, Scalar, YAMLMap, YAMLSeq, isScalar, parse, stringify, visit } from "yaml";
31
31
  import { CfnLocalStateProvider, createLocalStartAgentCoreCommand, createLocalStartCloudFrontCommand, createLocalStateProvider, getEmbedConfig, isCfnFlagPresent, isCfnFlagPresent as isCfnFlagPresent$1, listTargets, rejectExplicitCfnStackWithMultipleStacks, resolveCfnFallbackRegion, setEmbedConfig, substituteAgainstState, substituteAgainstStateAsync, substituteEnvVarsFromState, substituteEnvVarsFromStateAsync } from "cdk-local";
32
- import { A2A_CONTAINER_PORT, A2A_PATH, AGENTCORE_A2A_PROTOCOL, AGENTCORE_AGUI_PROTOCOL, AGENTCORE_MCP_PROTOCOL, ConnectionRegistry, EcsTaskResolutionError, HOST_GATEWAY_MIN_VERSION, LocalInvokeBuildError, MCP_CONTAINER_PORT, MCP_PATH, a2aInvokeOnce, addAlbSpecificOptions, addCommonEcsServiceOptions, addStartServiceSpecificOptions, albStrategy, architectureToPlatform, attachAuthorizers, attachStageContext, availableApiIdentifiers, bufferToBody, buildAgentCoreCodeImage, buildCognitoJwksUrl, buildConnectEvent, buildContainerImage, buildCorsConfigByApiId, buildCorsConfigFromCloudFrontChain, buildDisconnectEvent, buildJwksUrlFromIssuer, buildMessageEvent, buildMgmtEndpointEnvUrl, buildStageMap, classifySourceChange, createAuthorizerCache, createFileWatcher, createFileWatcher as createFileWatcher$1, createJwksCache, createWatchPredicates, defaultCredentialsLoader, derivePseudoParametersFromRegion, discoverRoutes, discoverWebSocketApis, downloadAndExtractS3Bundle, filterRoutesByApiIdentifier, groupRoutesByServer, handleConnectionsRequest, invokeAgentCore, invokeAgentCoreWs, materializeLayerFromArn, mcpInvokeOnce, parseConnectionsPath, parseSelectionExpressionPath, pickAgentCoreCandidateStack, pickAgentCoreCandidateStack as pickAgentCoreCandidateStack$1, probeHostGatewaySupport, readMtlsMaterialsFromDisk, resolveAgentCoreTarget, resolveEnvVars, resolveHostGatewayExtraHosts, resolveRuntimeCodeMountPath, resolveRuntimeFileExtension, resolveRuntimeImage, resolveSingleTarget, resolveWatchConfig, runEcsServiceEmulator, signAgentCoreInvocation, startApiServer, substituteImagePlaceholders, tryResolveImageFnJoin, verifyJwtViaDiscovery, waitForAgentCorePing } from "cdk-local/internal";
32
+ import { A2A_CONTAINER_PORT, A2A_PATH, AGENTCORE_A2A_PROTOCOL, AGENTCORE_AGUI_PROTOCOL, AGENTCORE_MCP_PROTOCOL, ConnectionRegistry, DynamicReferenceResolver, EcsTaskResolutionError, HOST_GATEWAY_MIN_VERSION, LocalInvokeBuildError, MCP_CONTAINER_PORT, MCP_PATH, a2aInvokeOnce, addAlbSpecificOptions, addCommonEcsServiceOptions, addStartServiceSpecificOptions, albStrategy, architectureToPlatform, attachAuthorizers, attachStageContext, availableApiIdentifiers, bufferToBody, buildAgentCoreCodeImage, buildCognitoJwksUrl, buildConnectEvent, buildContainerImage, buildCorsConfigByApiId, buildCorsConfigFromCloudFrontChain, buildDisconnectEvent, buildJwksUrlFromIssuer, buildMessageEvent, buildMgmtEndpointEnvUrl, buildStageMap, classifySourceChange, containsDynamicReference, createAuthorizerCache, createFileWatcher, createFileWatcher as createFileWatcher$1, createJwksCache, createWatchPredicates, defaultCredentialsLoader, derivePseudoParametersFromRegion, discoverRoutes, discoverWebSocketApis, downloadAndExtractS3Bundle, filterRoutesByApiIdentifier, firstUsableRegion, groupRoutesByServer, handleConnectionsRequest, invokeAgentCore, invokeAgentCoreWs, keysNotFromTemplate, keysOverriddenBy, materializeLayerFromArn, mcpInvokeOnce, parseConnectionsPath, parseSelectionExpressionPath, pickAgentCoreCandidateStack, pickAgentCoreCandidateStack as pickAgentCoreCandidateStack$1, probeHostGatewaySupport, readMtlsMaterialsFromDisk, resolveAgentCoreTarget, resolveDynamicReferencesInEnv, resolveEnvVars, resolveHostGatewayExtraHosts, resolveRuntimeCodeMountPath, resolveRuntimeFileExtension, resolveRuntimeImage, resolveSingleTarget, resolveWatchConfig, runEcsServiceEmulator, signAgentCoreInvocation, startApiServer, substituteImagePlaceholders, tryResolveImageFnJoin, verifyJwtViaDiscovery, waitForAgentCorePing, withoutKeys } from "cdk-local/internal";
33
33
  import { createServer } from "node:net";
34
34
  import { setTimeout as setTimeout$1 } from "node:timers/promises";
35
35
  import { mkdtemp, rm, writeFile } from "node:fs/promises";
@@ -2414,7 +2414,7 @@ function collectCrossStackRefs(node, onRef) {
2414
2414
  //#region src/provisioning/register-providers.ts
2415
2415
  let providerClasses;
2416
2416
  function loadProviderClasses() {
2417
- providerClasses ??= import("./provider-classes-CtsCylnp.js");
2417
+ providerClasses ??= import("./provider-classes-Ca6o5by0.js");
2418
2418
  return providerClasses;
2419
2419
  }
2420
2420
  function registerAllProviders(registry, classes) {
@@ -8534,10 +8534,10 @@ function createIamPrincipalUniqueIdResolver(awsClients) {
8534
8534
  return uniqueId;
8535
8535
  };
8536
8536
  }
8537
- function containsDynamicReference(value) {
8537
+ function containsDynamicReference$1(value) {
8538
8538
  if (typeof value === "string") return value.includes("{{resolve:");
8539
- if (Array.isArray(value)) return value.some(containsDynamicReference);
8540
- if (value !== null && typeof value === "object") return Object.values(value).some(containsDynamicReference);
8539
+ if (Array.isArray(value)) return value.some(containsDynamicReference$1);
8540
+ if (value !== null && typeof value === "object") return Object.values(value).some(containsDynamicReference$1);
8541
8541
  return false;
8542
8542
  }
8543
8543
  const MIN_SECRET_NEEDLE_LENGTH = 4;
@@ -8712,7 +8712,7 @@ async function resolveDriftLeafByRegion(leaf, propertyPath, logicalId, consumerR
8712
8712
  return out + leaf.slice(cursor);
8713
8713
  }
8714
8714
  async function resolveStateSecretExpressions(props, resolvers, secrets, options) {
8715
- if (!containsDynamicReference(props)) return props;
8715
+ if (!containsDynamicReference$1(props)) return props;
8716
8716
  const { secretPaths, onUnresolved, producerRegions, logicalId, consumerRegion } = options;
8717
8717
  const ctx = {
8718
8718
  template: { Resources: {} },
@@ -19840,6 +19840,10 @@ const ENGINE_ECS_SECRETS_CHANNEL = {
19840
19840
  what: "ECS task secrets are fetched with the role and injected as plaintext into the container's environment",
19841
19841
  flagOnly: false
19842
19842
  };
19843
+ const ENGINE_DYNAMIC_REFERENCE_CHANNEL = {
19844
+ what: "CloudFormation dynamic references ({{resolve:...}}) are fetched with the role and injected as plaintext into the container's environment",
19845
+ flagOnly: false
19846
+ };
19843
19847
  const ENGINE_ASSUME_ROLE_CHANNEL = {
19844
19848
  what: "the role --assume-role / --assume-task-role assumes for the container is assumed BY the --role-arn role, so the container can receive a role you could not assume yourself",
19845
19849
  flagOnly: false
@@ -20946,6 +20950,7 @@ function checkVolumeHostPath(hostPath) {
20946
20950
  }
20947
20951
  async function applyCrossStackResolverToTask(task, context) {
20948
20952
  if (!context.crossStackResolver) return;
20953
+ const { resolveDynamicReferences: _envOnly, ...secretContext } = context;
20949
20954
  const rawContainers = (task.resource.Properties ?? {})["ContainerDefinitions"];
20950
20955
  if (!Array.isArray(rawContainers)) return;
20951
20956
  for (let idx = 0; idx < task.containers.length; idx += 1) {
@@ -20965,10 +20970,21 @@ async function applyCrossStackResolverToTask(task, context) {
20965
20970
  if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") continue;
20966
20971
  if (Object.hasOwn(container.environment, key)) continue;
20967
20972
  if (!isCrossStackIntrinsic(value)) continue;
20968
- const sub = await substituteAgainstStateAsync(value, context);
20973
+ let resolvedToken = false;
20974
+ const hook = context.resolveDynamicReferences;
20975
+ const keyContext = hook ? {
20976
+ ...context,
20977
+ resolveDynamicReferences: async (v, producerRegion) => {
20978
+ const plain = await hook(v, producerRegion);
20979
+ resolvedToken = true;
20980
+ return plain;
20981
+ }
20982
+ } : context;
20983
+ const sub = await substituteAgainstStateAsync(value, keyContext);
20969
20984
  if (sub.kind === "literal") {
20970
20985
  defineOwnKey(container.environment, key, String(sub.value));
20971
20986
  resolvedEnvKeys.add(key);
20987
+ if (resolvedToken) container.resolvedDynamicReferenceKeys = [...container.resolvedDynamicReferenceKeys ?? [], key];
20972
20988
  }
20973
20989
  }
20974
20990
  if (Array.isArray(c["Secrets"])) for (const entry of c["Secrets"]) {
@@ -20980,7 +20996,7 @@ async function applyCrossStackResolverToTask(task, context) {
20980
20996
  if (typeof valueFromRaw === "string" && valueFromRaw.length > 0) continue;
20981
20997
  if (container.secrets.some((s) => s.name === sName)) continue;
20982
20998
  if (!isCrossStackIntrinsic(valueFromRaw)) continue;
20983
- const sub = await substituteAgainstStateAsync(valueFromRaw, context);
20999
+ const sub = await substituteAgainstStateAsync(valueFromRaw, secretContext);
20984
21000
  if (sub.kind === "literal" && typeof sub.value === "string" && sub.value.length > 0) {
20985
21001
  container.secrets.push({
20986
21002
  name: sName,
@@ -21560,6 +21576,29 @@ function strandedProfileCredentialsNotice(hostPath) {
21560
21576
  return `The AWS credentials file mounted into the containers is NOT removed: delete ${displayIdent(hostPath)} once you tear them down.`;
21561
21577
  }
21562
21578
 
21579
+ //#endregion
21580
+ //#region src/local/dynamic-reference.ts
21581
+ function createCallerDynamicReferenceResolver(profile) {
21582
+ return new DynamicReferenceResolver({
21583
+ secretsManagerClientFactory: (region) => new SecretsManagerClient({
21584
+ ...awsClientDefaults({
21585
+ profile,
21586
+ ignoreAssumedRole: true
21587
+ }),
21588
+ ...region && { region: canonicalizeRegion(region) },
21589
+ ...profile && { profile }
21590
+ }),
21591
+ ssmClientFactory: (region) => new SSMClient({
21592
+ ...awsClientDefaults({
21593
+ profile,
21594
+ ignoreAssumedRole: true
21595
+ }),
21596
+ ...region && { region: canonicalizeRegion(region) },
21597
+ ...profile && { profile }
21598
+ })
21599
+ });
21600
+ }
21601
+
21563
21602
  //#endregion
21564
21603
  //#region src/local/websocket-body.ts
21565
21604
  function bufferToBody$1(raw, isBinary) {
@@ -21966,6 +22005,7 @@ function createContainerPool(specs, options) {
21966
22005
  }],
21967
22006
  extraMounts,
21968
22007
  env: spec.env,
22008
+ ...spec.sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys: spec.sensitiveEnvKeys },
21969
22009
  cmd: [spec.lambda.handler],
21970
22010
  hostPort,
21971
22011
  host: spec.containerHost,
@@ -21984,6 +22024,7 @@ function createContainerPool(specs, options) {
21984
22024
  readOnly: true
21985
22025
  }] },
21986
22026
  env: spec.env,
22027
+ ...spec.sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys: spec.sensitiveEnvKeys },
21987
22028
  cmd: spec.command,
21988
22029
  hostPort,
21989
22030
  host: spec.containerHost,
@@ -22376,7 +22417,8 @@ async function localStartApiCommand(target, options) {
22376
22417
  skipPull: options.pull === false,
22377
22418
  ...options.layerRoleArn !== void 0 && { layerRoleArn: options.layerRoleArn },
22378
22419
  ...profileCredentials && { profileCredentials },
22379
- ...profileCredsFile && { profileCredsFile }
22420
+ ...profileCredsFile && { profileCredsFile },
22421
+ ...dynamicReferenceSpecOptions(options)
22380
22422
  });
22381
22423
  specs.set(logicalId, spec);
22382
22424
  }
@@ -22800,8 +22842,14 @@ function assumeRolePin(logicalId) {
22800
22842
  function malformedAutoRoleError(logicalId, detail) {
22801
22843
  return /* @__PURE__ */ new Error(`--assume-role-auto: ${detail}. Refusing to start rather than fall back to your shell credentials for this Lambda. Fix the deployed role ARN, or pin one explicitly with ${assumeRolePin(logicalId)}.`);
22802
22844
  }
22845
+ function dynamicReferenceSpecOptions(options) {
22846
+ return {
22847
+ ...options.profile !== void 0 && { profile: options.profile },
22848
+ ...options.stackRegion !== void 0 && { stackRegionOverride: options.stackRegion }
22849
+ };
22850
+ }
22803
22851
  async function buildContainerSpec(args) {
22804
- const { logicalId, stacks, overrides, assumeRole, containerHost, debugPort, stsRegion, inlineTmpDirs, layerTmpDirs, stateByStack, skipPull, layerRoleArn, profileCredentials, profileCredsFile } = args;
22852
+ const { logicalId, stacks, overrides, assumeRole, containerHost, debugPort, stsRegion, inlineTmpDirs, layerTmpDirs, stateByStack, skipPull, layerRoleArn, profileCredentials, profileCredsFile, profile, stackRegionOverride } = args;
22805
22853
  const lambda = resolveLambdaByLogicalId(logicalId, stacks);
22806
22854
  let codeDir;
22807
22855
  let optDir;
@@ -22834,6 +22882,22 @@ async function buildContainerSpec(args) {
22834
22882
  const overrideKeyExample = lambdaCdkPath?.replace(/\/Resource$/, "") ?? logicalId;
22835
22883
  getLogger().warn(`Lambda ${logicalId}: env var ${key} contains a CloudFormation intrinsic and was dropped. Override it with --env-vars (e.g. {"${overrideKeyExample}":{"${key}":"<literal>"}}) or pass --from-state to recover deployed values.`);
22836
22884
  }
22885
+ const plaintextKeys = new Set(stateAudit?.sensitiveKeys ?? []);
22886
+ for (const key of keysNotFromTemplate(templateEnv, envResult.resolved)) plaintextKeys.add(key);
22887
+ const dynamicRefs = createCallerDynamicReferenceResolver(profile);
22888
+ let dynamic;
22889
+ try {
22890
+ dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
22891
+ region: firstUsableRegion(stateBundle?.region, stackRegionOverride, lambda.stack.region, stsRegion),
22892
+ label: `Lambda ${logicalId}`,
22893
+ skipKeys: plaintextKeys,
22894
+ resolver: dynamicRefs
22895
+ });
22896
+ } finally {
22897
+ dynamicRefs.dispose();
22898
+ }
22899
+ const sensitiveKeyList = [...stateAudit?.sensitiveKeys ?? [], ...dynamic.resolvedKeys];
22900
+ const sensitiveEnvKeys = sensitiveKeyList.length > 0 ? new Set(sensitiveKeyList) : void 0;
22837
22901
  const dockerEnv = {
22838
22902
  AWS_LAMBDA_FUNCTION_NAME: logicalId,
22839
22903
  AWS_LAMBDA_FUNCTION_MEMORY_SIZE: String(lambda.memoryMb),
@@ -22841,7 +22905,7 @@ async function buildContainerSpec(args) {
22841
22905
  AWS_LAMBDA_FUNCTION_VERSION: "$LATEST",
22842
22906
  AWS_LAMBDA_LOG_GROUP_NAME: `/aws/lambda/${logicalId}`,
22843
22907
  AWS_LAMBDA_LOG_STREAM_NAME: "local",
22844
- ...envResult.resolved
22908
+ ...dynamic.env
22845
22909
  };
22846
22910
  const roleArn = resolveStartApiAssumeRoleArn({
22847
22911
  logicalId,
@@ -22879,6 +22943,7 @@ async function buildContainerSpec(args) {
22879
22943
  codeDir,
22880
22944
  platform,
22881
22945
  env: dockerEnv,
22946
+ ...sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys },
22882
22947
  containerHost,
22883
22948
  ...optDir !== void 0 && { optDir },
22884
22949
  ...debugPort !== void 0 && { debugPort },
@@ -22897,6 +22962,7 @@ async function buildContainerSpec(args) {
22897
22962
  ...lambda.imageConfig.entryPoint !== void 0 && lambda.imageConfig.entryPoint.length > 0 && { entryPoint: lambda.imageConfig.entryPoint },
22898
22963
  ...lambda.imageConfig.workingDirectory !== void 0 && { workingDir: lambda.imageConfig.workingDirectory },
22899
22964
  env: dockerEnv,
22965
+ ...sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys },
22900
22966
  containerHost,
22901
22967
  ...debugPort !== void 0 && { debugPort },
22902
22968
  ...tmpfs !== void 0 && { tmpfs },
@@ -23328,13 +23394,16 @@ async function loadStateForRoutedStacks(stacks, routes, routesWithAuth, options)
23328
23394
  try {
23329
23395
  const loaded = await provider.load(stack.stackName, stack.region);
23330
23396
  if (!loaded) continue;
23331
- const bundle = { state: {
23332
- version: 1,
23333
- stackName: stack.stackName,
23334
- resources: loaded.resources,
23335
- outputs: loaded.outputs,
23336
- lastModified: 0
23337
- } };
23397
+ const bundle = {
23398
+ state: {
23399
+ version: 1,
23400
+ stackName: stack.stackName,
23401
+ resources: loaded.resources,
23402
+ outputs: loaded.outputs,
23403
+ lastModified: 0
23404
+ },
23405
+ region: loaded.region
23406
+ };
23338
23407
  if (stackHasIntrinsicEnv(stackName)) {
23339
23408
  const pseudo = await resolvePseudoParametersForStartApi(loaded.region, options);
23340
23409
  if (pseudo) bundle.pseudoParameters = pseudo;
@@ -23797,10 +23866,24 @@ async function runEcsTask(task, options, state) {
23797
23866
  const startOrder = topoSort(buildDependencyGraph(task.containers), task.containers);
23798
23867
  const finchRefusals = [];
23799
23868
  for (const c of task.containers) {
23800
- const refusal = finchSecretArgvRefusal(c.secrets.map((s) => s.name).filter((n) => !isMalformedEnvKey(n) && !isDockerClientEnvKey(n)), `Container ${displayIdent(c.name)}`);
23869
+ const refusal = finchSecretArgvRefusal([
23870
+ ...c.secrets.map((s) => s.name),
23871
+ ...c.resolvedDynamicReferenceKeys ?? [],
23872
+ ...dynamicReferenceEnvKeys(c, options.envOverrides)
23873
+ ].filter((n) => !isMalformedEnvKey(n) && !isDockerClientEnvKey(n)), `Container ${displayIdent(c.name)}`);
23801
23874
  if (refusal !== void 0) finchRefusals.push(refusal);
23802
23875
  }
23803
23876
  if (finchRefusals.length > 0) throw new EcsTaskRunnerError(finchRefusals.join("\n"));
23877
+ const argvRefusals = [];
23878
+ for (const c of task.containers) {
23879
+ const fields = [
23880
+ ["Command", c.command],
23881
+ ["EntryPoint", c.entryPoint],
23882
+ ["HealthCheck.Command", c.healthCheck?.command]
23883
+ ];
23884
+ for (const [field, argv] of fields) if (argv?.some((a) => containsDynamicReference(a))) argvRefusals.push(`Container ${displayIdent(c.name)}: ${field} carries a CloudFormation dynamic reference ({{resolve:...}}). cdkd resolves dynamic references only in Environment, because resolving one here would put the secret on the docker run argv. Move the value into an Environment variable or a Secrets entry.`);
23885
+ }
23886
+ if (argvRefusals.length > 0) throw new EcsTaskRunnerError(argvRefusals.join("\n"));
23804
23887
  const imagePlan = options.imagePlanByContainer ?? /* @__PURE__ */ new Map();
23805
23888
  if (!options.imagePlanByContainer) await prepareImages(task, imagePlan, options);
23806
23889
  const allSecrets = [];
@@ -23810,6 +23893,22 @@ async function runEcsTask(task, options, state) {
23810
23893
  valueFrom: s.valueFrom
23811
23894
  });
23812
23895
  const secretsByContainer = groupSecretsByContainer(await resolveEcsSecrets(allSecrets, { ...options.region !== void 0 && { region: options.region } }));
23896
+ const dynamicEnvByContainer = /* @__PURE__ */ new Map();
23897
+ const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
23898
+ try {
23899
+ for (const c of task.containers) {
23900
+ const tokenKeys = new Set(dynamicReferenceEnvKeys(c, options.envOverrides));
23901
+ if (tokenKeys.size === 0) continue;
23902
+ dynamicEnvByContainer.set(c.name, await resolveDynamicReferencesInEnv(c.environment, {
23903
+ region: firstUsableRegion(options.stateRecordRegion, options.stackRegion, task.stack.region, options.region),
23904
+ label: `Container ${c.name}`,
23905
+ skipKeys: new Set(Object.keys(c.environment).filter((k) => !tokenKeys.has(k))),
23906
+ resolver: dynamicRefs
23907
+ }));
23908
+ }
23909
+ } finally {
23910
+ dynamicRefs.dispose();
23911
+ }
23813
23912
  if (options.existingNetwork) state.network = {
23814
23913
  ...options.existingNetwork,
23815
23914
  ownedByCaller: true
@@ -23853,9 +23952,14 @@ async function runEcsTask(task, options, state) {
23853
23952
  for (const container of task.containers) {
23854
23953
  const image = imagePlan.get(container.name);
23855
23954
  if (!image) throw new EcsTaskRunnerError(`Internal: no resolved image for container '${container.name}'.`);
23955
+ const dynamic = dynamicEnvByContainer.get(container.name);
23856
23956
  const built = buildDockerRunArgs({
23857
23957
  task,
23858
- container,
23958
+ container: dynamic ? {
23959
+ ...container,
23960
+ environment: dynamic.env
23961
+ } : container,
23962
+ plaintextEnvKeys: [...container.resolvedDynamicReferenceKeys ?? [], ...dynamic?.resolvedKeys ?? []],
23859
23963
  image,
23860
23964
  network: state.network.networkName,
23861
23965
  volumeByName,
@@ -24175,6 +24279,19 @@ async function realizeDockerVolumes(volumes, state) {
24175
24279
  function randHex(bytes) {
24176
24280
  return randomBytes(bytes).toString("hex");
24177
24281
  }
24282
+ function overriddenEnvKeys(overrides, containerName) {
24283
+ if (!overrides) return [];
24284
+ const applied = (map) => Object.entries(map ?? {}).filter(([, v]) => v === null || typeof v === "string" || typeof v === "number" || typeof v === "boolean").map(([k]) => k);
24285
+ return [...applied(overrides["Parameters"]), ...applied(overrides[containerName])];
24286
+ }
24287
+ function dynamicReferenceEnvKeys(container, overrides) {
24288
+ const skip = /* @__PURE__ */ new Set([
24289
+ ...container.resolvedDynamicReferenceKeys ?? [],
24290
+ ...container.secrets.map((s) => s.name),
24291
+ ...overriddenEnvKeys(overrides, container.name)
24292
+ ]);
24293
+ return Object.keys(container.environment).filter((k) => !skip.has(k) && containsDynamicReference(container.environment[k]));
24294
+ }
24178
24295
  function groupSecretsByContainer(resolved) {
24179
24296
  const out = /* @__PURE__ */ new Map();
24180
24297
  for (const r of resolved) {
@@ -24242,7 +24359,11 @@ function buildDockerRunArgs(opts) {
24242
24359
  applyOverrideMap(finalEnv, overrides["Parameters"]);
24243
24360
  applyOverrideMap(finalEnv, overrides[container.name]);
24244
24361
  }
24245
- const sensitiveKeys = /* @__PURE__ */ new Set([...SENSITIVE_ENV_KEYS, ...secrets.map((s) => s.name)]);
24362
+ const sensitiveKeys = /* @__PURE__ */ new Set([
24363
+ ...SENSITIVE_ENV_KEYS,
24364
+ ...secrets.map((s) => s.name),
24365
+ ...opts.plaintextEnvKeys ?? []
24366
+ ]);
24246
24367
  const { flags, sensitiveEnv, collisions } = partitionSensitiveEnv(finalEnv, sensitiveKeys);
24247
24368
  args.push(...flags);
24248
24369
  if (container.user) args.push("--user", container.user);
@@ -24362,13 +24483,23 @@ async function localRunTaskCommand(target, options) {
24362
24483
  const consumerRegion = resolveEcsConsumerRegion(stateRecordRegion, options, task.stack.region);
24363
24484
  const resolver = await stateProvider.buildCrossStackResolver(consumerRegion);
24364
24485
  if (resolver) {
24486
+ const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
24365
24487
  const subContext = {
24366
24488
  resources: imageContext?.stateResources ?? {},
24367
24489
  ...imageContext?.pseudoParameters && { pseudoParameters: imageContext.pseudoParameters },
24368
24490
  consumerRegion,
24369
- crossStackResolver: resolver
24491
+ crossStackResolver: resolver,
24492
+ resolveDynamicReferences: (value, producerRegion) => dynamicRefs.resolveString(value, {
24493
+ region: producerRegion,
24494
+ consumer: `Task ${task.taskDefinitionLogicalId} cross-stack env value`,
24495
+ overridable: false
24496
+ })
24370
24497
  };
24371
- await applyCrossStackResolverToTask(task, subContext);
24498
+ try {
24499
+ await applyCrossStackResolverToTask(task, subContext);
24500
+ } finally {
24501
+ dynamicRefs.dispose();
24502
+ }
24372
24503
  }
24373
24504
  } else if (!stateProvider && taskNeeds.needsCrossStackResolver) logger.warn("Container Environment / Secrets entries contain Fn::ImportValue / Fn::GetStackOutput intrinsics. Pass --from-state (cdkd-deployed) or --from-cfn-stack (cdk-deployed) to substitute them against deployed state.");
24374
24505
  sigintHandler = () => {
@@ -24403,7 +24534,8 @@ async function localRunTaskCommand(target, options) {
24403
24534
  const envOverrides = readEnvOverridesFile$2(options.envVars);
24404
24535
  const runOpts = buildRunEcsTaskOptions(options, channels, {
24405
24536
  ...envOverrides !== void 0 && { envOverrides },
24406
- ...resolvedRoleArn !== void 0 && { resolvedRoleArn }
24537
+ ...resolvedRoleArn !== void 0 && { resolvedRoleArn },
24538
+ ...stateRecordRegion !== void 0 && { stateRecordRegion }
24407
24539
  });
24408
24540
  const hostGatewayExtraHosts = await resolveHostGatewayExtraHosts();
24409
24541
  if (hostGatewayExtraHosts.length > 0) runOpts.hostGatewayExtraHosts = hostGatewayExtraHosts;
@@ -24621,6 +24753,9 @@ function buildRunEcsTaskOptions(options, channels, extra = {}) {
24621
24753
  if (extra.resolvedRoleArn) runOpts.taskRoleArn = extra.resolvedRoleArn;
24622
24754
  if (options.platform) runOpts.platformOverride = options.platform;
24623
24755
  if (options.region) runOpts.region = options.region;
24756
+ if (options.stackRegion) runOpts.stackRegion = options.stackRegion;
24757
+ if (options.profile) runOpts.profile = options.profile;
24758
+ if (extra.stateRecordRegion) runOpts.stateRecordRegion = extra.stateRecordRegion;
24624
24759
  if (options.ecrRoleArn !== void 0) runOpts.ecrRoleArn = options.ecrRoleArn;
24625
24760
  if (channels.profileCredsFile) runOpts.profileCredentialsFile = {
24626
24761
  hostPath: channels.profileCredsFile.hostPath,
@@ -24662,7 +24797,11 @@ function createLocalStartServiceCommand() {
24662
24797
  await runEcsServiceEmulator(targets, options, serviceStrategy(), cdkdExtraStateProviders);
24663
24798
  }));
24664
24799
  addStartServiceSpecificOptions(cmd);
24665
- warnEngineRoleExposure(cmd, "start-service", [ENGINE_ECS_SECRETS_CHANNEL, ENGINE_ACCOUNT_ID_CHANNEL]);
24800
+ warnEngineRoleExposure(cmd, "start-service", [
24801
+ ENGINE_ECS_SECRETS_CHANNEL,
24802
+ ENGINE_ACCOUNT_ID_CHANNEL,
24803
+ ENGINE_DYNAMIC_REFERENCE_CHANNEL
24804
+ ]);
24666
24805
  return adoptDeprecatedRegionFlag(addCommonEcsServiceOptions(cmd));
24667
24806
  }
24668
24807
 
@@ -25475,13 +25614,28 @@ function findFileAssetByObjectKey(fileAssets, hash) {
25475
25614
  for (const asset of fileAssets.values()) if (Object.values(asset.destinations).some((d) => d.objectKey === zip || d.objectKey.endsWith(`/${zip}`))) return asset;
25476
25615
  }
25477
25616
  async function buildContainerEnv(resolved, options, profileCredentials, profileCredsFile, stateProvider, loaded, imageContext) {
25617
+ const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
25618
+ try {
25619
+ return await buildContainerEnvWith(resolved, options, profileCredentials, profileCredsFile, stateProvider, loaded, imageContext, dynamicRefs);
25620
+ } finally {
25621
+ dynamicRefs.dispose();
25622
+ }
25623
+ }
25624
+ async function buildContainerEnvWith(resolved, options, profileCredentials, profileCredsFile, stateProvider, loaded, imageContext, dynamicRefs) {
25478
25625
  const logger = getLogger();
25479
- let templateEnv = resolved.environmentVariables;
25626
+ const overrides = readEnvOverridesFile$1(options.envVars);
25627
+ const cdkPath = readCdkPathOrUndefined(resolved.resource);
25628
+ const overriddenKeys = keysOverriddenBy(resolved.environmentVariables, (env) => resolveEnvVars(resolved.logicalId, cdkPath, env, overrides).resolved);
25629
+ let templateEnv = withoutKeys(resolved.environmentVariables, overriddenKeys);
25480
25630
  const sensitiveEnvKeys = /* @__PURE__ */ new Set();
25481
25631
  if (stateProvider && loaded) {
25482
25632
  const subContext = {
25483
25633
  resources: imageContext?.stateResources ?? loaded.resources,
25484
- consumerRegion: loaded.region
25634
+ consumerRegion: loaded.region,
25635
+ resolveDynamicReferences: (value, producerRegion) => dynamicRefs.resolveString(value, {
25636
+ region: producerRegion,
25637
+ consumer: `AgentCore Runtime ${resolved.logicalId} cross-stack env value`
25638
+ })
25485
25639
  };
25486
25640
  const pseudo = imageContext?.pseudoParameters ?? derivePseudoParametersFromRegion$1(loaded.region);
25487
25641
  if (pseudo) subContext.pseudoParameters = pseudo;
@@ -25495,14 +25649,21 @@ async function buildContainerEnv(resolved, options, profileCredentials, profileC
25495
25649
  for (const key of audit.sensitiveKeys) sensitiveEnvKeys.add(key);
25496
25650
  for (const { key, reason } of audit.unresolved) logger.warn(`${stateProvider.label}: could not substitute env var ${key} (${reason}). Override it via --env-vars or it will be dropped.`);
25497
25651
  }
25498
- const overrides = readEnvOverridesFile$1(options.envVars);
25499
- const cdkPath = readCdkPathOrUndefined(resolved.resource);
25500
25652
  const envResult = resolveEnvVars(resolved.logicalId, cdkPath, templateEnv, overrides);
25501
25653
  for (const key of envResult.unresolved) {
25502
25654
  const overrideKeyExample = cdkPath?.replace(/\/Resource$/, "") ?? resolved.logicalId;
25503
25655
  logger.warn(`Environment variable ${key} contains a CloudFormation intrinsic and was dropped. Override it with --env-vars (e.g. {"${overrideKeyExample}":{"${key}":"<literal>"}}), or pass a state-source flag (e.g. --from-cfn-stack) to recover deployed values.`);
25504
25656
  }
25505
- const dockerEnv = { ...envResult.resolved };
25657
+ const skipKeys = keysNotFromTemplate(templateEnv, envResult.resolved);
25658
+ for (const key of sensitiveEnvKeys) skipKeys.add(key);
25659
+ const dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
25660
+ region: firstUsableRegion(loaded?.region, options.stackRegion, resolved.stack.region, options.region),
25661
+ label: `AgentCore Runtime ${resolved.logicalId}`,
25662
+ skipKeys,
25663
+ resolver: dynamicRefs
25664
+ });
25665
+ for (const key of dynamic.resolvedKeys) sensitiveEnvKeys.add(key);
25666
+ const dockerEnv = { ...dynamic.env };
25506
25667
  const assumeRoleArn = resolveAssumeRoleArn(options, resolved, loaded);
25507
25668
  await applyAgentCoreCredentialEnv(dockerEnv, {
25508
25669
  ...assumeRoleArn !== void 0 && { assumeRoleArn },
@@ -25844,7 +26005,11 @@ function createLocalStartAgentCoreCommand$1() {
25844
26005
  cmd.addOption(new Option("--state-bucket <bucket>", "S3 bucket for --from-state. Falls back to CDKD_STATE_BUCKET env or cdk.json context.cdkd.stateBucket."));
25845
26006
  cmd.addOption(new Option("--state-prefix <prefix>", "S3 key prefix for --from-state state files.").default("cdkd"));
25846
26007
  cmd.addOption(new Option("--no-assume-role", "Explicitly opt out of assuming the deployed execution role: forward your ambient AWS credentials (or the --profile overlay) unchanged, and suppress the \"re-run with --assume-role\" hint that omitting the flag prints when deployed state is loaded."));
25847
- warnEngineRoleExposure(cmd, "start-agentcore", [engineCredentialTripleChannel("the agent container"), ENGINE_ACCOUNT_ID_CHANNEL]);
26008
+ warnEngineRoleExposure(cmd, "start-agentcore", [
26009
+ engineCredentialTripleChannel("the agent container"),
26010
+ ENGINE_ACCOUNT_ID_CHANNEL,
26011
+ ENGINE_DYNAMIC_REFERENCE_CHANNEL
26012
+ ]);
25848
26013
  return adoptDeprecatedRegionFlag(cmd);
25849
26014
  }
25850
26015
 
@@ -25890,7 +26055,8 @@ function createLocalStartAlbCommand() {
25890
26055
  warnEngineRoleExposure(cmd, "start-alb", [
25891
26056
  engineCredentialTripleChannel("the ALB's Lambda target-group containers"),
25892
26057
  ENGINE_ECS_SECRETS_CHANNEL,
25893
- ENGINE_ACCOUNT_ID_CHANNEL
26058
+ ENGINE_ACCOUNT_ID_CHANNEL,
26059
+ ENGINE_DYNAMIC_REFERENCE_CHANNEL
25894
26060
  ]);
25895
26061
  return adoptDeprecatedRegionFlag(addCommonEcsServiceOptions(cmd));
25896
26062
  }
@@ -25907,7 +26073,7 @@ function createLocalStartCloudFrontCommand$1() {
25907
26073
  cmd.addOption(new Option("--state-prefix <prefix>", "[not supported on start-cloudfront] S3 key prefix for --from-state state files. Refused at startup with --from-state.").default("cdkd"));
25908
26074
  cmd.addOption(new Option("--no-assume-role", "Explicitly opt out of assuming the deployed execution role: forward your ambient AWS credentials (or the --profile overlay) unchanged, and suppress the \"re-run with --assume-role\" hint that omitting the flag prints when deployed state is loaded."));
25909
26075
  refuseUnwiredCdkdStateFlags(cmd);
25910
- warnEngineRoleExposure(cmd, "start-cloudfront", [engineCredentialTripleChannel("the Function URL and Lambda@Edge containers")], engineFromCfnStackChannel("a deployed S3 origin's objects and KeyValueStore entries"));
26076
+ warnEngineRoleExposure(cmd, "start-cloudfront", [engineCredentialTripleChannel("the Function URL and Lambda@Edge containers"), ENGINE_DYNAMIC_REFERENCE_CHANNEL], engineFromCfnStackChannel("a deployed S3 origin's objects and KeyValueStore entries"));
25911
26077
  return adoptDeprecatedRegionFlag(cmd);
25912
26078
  }
25913
26079
  function refuseUnwiredCdkdStateFlags(cmd) {
@@ -26024,50 +26190,7 @@ async function localInvokeCommand(target, options) {
26024
26190
  const targetLabel = lambda.kind === "zip" ? lambda.runtime : "container image";
26025
26191
  logger.info(`Target: ${lambda.stack.stackName}/${lambda.logicalId} (${targetLabel})`);
26026
26192
  imagePlan = await resolveImagePlan(lambda, options);
26027
- let stateAudit;
26028
- let templateEnv = getTemplateEnv(lambda.resource);
26029
- let stateForRoleHint;
26030
- const stateProvider = createLocalStateProvider$1(options, lambda.stack.stackName, lambda.stack.region);
26031
- if (stateProvider) try {
26032
- const loaded = await stateProvider.load(lambda.stack.stackName, lambda.stack.region);
26033
- if (loaded) {
26034
- stateForRoleHint = {
26035
- version: 1,
26036
- stackName: lambda.stack.stackName,
26037
- resources: loaded.resources,
26038
- outputs: loaded.outputs,
26039
- lastModified: 0
26040
- };
26041
- const subContext = {
26042
- resources: loaded.resources,
26043
- consumerRegion: loaded.region
26044
- };
26045
- if (envHasIntrinsicValue(templateEnv)) {
26046
- const pseudo = await resolvePseudoParametersForInvoke(lambda.stack.region, options);
26047
- if (pseudo) subContext.pseudoParameters = pseudo;
26048
- }
26049
- if (envHasCrossStackIntrinsic(templateEnv)) {
26050
- const resolver = await stateProvider.buildCrossStackResolver(loaded.region);
26051
- if (resolver) subContext.crossStackResolver = resolver;
26052
- }
26053
- const { env, audit } = await substituteEnvVarsFromStateAsync(templateEnv, subContext);
26054
- templateEnv = env;
26055
- stateAudit = audit;
26056
- const label = stateProvider.label;
26057
- for (const key of audit.resolvedKeys) logger.debug(`${label}: substituted env var ${key}`);
26058
- for (const { key, reason } of audit.unresolved) logger.warn(`${label}: could not substitute env var ${key} (${reason}). Override it via --env-vars or it will be dropped.`);
26059
- }
26060
- } finally {
26061
- stateProvider.dispose();
26062
- }
26063
- const overrides = readEnvOverridesFile(options.envVars);
26064
- const lambdaCdkPath = readCdkPathOrUndefined(lambda.resource);
26065
- const envResult = resolveEnvVars(lambda.logicalId, lambdaCdkPath, templateEnv, overrides);
26066
- for (const key of envResult.unresolved) {
26067
- if (stateAudit && stateAudit.unresolved.some((u) => u.key === key)) continue;
26068
- const overrideKeyExample = lambdaCdkPath?.replace(/\/Resource$/, "") ?? lambda.logicalId;
26069
- logger.warn(`Environment variable ${key} contains a CloudFormation intrinsic and was dropped. Override it with --env-vars (e.g. {"${overrideKeyExample}":{"${key}":"<literal>"}}), or pass --from-state (cdkd-deployed) / --from-cfn-stack (cdk-deployed) to recover deployed values.`);
26070
- }
26193
+ const { env: templateEnvResolved, sensitiveEnvKeys, stateForRoleHint } = await resolveInvokeTemplateEnv(lambda, options);
26071
26194
  let resolvedAssumeRoleArn;
26072
26195
  if (typeof options.assumeRole === "string") resolvedAssumeRoleArn = explicitRoleArnOrThrow("--assume-role", options.assumeRole);
26073
26196
  else if (options.assumeRole === true) {
@@ -26082,7 +26205,7 @@ async function localInvokeCommand(target, options) {
26082
26205
  AWS_LAMBDA_FUNCTION_VERSION: "$LATEST",
26083
26206
  AWS_LAMBDA_LOG_GROUP_NAME: `/aws/lambda/${lambda.logicalId}`,
26084
26207
  AWS_LAMBDA_LOG_STREAM_NAME: "local",
26085
- ...envResult.resolved
26208
+ ...templateEnvResolved
26086
26209
  };
26087
26210
  await applyLambdaCredentialEnv(dockerEnv, {
26088
26211
  ...resolvedAssumeRoleArn && { assumeRoleArn: resolvedAssumeRoleArn },
@@ -26112,6 +26235,7 @@ async function localInvokeCommand(target, options) {
26112
26235
  mounts: imagePlan.mounts,
26113
26236
  extraMounts: extraMountsWithProfile,
26114
26237
  env: dockerEnv,
26238
+ ...sensitiveEnvKeys.size > 0 && { sensitiveEnvKeys },
26115
26239
  ...hostGatewayExtraHosts.length > 0 && { extraHosts: hostGatewayExtraHosts },
26116
26240
  cmd: imagePlan.cmd,
26117
26241
  hostPort,
@@ -26139,6 +26263,82 @@ async function localInvokeCommand(target, options) {
26139
26263
  if (sigintHandler) process.off("SIGINT", sigintHandler);
26140
26264
  }
26141
26265
  }
26266
+ async function resolveInvokeTemplateEnv(lambda, options) {
26267
+ const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
26268
+ try {
26269
+ return await resolveInvokeTemplateEnvWith(lambda, options, dynamicRefs);
26270
+ } finally {
26271
+ dynamicRefs.dispose();
26272
+ }
26273
+ }
26274
+ async function resolveInvokeTemplateEnvWith(lambda, options, dynamicRefs) {
26275
+ const logger = getLogger();
26276
+ let stateAudit;
26277
+ let stateForRoleHint;
26278
+ let ownerRegion;
26279
+ const declaredEnv = getTemplateEnv(lambda.resource);
26280
+ const overrides = readEnvOverridesFile(options.envVars);
26281
+ const lambdaCdkPath = readCdkPathOrUndefined(lambda.resource);
26282
+ const overriddenKeys = keysOverriddenBy(declaredEnv, (env) => resolveEnvVars(lambda.logicalId, lambdaCdkPath, env, overrides).resolved);
26283
+ let templateEnv = declaredEnv && withoutKeys(declaredEnv, overriddenKeys);
26284
+ const stateProvider = createLocalStateProvider$1(options, lambda.stack.stackName, lambda.stack.region);
26285
+ if (stateProvider) try {
26286
+ const loaded = await stateProvider.load(lambda.stack.stackName, lambda.stack.region);
26287
+ if (loaded) {
26288
+ ownerRegion = loaded.region;
26289
+ stateForRoleHint = {
26290
+ version: 1,
26291
+ stackName: lambda.stack.stackName,
26292
+ resources: loaded.resources,
26293
+ outputs: loaded.outputs,
26294
+ lastModified: 0
26295
+ };
26296
+ const subContext = {
26297
+ resources: loaded.resources,
26298
+ consumerRegion: loaded.region,
26299
+ resolveDynamicReferences: (value, producerRegion) => dynamicRefs.resolveString(value, {
26300
+ region: producerRegion,
26301
+ consumer: `Lambda ${lambda.logicalId} cross-stack env value`
26302
+ })
26303
+ };
26304
+ if (envHasIntrinsicValue(templateEnv)) {
26305
+ const pseudo = await resolvePseudoParametersForInvoke(lambda.stack.region, options);
26306
+ if (pseudo) subContext.pseudoParameters = pseudo;
26307
+ }
26308
+ if (envHasCrossStackIntrinsic(templateEnv)) {
26309
+ const resolver = await stateProvider.buildCrossStackResolver(loaded.region);
26310
+ if (resolver) subContext.crossStackResolver = resolver;
26311
+ }
26312
+ const { env, audit } = await substituteEnvVarsFromStateAsync(templateEnv, subContext);
26313
+ templateEnv = env;
26314
+ stateAudit = audit;
26315
+ const label = stateProvider.label;
26316
+ for (const key of audit.resolvedKeys) logger.debug(`${label}: substituted env var ${key}`);
26317
+ for (const { key, reason } of audit.unresolved) logger.warn(`${label}: could not substitute env var ${key} (${reason}). Override it via --env-vars or it will be dropped.`);
26318
+ }
26319
+ } finally {
26320
+ stateProvider.dispose();
26321
+ }
26322
+ const envResult = resolveEnvVars(lambda.logicalId, lambdaCdkPath, templateEnv, overrides);
26323
+ for (const key of envResult.unresolved) {
26324
+ if (stateAudit && stateAudit.unresolved.some((u) => u.key === key)) continue;
26325
+ const overrideKeyExample = lambdaCdkPath?.replace(/\/Resource$/, "") ?? lambda.logicalId;
26326
+ logger.warn(`Environment variable ${key} contains a CloudFormation intrinsic and was dropped. Override it with --env-vars (e.g. {"${overrideKeyExample}":{"${key}":"<literal>"}}), or pass --from-state (cdkd-deployed) / --from-cfn-stack (cdk-deployed) to recover deployed values.`);
26327
+ }
26328
+ const plaintextKeys = new Set(stateAudit?.sensitiveKeys ?? []);
26329
+ for (const key of keysNotFromTemplate(templateEnv, envResult.resolved)) plaintextKeys.add(key);
26330
+ const dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
26331
+ region: firstUsableRegion(ownerRegion, options.stackRegion, lambda.stack.region, options.region),
26332
+ label: `Lambda ${lambda.logicalId}`,
26333
+ skipKeys: plaintextKeys,
26334
+ resolver: dynamicRefs
26335
+ });
26336
+ return {
26337
+ env: dynamic.env,
26338
+ sensitiveEnvKeys: /* @__PURE__ */ new Set([...stateAudit?.sensitiveKeys ?? [], ...dynamic.resolvedKeys]),
26339
+ ...stateForRoleHint !== void 0 && { stateForRoleHint }
26340
+ };
26341
+ }
26142
26342
  async function resolveImagePlan(lambda, options) {
26143
26343
  if (lambda.kind === "zip") return resolveZipImagePlan(lambda, options);
26144
26344
  return resolveContainerImagePlan(lambda, options);
@@ -26612,4 +26812,4 @@ function collectVerbFlags(program) {
26612
26812
 
26613
26813
  //#endregion
26614
26814
  export { canonicalizeIpProtocolValue as a, buildProgram, resolveSecretDerivedPrincipals as i, runDestroyForStack as n, resolvedResourceTimeoutMs as o, isResolvableSecretPrincipalList as r, canonicalizeIpv4Cidr as t };
26615
- //# sourceMappingURL=program-CiMVZi4n.js.map
26815
+ //# sourceMappingURL=program-DFehMfoh.js.map