@go-to-k/cdkd 0.296.2 → 0.296.4
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-DedWRf1j.js → asg-provider-BSdCtfW_.js} +2 -2
- package/dist/{asg-provider-DedWRf1j.js.map → asg-provider-BSdCtfW_.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-C_Eg-RHm.js → deploy-engine-HCnNEpdp.js} +107 -65
- package/dist/deploy-engine-HCnNEpdp.js.map +1 -0
- package/dist/{iam-role-provider-COoTgydF.js → iam-role-provider-Be0s-qBx.js} +2 -2
- package/dist/{iam-role-provider-COoTgydF.js.map → iam-role-provider-Be0s-qBx.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/{neptune-provider-D2SmeISr.js → neptune-provider-ChV-yRZP.js} +2 -2
- package/dist/{neptune-provider-D2SmeISr.js.map → neptune-provider-ChV-yRZP.js.map} +1 -1
- package/dist/{program-CiMVZi4n.js → program-CwSdIG3b.js} +302 -87
- package/dist/program-CwSdIG3b.js.map +1 -0
- package/dist/{provider-classes-CtsCylnp.js → provider-classes-DXBYMcmp.js} +139 -24
- package/dist/provider-classes-DXBYMcmp.js.map +1 -0
- package/dist/{rds-provider-DQwvPJXB.js → rds-provider-DzPUon_U.js} +2 -2
- package/dist/{rds-provider-DQwvPJXB.js.map → rds-provider-DzPUon_U.js.map} +1 -1
- package/dist/{version-WJhcQQ3m.js → version-D557_3cB.js} +2 -2
- package/dist/{version-WJhcQQ3m.js.map → version-D557_3cB.js.map} +1 -1
- package/package.json +2 -2
- package/dist/deploy-engine-C_Eg-RHm.js.map +0 -1
- package/dist/program-CiMVZi4n.js.map +0 -1
- package/dist/provider-classes-CtsCylnp.js.map +0 -1
|
@@ -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-
|
|
5
|
+
import { $ as namesAnyDeclaredParameter, $a as markSameGenerationBag, $i as unreadableOrphanRecords, $o as readBootstrapMarkerBody, $r as hasReadableResources, $s as defineOwnKey, $t as DeploymentEventsReader, Aa as describeTypeWithThrottleRetry, Ai as refuseMalformedOutputsForDestroy, Ao as hasReasonlessBaselineRefusal, Ar as getAccountInfo, As as resolveAutoAssetStorage, At as isReplacementOrphan, Ba as carryLogOnlyValues, Bi as refuseMalformedResourcePropertiesForExport, Bn as isCustomResourceType$1, Bo as stringifyValue, Bs as CFN_TEMPLATE_URL_LIMIT, Bt as buildFinalSnapshotIdentifier, C as perType, Cn as ledgerForStack, Co as S3StateBackend, Cs as getDockerImageBySourceHash, Di as refuseMalformedOrphansForDestroy, Do as describeRegionValueKind, Dr as coerceParameterTypedValue, Ds as getLegacyStateBucketName, Dt as recordAfterRollbackUpdate, Ei as refuseMalformedOrphans, Eo as acceptedCreateOnlyDropsOf, Es as getDefaultStateBucketName, Et as withStackRecords, Fa as DagBuilder, Fi as refuseMalformedResourceEntriesForImport, Fo as orphansAfterRollback, Fr as keepsSecretReferenceToken, Fs as resolveUseCdkBootstrapAssets, Ft as findNestedStackTypeChanges, G as cyan, Ga as printingCorpusOf, Gi as refuseMalformedState, Gn as ccProtectionRegistryTypes, Go as rewriteTemplateAssetReferences, Gr as STATE_REGION_DIVERGED, Gs as decodeListingKey, Gt as refusesFinalSnapshot, H as formatResourceLine, Ha as hasMaskableValues, Hi as refuseMalformedResourcesForDeploy, Hn as withPrintingSecrets, Ho as buildAssetRedirectMap, Hr as parameterInputsFor, Hs as findLargeInlineResources, Ht as createPreDeleteFinalSnapshot, Ia as TemplateParser, Ii as refuseMalformedResourceEntriesForImportSave, In as CC_BROKEN_REASON, Io as orphansCarriedFrom, Ir as AWS_NO_VALUE, Is as stateBucketExistenceConfirmed, J as red, Ja as shareLogOnlyValues, Ji as repairMalformedOutputsForReadOnly, Jn as deleteIndeterminateGuards, Jo as assertAssetBucketRegion, Jr as UNREADABLE_RESOURCES_MAP_ROW, Js as canonicalizeRegion, K as gray, Ka as recordLogOnlyParameterValue, Ki as repairMalformedOrphanRecordsForReadOnly, Ko as AssetModeResolver, Kr as STATE_RESOURCES_MALFORMED, Ks as expectedOwnerParam, Kt as unsupportedFinalSnapshotError, La as liveMatchesUnresolvedTokenFrame, Li as refuseMalformedResourceEntriesForOrphan, Ln as ProviderRegistry, Lo as shouldRetainResource, Lr as cfnRefValueFromPhysicalId, Ls as warnDeprecatedNoPrefixCliFlag, Lt as inheritProducerRegions, Mi as refuseMalformedResourceEntries, Mo as importableOutputKeys, Mr as carriesDynamicReference, Ms as resolveSkipPrefix, Mt as planRollback, Ni as refuseMalformedResourceEntriesForDeploy, No as importableOutputs, Nr as carriesFetchableDynamicReference, Ns as resolveStateBucketWithDefault, Nt as replacementNeverSwapped, Oa as prefetchCreateOnlyPropertyPaths, Oi as refuseMalformedOrphansForOrphan, Oo as exportNamesCarriedFrom, Or as isUnboundTemplateParameter, Os as loadCdkJson, Ot as demoteSupersededOrphans, Pi as refuseMalformedResourceEntriesForDestroy, Po as isReadableBag, Pr as isNamelessDynamicReferenceError, Ps as resolveStateBucketWithDefaultAndSource, Pt as resolveReplacementOldType, Q as computeParameterTaint, Qa as maskSecretsInText, Qi as unpreviewableOrphanRecords, Qo as parseBootstrapMarker, Qr as hasReadableOutputs, Qs as processStackMessages, Qt as updatePartialReason, Ra as inheritNestedStackParameterAssociations, Ri as refuseMalformedResourcePropertiesForDestroy, Rn as ccBrokenReason, Ro as AssetPublisher, Rr as isStalePlaceholderArnAttribute, Rs as ssmResolvedValueType, Rt as ATOMIC_FINAL_SNAPSHOT_TYPES, S as isProtectionValueActive, Si as refuseDivergentRecordRegionForDestroy, So as isLockInfoExpired, Ss as AssetManifestLoader, St as replayRollback, Ti as refuseMalformedOrphanRecordsForDestroy, Tn as withCreateTokenLedger, To as splitImportedOps, Ts as synthesisStatusMessage, U as createReadOnlyAttributeHealerFactory, Ua as literalSplitDelimitersOf, Ui as refuseMalformedResourcesForDestroy, Un as CloudControlProvider, Uo as createAssetRedirectResolver, Us as uploadCfnTemplate, Ut as effectiveDeletionPolicy, Va as createUnionSecretMasker, Vi as refuseMalformedResourcePropertiesForOrphan, Vo as WorkGraph, Vr as withSharedDrainBudget, Vs as MIGRATE_TMP_PREFIX, Vt as ccRoutedFinalSnapshotError, W as bold, Wa as logOnlyValueCount, Wi as refuseMalformedResourcesForExport, Wn as slowCcOperationTimeoutMs, Wo as loadPublishableAssetManifest, Wr as JSON_LISTING_HOLE_VALUE, Ws as CUSTOM_RESOURCE_RESPONSE_OBJECT_DESCRIPTION, Wt as isFinalSnapshotError, X as secretNamePrintingBag, Xa as errorCauseChain, Xi as repairMalformedResourcePropertiesForReadOnly, Xo as getBootstrapMarkerKey, Xr as displayLogicalId, Xs as AssemblyReader, Y as yellow, Ya as createSecretMasker, Yi as repairMalformedResourceEntriesForReadOnly, Yn as deleteSkipReason, Yo as ensureAssetStorage, Yr as deployRefusesOrphanRowsReason, Ys as derivePartitionAndUrlSuffix, Z as stateSecretNameNeedles, Za as maskSecretsInError, Zi as repairMalformedResourcesForReadOnly, Zn as isWaitAbandonedError, Zo as isCrossRegionRedirect, Zr as hasReadableOrphans, Zs as StageLoadError, Zt as updatePartialMessage, _ as makeCanonicalizePropertiesFn, _i as malformedResourcePropertiesWarning, _n as maskingRetryLogger, _o as STATE_SOURCED_READBACK_RULES, _r as AWS_CREDENTIAL_ENV_KEYS, _s as runDockerForeground, _t as revertedNestedRowIds, a as findNestedTemplateTreeDefect, aa as NO_CC_HANDLERS_REASON, ac as describeFileReadFailure, ai as malformedLocalOutputsWarning, an as secretBearing, ao as isUncertifiedBaselineMaskPosition, ar as DiffCalculator, as as describeDockerCapturedOutput, at as loadJournaledOrphans, b as recordedProtectionNote, bi as malformedStateRefusalMessage, bn as formatDestructiveChange, bo as isSingleDynamicReferenceToken, br as envCredentialsAreAssumedRole, bs as escapeRegExp, bt as withNestedStackContext, c as renderNestedTemplateTreeDefect, ca as shownType, cc as resolveAssemblyPath, ci as malformedOrphanRecordsRefusalMessage, cn as exportNameSecretExposure, co as carriesSecretMask, cr as classifyReplaySecretRegion, cs as dockerSpawnEnvWithSensitive, ct as planOrphanAdoption, d as conditionInputsFrom, da as isStatefulRecreateTargetSync, di as malformedOrphansRefusalMessage, dn as collectDeclaredOutputNames, do as recordMaskOnlyValuesIn, dr as applyRoleArnIfSet, ds as getDockerCmd, dt as displacedPhysicalIdShown, ea as unreadableResourceEntries, ec as hasOwnKey, ei as isReadableOrphanRecord, en as DeploymentEventsStore, eo as redactSecretsForState, es as validateAssetBucketName, et as reachableDivergentParameters, f as parentSuppliedValues, fa as renderStatefulReason, fi as malformedOrphansWarning, fn as collectPublishedOutputNames, fo as recordNoEchoAttributeValues, fr as assertFlagRoleArn, fs as isDockerClientEnvKey, ft as dropSettledNestedJournals, g as mergeNoChangeOutputs, gi as malformedResourceEntriesWarning, gn as DEFAULT_RESOURCE_WARN_AFTER_MS, go as STATE_SOURCED_CROSS_GENERATION_RULES, gr as sendableAssumeRoleCommand, gs as redactedDockerCause, h as keptWholeReasonText, hi as malformedRenderedContainersWarning, hn as DEFAULT_RESOURCE_TIMEOUT_MS, ho as STATE_SOURCED_BASELINE_RULES, hr as isIamRoleArn, hs as redactDockerArgvValues, ht as recordDisplacedSkips, i as childTemplateLoader, ic as absoluteAssemblyPathEscape, ii as malformedExportSourceWarning, in as exportAliasCollisionScrubWarning, io as dynamicReferenceTokens, is as resolveDockerContextDirectory, it as journaledOrphanLines, ja as withRetry, ji as refuseMalformedResourceAttributesForOrphan, jo as hasUnverifiableParameterRefusal, jr as isImpossibleEmptyStoredAttribute, js as resolveCaptureObservedState, jt as planFailedOps, ka as templateResourceTypes, ki as refuseMalformedOutputs, ko as hasReadableExportSet, kr as parameterTypeMayLoseSecretIdentity, ks as resolveApp, kt as isJournaledOrphan, l as templateIdentity, la as MULTI_REGION_RECREATE_BLOCKED_TYPES, li as malformedOrphanRecordsWarning, ln as isWholeDynamicReferenceValue, lo as provenPublicValue, lr as producerRegionsFromState, ls as finchSecretArgvRefusal, lt as NESTED_PENDING_PARENT_REASON, m as isSecretBearingReferenceString, mi as malformedOutputsWarning, mn as bindingSkippedOutputs, mo as wholeStringLeavesOf, mr as explicitRoleArnOrThrow, ms as partitionSensitiveEnv, mt as nestedChildStackName$1, n as IMPLICIT_DELETE_DEPENDENCIES, nc as nullPrototypeRecord, ni as malformedDriftResourcePropertiesWarning, nn as WITHHELD_NAME_DISPLAY, ns as buildDenyExternalAccessPolicy, nt as deleteJournaledOrphans, o as isAbsoluteAssetPath, oa as hasNoCloudControlHandlers, oc as displayAssemblyPath, oi as malformedLocalResourceEntriesWarning, on as secretBearingStateKeyWarning, oo as pathCrossesDottedKey, or as INTRINSIC_KEYS, os as describeDockerExecFailure, ot as sameJournaledOrphans, p as readRecordedConditionVerdicts, pi as malformedOutputsRefusalMessage, pn as isExportAliasCollision, po as recordProvenPublicExpression, pr as assertSendableRoleArn, ps as isMalformedEnvKey, q as green, qa as recordLogOnlyValue, qi as repairMalformedOrphansForReadOnly, qn as UNSPECIFIED_SKIP_REASON, qo as BOOTSTRAP_MARKER_PREFIX, qr as UNREADABLE_ORPHANS_CONTAINER_ROW, qs as PARTITION_TABLE, r as computeImplicitDeleteEdges, ra as unwrittenCreateOnlyReplacement, rc as ownValue, ri as malformedExportNamesWarning, rn as displayTextOrWithheld, ro as DYNAMIC_REFERENCE_TOKEN_SCAN, rs as buildDockerImage, rt as isHandledOrphan, s as listNestedTemplateRows, sa as findReplacedReadersOfRecreateTargets, sc as renderAssemblyPathEscape, si as malformedLocalResourcesWarning, sn as secretSafeKeyDisplay, so as identityKeyFor, sr as IntrinsicFunctionResolver, ss as describeDockerFailure, st as makeSiblingClaimReader, t as DeployEngine, ta as findActionableSilentDrops, tc as hasPlainPrototype, ti as isReadableResourceEntry, tn as extractDeploymentEventError, to as scrubResourceRecord, ts as validateContainerRepoName, tt as resourcesNamingDeclaredParameter, u as conditionFingerprint, ua as isStatefulRecreateTargetForReplace, uc as resolveBucketRegion, ui as malformedOrphanRowsKeptWarning, un as noEchoParameterValueSeed, uo as recordMaskOnlyValue, ur as regionLessSecretName, us as formatDockerLoginError, ut as displacedOpClause, v as withResourceDeadline, vi as malformedResourcesWarning, vn as constructPathOf, vo as TEMPLATE_SOURCED_RULES, vr as applyCallerIdentityCredentials, vs as runDockerStreaming, vt as withNestedRevertRun, w as readProtection, wi as refuseMalformedOrphanRecords, wo as rebuildClientForBucketRegion, ws as Synthesizer, wt as destroyStackRecordsView, x as PROTECTION_PROPERTY_BY_TYPE, xi as previewableOrphanRecords, xn as RollbackInlinePolicyWriters, xo as LockManager, xs as stripControlChars, xt as replayFailedOperations, y as recordedProtectionEvidence, yi as malformedScrubResourceEntriesRefusalMessage, yn as findDestructiveChanges, yo as WHOLE_DYNAMIC_REFERENCE_PATTERN, yr as callerEnvCredentials, ys as warnFinchArgvExposure, za as recordNestedStackParameterExpressions, zi as refuseMalformedResourcePropertiesForDrift, zn as wouldReturnToSdkProvider, zo as isSensitiveAttributeName, zr as refStateLookupFromResource, zs as CFN_TEMPLATE_BODY_LIMIT, zt as PRE_DELETE_SNAPSHOT_TYPES } from "./deploy-engine-HCnNEpdp.js";
|
|
6
|
+
import { t as getCdkdVersion } from "./version-D557_3cB.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-
|
|
2417
|
+
providerClasses ??= import("./provider-classes-DXBYMcmp.js");
|
|
2418
2418
|
return providerClasses;
|
|
2419
2419
|
}
|
|
2420
2420
|
function registerAllProviders(registry, classes) {
|
|
@@ -4482,6 +4482,7 @@ async function computeStackDiff(currentState, template, region, stackName, state
|
|
|
4482
4482
|
}
|
|
4483
4483
|
const diffSecrets = /* @__PURE__ */ new Map();
|
|
4484
4484
|
const splitPieces = /* @__PURE__ */ new Map();
|
|
4485
|
+
const derivedNames = /* @__PURE__ */ new Map();
|
|
4485
4486
|
const splitDelimiters = literalSplitDelimitersOf(template, new Set(Object.entries(template.Parameters ?? {}).filter(([, definition]) => definition?.NoEcho === true).map(([name]) => name)));
|
|
4486
4487
|
for (const [name, definition] of Object.entries(template.Parameters ?? {})) if (definition?.NoEcho === true && mergedParameters !== void 0 && Object.prototype.hasOwnProperty.call(mergedParameters, name) && !isWholeDynamicReferenceValue(mergedParameters[name])) {
|
|
4487
4488
|
recordLogOnlyParameterValue(diffSecrets, mergedParameters[name]);
|
|
@@ -4492,11 +4493,13 @@ async function computeStackDiff(currentState, template, region, stackName, state
|
|
|
4492
4493
|
diffSecrets,
|
|
4493
4494
|
inheritedForResolver,
|
|
4494
4495
|
outputsPassSecrets
|
|
4495
|
-
], [splitPieces]);
|
|
4496
|
+
], [splitPieces, derivedNames]);
|
|
4496
4497
|
const maskForLog = printing.mask;
|
|
4497
4498
|
const resolveRecordingInto = (bag, printingSecrets) => (value) => intrinsicResolver.resolve(value, {
|
|
4498
4499
|
recordedSecretValues: bag,
|
|
4499
4500
|
...printingSecrets && { printingSecrets },
|
|
4501
|
+
secretNameNeedles: stateSecretNameNeedles(currentState.resources, diffSecrets),
|
|
4502
|
+
secretNameSink: derivedNames,
|
|
4500
4503
|
...inheritedForResolver && { inheritedSecrets: inheritedForResolver },
|
|
4501
4504
|
template: effectiveTemplate,
|
|
4502
4505
|
resources: currentState.resources,
|
|
@@ -4570,6 +4573,8 @@ async function computeStackDiff(currentState, template, region, stackName, state
|
|
|
4570
4573
|
return {
|
|
4571
4574
|
value: await intrinsicResolver.resolve(structuredClone(node), {
|
|
4572
4575
|
recordedSecretValues: secrets,
|
|
4576
|
+
secretNameNeedles: stateSecretNameNeedles(resourcesForInputs, diffSecrets),
|
|
4577
|
+
secretNameSink: derivedNames,
|
|
4573
4578
|
template: effectiveTemplate,
|
|
4574
4579
|
resources: resourcesForInputs,
|
|
4575
4580
|
stateBackend,
|
|
@@ -4636,7 +4641,7 @@ async function computeStackDiff(currentState, template, region, stackName, state
|
|
|
4636
4641
|
let shownOutputChanges = outputChanges;
|
|
4637
4642
|
let shownBlocking = blocking;
|
|
4638
4643
|
let shownDeployRefusals = deployRefusals;
|
|
4639
|
-
if (hasMaskableValues(
|
|
4644
|
+
if (hasMaskableValues(printing.maskCorpus())) {
|
|
4640
4645
|
const mask = printing.mask;
|
|
4641
4646
|
const maskReason = (reason) => mask(stripControlChars(mask(reason)));
|
|
4642
4647
|
shownBlocking = blocking.map(maskReason);
|
|
@@ -4824,6 +4829,8 @@ async function resolveChildStackParameters(parentStackRow, parentTemplate, paren
|
|
|
4824
4829
|
const resolvedValue = await resolver.resolve(value, {
|
|
4825
4830
|
template: parentTemplate,
|
|
4826
4831
|
resources: parentState.resources,
|
|
4832
|
+
secretNameNeedles: stateSecretNameNeedles(parentState.resources),
|
|
4833
|
+
secretNameSink: /* @__PURE__ */ new Map(),
|
|
4827
4834
|
stateBackend,
|
|
4828
4835
|
stackName: parentStackName,
|
|
4829
4836
|
bestEffort: true,
|
|
@@ -7193,9 +7200,13 @@ async function scrubStack(stack, region, stateBackend, lockManager, opts) {
|
|
|
7193
7200
|
parameters = await bindDefaultedParametersOneByOne(resolver, stack.template, shownStack, logger);
|
|
7194
7201
|
}
|
|
7195
7202
|
const resolverStateBackend = memoizeCrossStackStateReads(stateBackend);
|
|
7203
|
+
const secretNameSink = /* @__PURE__ */ new Map();
|
|
7204
|
+
const secretNameNeedles = stateSecretNameNeedles(state.resources);
|
|
7196
7205
|
const resolverContext = (recordedSecretValues) => ({
|
|
7197
7206
|
template: stack.template,
|
|
7198
7207
|
resources: state.resources,
|
|
7208
|
+
secretNameNeedles,
|
|
7209
|
+
secretNameSink,
|
|
7199
7210
|
...Object.keys(parameters).length > 0 && { parameters },
|
|
7200
7211
|
...Object.keys(conditions).length > 0 && { conditions },
|
|
7201
7212
|
stackName: stack.stackName,
|
|
@@ -8534,10 +8545,10 @@ function createIamPrincipalUniqueIdResolver(awsClients) {
|
|
|
8534
8545
|
return uniqueId;
|
|
8535
8546
|
};
|
|
8536
8547
|
}
|
|
8537
|
-
function containsDynamicReference(value) {
|
|
8548
|
+
function containsDynamicReference$1(value) {
|
|
8538
8549
|
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);
|
|
8550
|
+
if (Array.isArray(value)) return value.some(containsDynamicReference$1);
|
|
8551
|
+
if (value !== null && typeof value === "object") return Object.values(value).some(containsDynamicReference$1);
|
|
8541
8552
|
return false;
|
|
8542
8553
|
}
|
|
8543
8554
|
const MIN_SECRET_NEEDLE_LENGTH = 4;
|
|
@@ -8712,7 +8723,7 @@ async function resolveDriftLeafByRegion(leaf, propertyPath, logicalId, consumerR
|
|
|
8712
8723
|
return out + leaf.slice(cursor);
|
|
8713
8724
|
}
|
|
8714
8725
|
async function resolveStateSecretExpressions(props, resolvers, secrets, options) {
|
|
8715
|
-
if (!containsDynamicReference(props)) return props;
|
|
8726
|
+
if (!containsDynamicReference$1(props)) return props;
|
|
8716
8727
|
const { secretPaths, onUnresolved, producerRegions, logicalId, consumerRegion } = options;
|
|
8717
8728
|
const ctx = {
|
|
8718
8729
|
template: { Resources: {} },
|
|
@@ -9711,7 +9722,7 @@ async function runRevert(reports, regionScope, stateBackend, stateConfig, awsCli
|
|
|
9711
9722
|
try {
|
|
9712
9723
|
const revertSecretResolvers = new DriftSecretResolvers(report.region);
|
|
9713
9724
|
const revertProducerRegions = report.producerRegions;
|
|
9714
|
-
await runWithConcurrency(driftedOutcomes.map((outcome) => async () => {
|
|
9725
|
+
await runWithConcurrency(driftedOutcomes.map((outcome) => () => withPrintingSecrets(secretNamePrintingBag(outcome.logicalId, report.state.resources), async () => {
|
|
9715
9726
|
const stateResource = report.state.resources[outcome.logicalId];
|
|
9716
9727
|
if (!stateResource) {
|
|
9717
9728
|
totalFailed++;
|
|
@@ -9827,7 +9838,7 @@ async function runRevert(reports, regionScope, stateBackend, stateConfig, awsCli
|
|
|
9827
9838
|
const msg = maskSecretsInText(err instanceof Error ? err.message : String(err), secrets);
|
|
9828
9839
|
logger.error(` ✗ ${report.stackName}/${outcome.logicalId} (${outcome.resourceType}): AWS update failed — ${msg}`);
|
|
9829
9840
|
}
|
|
9830
|
-
}), concurrency);
|
|
9841
|
+
})), concurrency);
|
|
9831
9842
|
if (narrowedByLogicalId.size > 0 || reRecordedByLogicalId.size > 0) {
|
|
9832
9843
|
const resources = { ...report.state.resources };
|
|
9833
9844
|
let recordedCount = 0;
|
|
@@ -10683,7 +10694,7 @@ async function runDestroyForStack(stackName, state, ctx) {
|
|
|
10683
10694
|
if (!level) continue;
|
|
10684
10695
|
logger.debug(`Deletion level ${executionLevels.length - levelIndex}/${executionLevels.length} (${level.length} resources)`);
|
|
10685
10696
|
const stackRegion = state.region ?? ctx.baseRegion;
|
|
10686
|
-
const deletePromises = level.map(
|
|
10697
|
+
const deletePromises = level.map((logicalId) => withPrintingSecrets(secretNamePrintingBag(logicalId, state.resources), async () => {
|
|
10687
10698
|
if (lock.interrupted) return;
|
|
10688
10699
|
const resource = state.resources[logicalId];
|
|
10689
10700
|
if (!resource) {
|
|
@@ -10890,7 +10901,7 @@ async function runDestroyForStack(stackName, state, ctx) {
|
|
|
10890
10901
|
} finally {
|
|
10891
10902
|
renderer.removeTask(logicalId);
|
|
10892
10903
|
}
|
|
10893
|
-
});
|
|
10904
|
+
}));
|
|
10894
10905
|
await Promise.all(deletePromises);
|
|
10895
10906
|
}
|
|
10896
10907
|
result.interrupted = lock.interrupted;
|
|
@@ -14895,6 +14906,8 @@ async function buildResolvedParametersPerStack(args) {
|
|
|
14895
14906
|
const parentResolverContext = {
|
|
14896
14907
|
template: parentNode.template,
|
|
14897
14908
|
resources: parentNode.state.resources,
|
|
14909
|
+
secretNameNeedles: stateSecretNameNeedles(parentNode.state.resources),
|
|
14910
|
+
secretNameSink: /* @__PURE__ */ new Map(),
|
|
14898
14911
|
parameters: parentParamValues,
|
|
14899
14912
|
stackName: parentNode.cdkdName,
|
|
14900
14913
|
...args.stateBackend && { stateBackend: args.stateBackend }
|
|
@@ -19073,6 +19086,8 @@ async function resolveImportedProperties(stackState, template, region, stateBack
|
|
|
19073
19086
|
const baseContext = {
|
|
19074
19087
|
template,
|
|
19075
19088
|
resources: stackState.resources,
|
|
19089
|
+
secretNameNeedles: stateSecretNameNeedles(stackState.resources),
|
|
19090
|
+
secretNameSink: /* @__PURE__ */ new Map(),
|
|
19076
19091
|
...Object.keys(parameters).length > 0 && { parameters },
|
|
19077
19092
|
...Object.keys(conditions).length > 0 && { conditions },
|
|
19078
19093
|
stateBackend,
|
|
@@ -19840,6 +19855,10 @@ const ENGINE_ECS_SECRETS_CHANNEL = {
|
|
|
19840
19855
|
what: "ECS task secrets are fetched with the role and injected as plaintext into the container's environment",
|
|
19841
19856
|
flagOnly: false
|
|
19842
19857
|
};
|
|
19858
|
+
const ENGINE_DYNAMIC_REFERENCE_CHANNEL = {
|
|
19859
|
+
what: "CloudFormation dynamic references ({{resolve:...}}) are fetched with the role and injected as plaintext into the container's environment",
|
|
19860
|
+
flagOnly: false
|
|
19861
|
+
};
|
|
19843
19862
|
const ENGINE_ASSUME_ROLE_CHANNEL = {
|
|
19844
19863
|
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
19864
|
flagOnly: false
|
|
@@ -20946,6 +20965,7 @@ function checkVolumeHostPath(hostPath) {
|
|
|
20946
20965
|
}
|
|
20947
20966
|
async function applyCrossStackResolverToTask(task, context) {
|
|
20948
20967
|
if (!context.crossStackResolver) return;
|
|
20968
|
+
const { resolveDynamicReferences: _envOnly, ...secretContext } = context;
|
|
20949
20969
|
const rawContainers = (task.resource.Properties ?? {})["ContainerDefinitions"];
|
|
20950
20970
|
if (!Array.isArray(rawContainers)) return;
|
|
20951
20971
|
for (let idx = 0; idx < task.containers.length; idx += 1) {
|
|
@@ -20965,10 +20985,21 @@ async function applyCrossStackResolverToTask(task, context) {
|
|
|
20965
20985
|
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") continue;
|
|
20966
20986
|
if (Object.hasOwn(container.environment, key)) continue;
|
|
20967
20987
|
if (!isCrossStackIntrinsic(value)) continue;
|
|
20968
|
-
|
|
20988
|
+
let resolvedToken = false;
|
|
20989
|
+
const hook = context.resolveDynamicReferences;
|
|
20990
|
+
const keyContext = hook ? {
|
|
20991
|
+
...context,
|
|
20992
|
+
resolveDynamicReferences: async (v, producerRegion) => {
|
|
20993
|
+
const plain = await hook(v, producerRegion);
|
|
20994
|
+
resolvedToken = true;
|
|
20995
|
+
return plain;
|
|
20996
|
+
}
|
|
20997
|
+
} : context;
|
|
20998
|
+
const sub = await substituteAgainstStateAsync(value, keyContext);
|
|
20969
20999
|
if (sub.kind === "literal") {
|
|
20970
21000
|
defineOwnKey(container.environment, key, String(sub.value));
|
|
20971
21001
|
resolvedEnvKeys.add(key);
|
|
21002
|
+
if (resolvedToken) container.resolvedDynamicReferenceKeys = [...container.resolvedDynamicReferenceKeys ?? [], key];
|
|
20972
21003
|
}
|
|
20973
21004
|
}
|
|
20974
21005
|
if (Array.isArray(c["Secrets"])) for (const entry of c["Secrets"]) {
|
|
@@ -20980,7 +21011,7 @@ async function applyCrossStackResolverToTask(task, context) {
|
|
|
20980
21011
|
if (typeof valueFromRaw === "string" && valueFromRaw.length > 0) continue;
|
|
20981
21012
|
if (container.secrets.some((s) => s.name === sName)) continue;
|
|
20982
21013
|
if (!isCrossStackIntrinsic(valueFromRaw)) continue;
|
|
20983
|
-
const sub = await substituteAgainstStateAsync(valueFromRaw,
|
|
21014
|
+
const sub = await substituteAgainstStateAsync(valueFromRaw, secretContext);
|
|
20984
21015
|
if (sub.kind === "literal" && typeof sub.value === "string" && sub.value.length > 0) {
|
|
20985
21016
|
container.secrets.push({
|
|
20986
21017
|
name: sName,
|
|
@@ -21560,6 +21591,29 @@ function strandedProfileCredentialsNotice(hostPath) {
|
|
|
21560
21591
|
return `The AWS credentials file mounted into the containers is NOT removed: delete ${displayIdent(hostPath)} once you tear them down.`;
|
|
21561
21592
|
}
|
|
21562
21593
|
|
|
21594
|
+
//#endregion
|
|
21595
|
+
//#region src/local/dynamic-reference.ts
|
|
21596
|
+
function createCallerDynamicReferenceResolver(profile) {
|
|
21597
|
+
return new DynamicReferenceResolver({
|
|
21598
|
+
secretsManagerClientFactory: (region) => new SecretsManagerClient({
|
|
21599
|
+
...awsClientDefaults({
|
|
21600
|
+
profile,
|
|
21601
|
+
ignoreAssumedRole: true
|
|
21602
|
+
}),
|
|
21603
|
+
...region && { region: canonicalizeRegion(region) },
|
|
21604
|
+
...profile && { profile }
|
|
21605
|
+
}),
|
|
21606
|
+
ssmClientFactory: (region) => new SSMClient({
|
|
21607
|
+
...awsClientDefaults({
|
|
21608
|
+
profile,
|
|
21609
|
+
ignoreAssumedRole: true
|
|
21610
|
+
}),
|
|
21611
|
+
...region && { region: canonicalizeRegion(region) },
|
|
21612
|
+
...profile && { profile }
|
|
21613
|
+
})
|
|
21614
|
+
});
|
|
21615
|
+
}
|
|
21616
|
+
|
|
21563
21617
|
//#endregion
|
|
21564
21618
|
//#region src/local/websocket-body.ts
|
|
21565
21619
|
function bufferToBody$1(raw, isBinary) {
|
|
@@ -21966,6 +22020,7 @@ function createContainerPool(specs, options) {
|
|
|
21966
22020
|
}],
|
|
21967
22021
|
extraMounts,
|
|
21968
22022
|
env: spec.env,
|
|
22023
|
+
...spec.sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys: spec.sensitiveEnvKeys },
|
|
21969
22024
|
cmd: [spec.lambda.handler],
|
|
21970
22025
|
hostPort,
|
|
21971
22026
|
host: spec.containerHost,
|
|
@@ -21984,6 +22039,7 @@ function createContainerPool(specs, options) {
|
|
|
21984
22039
|
readOnly: true
|
|
21985
22040
|
}] },
|
|
21986
22041
|
env: spec.env,
|
|
22042
|
+
...spec.sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys: spec.sensitiveEnvKeys },
|
|
21987
22043
|
cmd: spec.command,
|
|
21988
22044
|
hostPort,
|
|
21989
22045
|
host: spec.containerHost,
|
|
@@ -22376,7 +22432,8 @@ async function localStartApiCommand(target, options) {
|
|
|
22376
22432
|
skipPull: options.pull === false,
|
|
22377
22433
|
...options.layerRoleArn !== void 0 && { layerRoleArn: options.layerRoleArn },
|
|
22378
22434
|
...profileCredentials && { profileCredentials },
|
|
22379
|
-
...profileCredsFile && { profileCredsFile }
|
|
22435
|
+
...profileCredsFile && { profileCredsFile },
|
|
22436
|
+
...dynamicReferenceSpecOptions(options)
|
|
22380
22437
|
});
|
|
22381
22438
|
specs.set(logicalId, spec);
|
|
22382
22439
|
}
|
|
@@ -22800,8 +22857,14 @@ function assumeRolePin(logicalId) {
|
|
|
22800
22857
|
function malformedAutoRoleError(logicalId, detail) {
|
|
22801
22858
|
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
22859
|
}
|
|
22860
|
+
function dynamicReferenceSpecOptions(options) {
|
|
22861
|
+
return {
|
|
22862
|
+
...options.profile !== void 0 && { profile: options.profile },
|
|
22863
|
+
...options.stackRegion !== void 0 && { stackRegionOverride: options.stackRegion }
|
|
22864
|
+
};
|
|
22865
|
+
}
|
|
22803
22866
|
async function buildContainerSpec(args) {
|
|
22804
|
-
const { logicalId, stacks, overrides, assumeRole, containerHost, debugPort, stsRegion, inlineTmpDirs, layerTmpDirs, stateByStack, skipPull, layerRoleArn, profileCredentials, profileCredsFile } = args;
|
|
22867
|
+
const { logicalId, stacks, overrides, assumeRole, containerHost, debugPort, stsRegion, inlineTmpDirs, layerTmpDirs, stateByStack, skipPull, layerRoleArn, profileCredentials, profileCredsFile, profile, stackRegionOverride } = args;
|
|
22805
22868
|
const lambda = resolveLambdaByLogicalId(logicalId, stacks);
|
|
22806
22869
|
let codeDir;
|
|
22807
22870
|
let optDir;
|
|
@@ -22834,6 +22897,22 @@ async function buildContainerSpec(args) {
|
|
|
22834
22897
|
const overrideKeyExample = lambdaCdkPath?.replace(/\/Resource$/, "") ?? logicalId;
|
|
22835
22898
|
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
22899
|
}
|
|
22900
|
+
const plaintextKeys = new Set(stateAudit?.sensitiveKeys ?? []);
|
|
22901
|
+
for (const key of keysNotFromTemplate(templateEnv, envResult.resolved)) plaintextKeys.add(key);
|
|
22902
|
+
const dynamicRefs = createCallerDynamicReferenceResolver(profile);
|
|
22903
|
+
let dynamic;
|
|
22904
|
+
try {
|
|
22905
|
+
dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
|
|
22906
|
+
region: firstUsableRegion(stateBundle?.region, stackRegionOverride, lambda.stack.region, stsRegion),
|
|
22907
|
+
label: `Lambda ${logicalId}`,
|
|
22908
|
+
skipKeys: plaintextKeys,
|
|
22909
|
+
resolver: dynamicRefs
|
|
22910
|
+
});
|
|
22911
|
+
} finally {
|
|
22912
|
+
dynamicRefs.dispose();
|
|
22913
|
+
}
|
|
22914
|
+
const sensitiveKeyList = [...stateAudit?.sensitiveKeys ?? [], ...dynamic.resolvedKeys];
|
|
22915
|
+
const sensitiveEnvKeys = sensitiveKeyList.length > 0 ? new Set(sensitiveKeyList) : void 0;
|
|
22837
22916
|
const dockerEnv = {
|
|
22838
22917
|
AWS_LAMBDA_FUNCTION_NAME: logicalId,
|
|
22839
22918
|
AWS_LAMBDA_FUNCTION_MEMORY_SIZE: String(lambda.memoryMb),
|
|
@@ -22841,7 +22920,7 @@ async function buildContainerSpec(args) {
|
|
|
22841
22920
|
AWS_LAMBDA_FUNCTION_VERSION: "$LATEST",
|
|
22842
22921
|
AWS_LAMBDA_LOG_GROUP_NAME: `/aws/lambda/${logicalId}`,
|
|
22843
22922
|
AWS_LAMBDA_LOG_STREAM_NAME: "local",
|
|
22844
|
-
...
|
|
22923
|
+
...dynamic.env
|
|
22845
22924
|
};
|
|
22846
22925
|
const roleArn = resolveStartApiAssumeRoleArn({
|
|
22847
22926
|
logicalId,
|
|
@@ -22879,6 +22958,7 @@ async function buildContainerSpec(args) {
|
|
|
22879
22958
|
codeDir,
|
|
22880
22959
|
platform,
|
|
22881
22960
|
env: dockerEnv,
|
|
22961
|
+
...sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys },
|
|
22882
22962
|
containerHost,
|
|
22883
22963
|
...optDir !== void 0 && { optDir },
|
|
22884
22964
|
...debugPort !== void 0 && { debugPort },
|
|
@@ -22897,6 +22977,7 @@ async function buildContainerSpec(args) {
|
|
|
22897
22977
|
...lambda.imageConfig.entryPoint !== void 0 && lambda.imageConfig.entryPoint.length > 0 && { entryPoint: lambda.imageConfig.entryPoint },
|
|
22898
22978
|
...lambda.imageConfig.workingDirectory !== void 0 && { workingDir: lambda.imageConfig.workingDirectory },
|
|
22899
22979
|
env: dockerEnv,
|
|
22980
|
+
...sensitiveEnvKeys !== void 0 && { sensitiveEnvKeys },
|
|
22900
22981
|
containerHost,
|
|
22901
22982
|
...debugPort !== void 0 && { debugPort },
|
|
22902
22983
|
...tmpfs !== void 0 && { tmpfs },
|
|
@@ -23328,13 +23409,16 @@ async function loadStateForRoutedStacks(stacks, routes, routesWithAuth, options)
|
|
|
23328
23409
|
try {
|
|
23329
23410
|
const loaded = await provider.load(stack.stackName, stack.region);
|
|
23330
23411
|
if (!loaded) continue;
|
|
23331
|
-
const bundle = {
|
|
23332
|
-
|
|
23333
|
-
|
|
23334
|
-
|
|
23335
|
-
|
|
23336
|
-
|
|
23337
|
-
|
|
23412
|
+
const bundle = {
|
|
23413
|
+
state: {
|
|
23414
|
+
version: 1,
|
|
23415
|
+
stackName: stack.stackName,
|
|
23416
|
+
resources: loaded.resources,
|
|
23417
|
+
outputs: loaded.outputs,
|
|
23418
|
+
lastModified: 0
|
|
23419
|
+
},
|
|
23420
|
+
region: loaded.region
|
|
23421
|
+
};
|
|
23338
23422
|
if (stackHasIntrinsicEnv(stackName)) {
|
|
23339
23423
|
const pseudo = await resolvePseudoParametersForStartApi(loaded.region, options);
|
|
23340
23424
|
if (pseudo) bundle.pseudoParameters = pseudo;
|
|
@@ -23797,10 +23881,24 @@ async function runEcsTask(task, options, state) {
|
|
|
23797
23881
|
const startOrder = topoSort(buildDependencyGraph(task.containers), task.containers);
|
|
23798
23882
|
const finchRefusals = [];
|
|
23799
23883
|
for (const c of task.containers) {
|
|
23800
|
-
const refusal = finchSecretArgvRefusal(
|
|
23884
|
+
const refusal = finchSecretArgvRefusal([
|
|
23885
|
+
...c.secrets.map((s) => s.name),
|
|
23886
|
+
...c.resolvedDynamicReferenceKeys ?? [],
|
|
23887
|
+
...dynamicReferenceEnvKeys(c, options.envOverrides)
|
|
23888
|
+
].filter((n) => !isMalformedEnvKey(n) && !isDockerClientEnvKey(n)), `Container ${displayIdent(c.name)}`);
|
|
23801
23889
|
if (refusal !== void 0) finchRefusals.push(refusal);
|
|
23802
23890
|
}
|
|
23803
23891
|
if (finchRefusals.length > 0) throw new EcsTaskRunnerError(finchRefusals.join("\n"));
|
|
23892
|
+
const argvRefusals = [];
|
|
23893
|
+
for (const c of task.containers) {
|
|
23894
|
+
const fields = [
|
|
23895
|
+
["Command", c.command],
|
|
23896
|
+
["EntryPoint", c.entryPoint],
|
|
23897
|
+
["HealthCheck.Command", c.healthCheck?.command]
|
|
23898
|
+
];
|
|
23899
|
+
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.`);
|
|
23900
|
+
}
|
|
23901
|
+
if (argvRefusals.length > 0) throw new EcsTaskRunnerError(argvRefusals.join("\n"));
|
|
23804
23902
|
const imagePlan = options.imagePlanByContainer ?? /* @__PURE__ */ new Map();
|
|
23805
23903
|
if (!options.imagePlanByContainer) await prepareImages(task, imagePlan, options);
|
|
23806
23904
|
const allSecrets = [];
|
|
@@ -23810,6 +23908,22 @@ async function runEcsTask(task, options, state) {
|
|
|
23810
23908
|
valueFrom: s.valueFrom
|
|
23811
23909
|
});
|
|
23812
23910
|
const secretsByContainer = groupSecretsByContainer(await resolveEcsSecrets(allSecrets, { ...options.region !== void 0 && { region: options.region } }));
|
|
23911
|
+
const dynamicEnvByContainer = /* @__PURE__ */ new Map();
|
|
23912
|
+
const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
|
|
23913
|
+
try {
|
|
23914
|
+
for (const c of task.containers) {
|
|
23915
|
+
const tokenKeys = new Set(dynamicReferenceEnvKeys(c, options.envOverrides));
|
|
23916
|
+
if (tokenKeys.size === 0) continue;
|
|
23917
|
+
dynamicEnvByContainer.set(c.name, await resolveDynamicReferencesInEnv(c.environment, {
|
|
23918
|
+
region: firstUsableRegion(options.stateRecordRegion, options.stackRegion, task.stack.region, options.region),
|
|
23919
|
+
label: `Container ${c.name}`,
|
|
23920
|
+
skipKeys: new Set(Object.keys(c.environment).filter((k) => !tokenKeys.has(k))),
|
|
23921
|
+
resolver: dynamicRefs
|
|
23922
|
+
}));
|
|
23923
|
+
}
|
|
23924
|
+
} finally {
|
|
23925
|
+
dynamicRefs.dispose();
|
|
23926
|
+
}
|
|
23813
23927
|
if (options.existingNetwork) state.network = {
|
|
23814
23928
|
...options.existingNetwork,
|
|
23815
23929
|
ownedByCaller: true
|
|
@@ -23853,9 +23967,14 @@ async function runEcsTask(task, options, state) {
|
|
|
23853
23967
|
for (const container of task.containers) {
|
|
23854
23968
|
const image = imagePlan.get(container.name);
|
|
23855
23969
|
if (!image) throw new EcsTaskRunnerError(`Internal: no resolved image for container '${container.name}'.`);
|
|
23970
|
+
const dynamic = dynamicEnvByContainer.get(container.name);
|
|
23856
23971
|
const built = buildDockerRunArgs({
|
|
23857
23972
|
task,
|
|
23858
|
-
container
|
|
23973
|
+
container: dynamic ? {
|
|
23974
|
+
...container,
|
|
23975
|
+
environment: dynamic.env
|
|
23976
|
+
} : container,
|
|
23977
|
+
plaintextEnvKeys: [...container.resolvedDynamicReferenceKeys ?? [], ...dynamic?.resolvedKeys ?? []],
|
|
23859
23978
|
image,
|
|
23860
23979
|
network: state.network.networkName,
|
|
23861
23980
|
volumeByName,
|
|
@@ -24175,6 +24294,19 @@ async function realizeDockerVolumes(volumes, state) {
|
|
|
24175
24294
|
function randHex(bytes) {
|
|
24176
24295
|
return randomBytes(bytes).toString("hex");
|
|
24177
24296
|
}
|
|
24297
|
+
function overriddenEnvKeys(overrides, containerName) {
|
|
24298
|
+
if (!overrides) return [];
|
|
24299
|
+
const applied = (map) => Object.entries(map ?? {}).filter(([, v]) => v === null || typeof v === "string" || typeof v === "number" || typeof v === "boolean").map(([k]) => k);
|
|
24300
|
+
return [...applied(overrides["Parameters"]), ...applied(overrides[containerName])];
|
|
24301
|
+
}
|
|
24302
|
+
function dynamicReferenceEnvKeys(container, overrides) {
|
|
24303
|
+
const skip = /* @__PURE__ */ new Set([
|
|
24304
|
+
...container.resolvedDynamicReferenceKeys ?? [],
|
|
24305
|
+
...container.secrets.map((s) => s.name),
|
|
24306
|
+
...overriddenEnvKeys(overrides, container.name)
|
|
24307
|
+
]);
|
|
24308
|
+
return Object.keys(container.environment).filter((k) => !skip.has(k) && containsDynamicReference(container.environment[k]));
|
|
24309
|
+
}
|
|
24178
24310
|
function groupSecretsByContainer(resolved) {
|
|
24179
24311
|
const out = /* @__PURE__ */ new Map();
|
|
24180
24312
|
for (const r of resolved) {
|
|
@@ -24242,7 +24374,11 @@ function buildDockerRunArgs(opts) {
|
|
|
24242
24374
|
applyOverrideMap(finalEnv, overrides["Parameters"]);
|
|
24243
24375
|
applyOverrideMap(finalEnv, overrides[container.name]);
|
|
24244
24376
|
}
|
|
24245
|
-
const sensitiveKeys = /* @__PURE__ */ new Set([
|
|
24377
|
+
const sensitiveKeys = /* @__PURE__ */ new Set([
|
|
24378
|
+
...SENSITIVE_ENV_KEYS,
|
|
24379
|
+
...secrets.map((s) => s.name),
|
|
24380
|
+
...opts.plaintextEnvKeys ?? []
|
|
24381
|
+
]);
|
|
24246
24382
|
const { flags, sensitiveEnv, collisions } = partitionSensitiveEnv(finalEnv, sensitiveKeys);
|
|
24247
24383
|
args.push(...flags);
|
|
24248
24384
|
if (container.user) args.push("--user", container.user);
|
|
@@ -24362,13 +24498,23 @@ async function localRunTaskCommand(target, options) {
|
|
|
24362
24498
|
const consumerRegion = resolveEcsConsumerRegion(stateRecordRegion, options, task.stack.region);
|
|
24363
24499
|
const resolver = await stateProvider.buildCrossStackResolver(consumerRegion);
|
|
24364
24500
|
if (resolver) {
|
|
24501
|
+
const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
|
|
24365
24502
|
const subContext = {
|
|
24366
24503
|
resources: imageContext?.stateResources ?? {},
|
|
24367
24504
|
...imageContext?.pseudoParameters && { pseudoParameters: imageContext.pseudoParameters },
|
|
24368
24505
|
consumerRegion,
|
|
24369
|
-
crossStackResolver: resolver
|
|
24506
|
+
crossStackResolver: resolver,
|
|
24507
|
+
resolveDynamicReferences: (value, producerRegion) => dynamicRefs.resolveString(value, {
|
|
24508
|
+
region: producerRegion,
|
|
24509
|
+
consumer: `Task ${task.taskDefinitionLogicalId} cross-stack env value`,
|
|
24510
|
+
overridable: false
|
|
24511
|
+
})
|
|
24370
24512
|
};
|
|
24371
|
-
|
|
24513
|
+
try {
|
|
24514
|
+
await applyCrossStackResolverToTask(task, subContext);
|
|
24515
|
+
} finally {
|
|
24516
|
+
dynamicRefs.dispose();
|
|
24517
|
+
}
|
|
24372
24518
|
}
|
|
24373
24519
|
} 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
24520
|
sigintHandler = () => {
|
|
@@ -24403,7 +24549,8 @@ async function localRunTaskCommand(target, options) {
|
|
|
24403
24549
|
const envOverrides = readEnvOverridesFile$2(options.envVars);
|
|
24404
24550
|
const runOpts = buildRunEcsTaskOptions(options, channels, {
|
|
24405
24551
|
...envOverrides !== void 0 && { envOverrides },
|
|
24406
|
-
...resolvedRoleArn !== void 0 && { resolvedRoleArn }
|
|
24552
|
+
...resolvedRoleArn !== void 0 && { resolvedRoleArn },
|
|
24553
|
+
...stateRecordRegion !== void 0 && { stateRecordRegion }
|
|
24407
24554
|
});
|
|
24408
24555
|
const hostGatewayExtraHosts = await resolveHostGatewayExtraHosts();
|
|
24409
24556
|
if (hostGatewayExtraHosts.length > 0) runOpts.hostGatewayExtraHosts = hostGatewayExtraHosts;
|
|
@@ -24621,6 +24768,9 @@ function buildRunEcsTaskOptions(options, channels, extra = {}) {
|
|
|
24621
24768
|
if (extra.resolvedRoleArn) runOpts.taskRoleArn = extra.resolvedRoleArn;
|
|
24622
24769
|
if (options.platform) runOpts.platformOverride = options.platform;
|
|
24623
24770
|
if (options.region) runOpts.region = options.region;
|
|
24771
|
+
if (options.stackRegion) runOpts.stackRegion = options.stackRegion;
|
|
24772
|
+
if (options.profile) runOpts.profile = options.profile;
|
|
24773
|
+
if (extra.stateRecordRegion) runOpts.stateRecordRegion = extra.stateRecordRegion;
|
|
24624
24774
|
if (options.ecrRoleArn !== void 0) runOpts.ecrRoleArn = options.ecrRoleArn;
|
|
24625
24775
|
if (channels.profileCredsFile) runOpts.profileCredentialsFile = {
|
|
24626
24776
|
hostPath: channels.profileCredsFile.hostPath,
|
|
@@ -24662,7 +24812,11 @@ function createLocalStartServiceCommand() {
|
|
|
24662
24812
|
await runEcsServiceEmulator(targets, options, serviceStrategy(), cdkdExtraStateProviders);
|
|
24663
24813
|
}));
|
|
24664
24814
|
addStartServiceSpecificOptions(cmd);
|
|
24665
|
-
warnEngineRoleExposure(cmd, "start-service", [
|
|
24815
|
+
warnEngineRoleExposure(cmd, "start-service", [
|
|
24816
|
+
ENGINE_ECS_SECRETS_CHANNEL,
|
|
24817
|
+
ENGINE_ACCOUNT_ID_CHANNEL,
|
|
24818
|
+
ENGINE_DYNAMIC_REFERENCE_CHANNEL
|
|
24819
|
+
]);
|
|
24666
24820
|
return adoptDeprecatedRegionFlag(addCommonEcsServiceOptions(cmd));
|
|
24667
24821
|
}
|
|
24668
24822
|
|
|
@@ -25475,13 +25629,28 @@ function findFileAssetByObjectKey(fileAssets, hash) {
|
|
|
25475
25629
|
for (const asset of fileAssets.values()) if (Object.values(asset.destinations).some((d) => d.objectKey === zip || d.objectKey.endsWith(`/${zip}`))) return asset;
|
|
25476
25630
|
}
|
|
25477
25631
|
async function buildContainerEnv(resolved, options, profileCredentials, profileCredsFile, stateProvider, loaded, imageContext) {
|
|
25632
|
+
const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
|
|
25633
|
+
try {
|
|
25634
|
+
return await buildContainerEnvWith(resolved, options, profileCredentials, profileCredsFile, stateProvider, loaded, imageContext, dynamicRefs);
|
|
25635
|
+
} finally {
|
|
25636
|
+
dynamicRefs.dispose();
|
|
25637
|
+
}
|
|
25638
|
+
}
|
|
25639
|
+
async function buildContainerEnvWith(resolved, options, profileCredentials, profileCredsFile, stateProvider, loaded, imageContext, dynamicRefs) {
|
|
25478
25640
|
const logger = getLogger();
|
|
25479
|
-
|
|
25641
|
+
const overrides = readEnvOverridesFile$1(options.envVars);
|
|
25642
|
+
const cdkPath = readCdkPathOrUndefined(resolved.resource);
|
|
25643
|
+
const overriddenKeys = keysOverriddenBy(resolved.environmentVariables, (env) => resolveEnvVars(resolved.logicalId, cdkPath, env, overrides).resolved);
|
|
25644
|
+
let templateEnv = withoutKeys(resolved.environmentVariables, overriddenKeys);
|
|
25480
25645
|
const sensitiveEnvKeys = /* @__PURE__ */ new Set();
|
|
25481
25646
|
if (stateProvider && loaded) {
|
|
25482
25647
|
const subContext = {
|
|
25483
25648
|
resources: imageContext?.stateResources ?? loaded.resources,
|
|
25484
|
-
consumerRegion: loaded.region
|
|
25649
|
+
consumerRegion: loaded.region,
|
|
25650
|
+
resolveDynamicReferences: (value, producerRegion) => dynamicRefs.resolveString(value, {
|
|
25651
|
+
region: producerRegion,
|
|
25652
|
+
consumer: `AgentCore Runtime ${resolved.logicalId} cross-stack env value`
|
|
25653
|
+
})
|
|
25485
25654
|
};
|
|
25486
25655
|
const pseudo = imageContext?.pseudoParameters ?? derivePseudoParametersFromRegion$1(loaded.region);
|
|
25487
25656
|
if (pseudo) subContext.pseudoParameters = pseudo;
|
|
@@ -25495,14 +25664,21 @@ async function buildContainerEnv(resolved, options, profileCredentials, profileC
|
|
|
25495
25664
|
for (const key of audit.sensitiveKeys) sensitiveEnvKeys.add(key);
|
|
25496
25665
|
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
25666
|
}
|
|
25498
|
-
const overrides = readEnvOverridesFile$1(options.envVars);
|
|
25499
|
-
const cdkPath = readCdkPathOrUndefined(resolved.resource);
|
|
25500
25667
|
const envResult = resolveEnvVars(resolved.logicalId, cdkPath, templateEnv, overrides);
|
|
25501
25668
|
for (const key of envResult.unresolved) {
|
|
25502
25669
|
const overrideKeyExample = cdkPath?.replace(/\/Resource$/, "") ?? resolved.logicalId;
|
|
25503
25670
|
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
25671
|
}
|
|
25505
|
-
const
|
|
25672
|
+
const skipKeys = keysNotFromTemplate(templateEnv, envResult.resolved);
|
|
25673
|
+
for (const key of sensitiveEnvKeys) skipKeys.add(key);
|
|
25674
|
+
const dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
|
|
25675
|
+
region: firstUsableRegion(loaded?.region, options.stackRegion, resolved.stack.region, options.region),
|
|
25676
|
+
label: `AgentCore Runtime ${resolved.logicalId}`,
|
|
25677
|
+
skipKeys,
|
|
25678
|
+
resolver: dynamicRefs
|
|
25679
|
+
});
|
|
25680
|
+
for (const key of dynamic.resolvedKeys) sensitiveEnvKeys.add(key);
|
|
25681
|
+
const dockerEnv = { ...dynamic.env };
|
|
25506
25682
|
const assumeRoleArn = resolveAssumeRoleArn(options, resolved, loaded);
|
|
25507
25683
|
await applyAgentCoreCredentialEnv(dockerEnv, {
|
|
25508
25684
|
...assumeRoleArn !== void 0 && { assumeRoleArn },
|
|
@@ -25844,7 +26020,11 @@ function createLocalStartAgentCoreCommand$1() {
|
|
|
25844
26020
|
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
26021
|
cmd.addOption(new Option("--state-prefix <prefix>", "S3 key prefix for --from-state state files.").default("cdkd"));
|
|
25846
26022
|
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", [
|
|
26023
|
+
warnEngineRoleExposure(cmd, "start-agentcore", [
|
|
26024
|
+
engineCredentialTripleChannel("the agent container"),
|
|
26025
|
+
ENGINE_ACCOUNT_ID_CHANNEL,
|
|
26026
|
+
ENGINE_DYNAMIC_REFERENCE_CHANNEL
|
|
26027
|
+
]);
|
|
25848
26028
|
return adoptDeprecatedRegionFlag(cmd);
|
|
25849
26029
|
}
|
|
25850
26030
|
|
|
@@ -25890,7 +26070,8 @@ function createLocalStartAlbCommand() {
|
|
|
25890
26070
|
warnEngineRoleExposure(cmd, "start-alb", [
|
|
25891
26071
|
engineCredentialTripleChannel("the ALB's Lambda target-group containers"),
|
|
25892
26072
|
ENGINE_ECS_SECRETS_CHANNEL,
|
|
25893
|
-
ENGINE_ACCOUNT_ID_CHANNEL
|
|
26073
|
+
ENGINE_ACCOUNT_ID_CHANNEL,
|
|
26074
|
+
ENGINE_DYNAMIC_REFERENCE_CHANNEL
|
|
25894
26075
|
]);
|
|
25895
26076
|
return adoptDeprecatedRegionFlag(addCommonEcsServiceOptions(cmd));
|
|
25896
26077
|
}
|
|
@@ -25907,7 +26088,7 @@ function createLocalStartCloudFrontCommand$1() {
|
|
|
25907
26088
|
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
26089
|
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
26090
|
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"));
|
|
26091
|
+
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
26092
|
return adoptDeprecatedRegionFlag(cmd);
|
|
25912
26093
|
}
|
|
25913
26094
|
function refuseUnwiredCdkdStateFlags(cmd) {
|
|
@@ -26024,50 +26205,7 @@ async function localInvokeCommand(target, options) {
|
|
|
26024
26205
|
const targetLabel = lambda.kind === "zip" ? lambda.runtime : "container image";
|
|
26025
26206
|
logger.info(`Target: ${lambda.stack.stackName}/${lambda.logicalId} (${targetLabel})`);
|
|
26026
26207
|
imagePlan = await resolveImagePlan(lambda, options);
|
|
26027
|
-
|
|
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
|
-
}
|
|
26208
|
+
const { env: templateEnvResolved, sensitiveEnvKeys, stateForRoleHint } = await resolveInvokeTemplateEnv(lambda, options);
|
|
26071
26209
|
let resolvedAssumeRoleArn;
|
|
26072
26210
|
if (typeof options.assumeRole === "string") resolvedAssumeRoleArn = explicitRoleArnOrThrow("--assume-role", options.assumeRole);
|
|
26073
26211
|
else if (options.assumeRole === true) {
|
|
@@ -26082,7 +26220,7 @@ async function localInvokeCommand(target, options) {
|
|
|
26082
26220
|
AWS_LAMBDA_FUNCTION_VERSION: "$LATEST",
|
|
26083
26221
|
AWS_LAMBDA_LOG_GROUP_NAME: `/aws/lambda/${lambda.logicalId}`,
|
|
26084
26222
|
AWS_LAMBDA_LOG_STREAM_NAME: "local",
|
|
26085
|
-
...
|
|
26223
|
+
...templateEnvResolved
|
|
26086
26224
|
};
|
|
26087
26225
|
await applyLambdaCredentialEnv(dockerEnv, {
|
|
26088
26226
|
...resolvedAssumeRoleArn && { assumeRoleArn: resolvedAssumeRoleArn },
|
|
@@ -26112,6 +26250,7 @@ async function localInvokeCommand(target, options) {
|
|
|
26112
26250
|
mounts: imagePlan.mounts,
|
|
26113
26251
|
extraMounts: extraMountsWithProfile,
|
|
26114
26252
|
env: dockerEnv,
|
|
26253
|
+
...sensitiveEnvKeys.size > 0 && { sensitiveEnvKeys },
|
|
26115
26254
|
...hostGatewayExtraHosts.length > 0 && { extraHosts: hostGatewayExtraHosts },
|
|
26116
26255
|
cmd: imagePlan.cmd,
|
|
26117
26256
|
hostPort,
|
|
@@ -26139,6 +26278,82 @@ async function localInvokeCommand(target, options) {
|
|
|
26139
26278
|
if (sigintHandler) process.off("SIGINT", sigintHandler);
|
|
26140
26279
|
}
|
|
26141
26280
|
}
|
|
26281
|
+
async function resolveInvokeTemplateEnv(lambda, options) {
|
|
26282
|
+
const dynamicRefs = createCallerDynamicReferenceResolver(options.profile);
|
|
26283
|
+
try {
|
|
26284
|
+
return await resolveInvokeTemplateEnvWith(lambda, options, dynamicRefs);
|
|
26285
|
+
} finally {
|
|
26286
|
+
dynamicRefs.dispose();
|
|
26287
|
+
}
|
|
26288
|
+
}
|
|
26289
|
+
async function resolveInvokeTemplateEnvWith(lambda, options, dynamicRefs) {
|
|
26290
|
+
const logger = getLogger();
|
|
26291
|
+
let stateAudit;
|
|
26292
|
+
let stateForRoleHint;
|
|
26293
|
+
let ownerRegion;
|
|
26294
|
+
const declaredEnv = getTemplateEnv(lambda.resource);
|
|
26295
|
+
const overrides = readEnvOverridesFile(options.envVars);
|
|
26296
|
+
const lambdaCdkPath = readCdkPathOrUndefined(lambda.resource);
|
|
26297
|
+
const overriddenKeys = keysOverriddenBy(declaredEnv, (env) => resolveEnvVars(lambda.logicalId, lambdaCdkPath, env, overrides).resolved);
|
|
26298
|
+
let templateEnv = declaredEnv && withoutKeys(declaredEnv, overriddenKeys);
|
|
26299
|
+
const stateProvider = createLocalStateProvider$1(options, lambda.stack.stackName, lambda.stack.region);
|
|
26300
|
+
if (stateProvider) try {
|
|
26301
|
+
const loaded = await stateProvider.load(lambda.stack.stackName, lambda.stack.region);
|
|
26302
|
+
if (loaded) {
|
|
26303
|
+
ownerRegion = loaded.region;
|
|
26304
|
+
stateForRoleHint = {
|
|
26305
|
+
version: 1,
|
|
26306
|
+
stackName: lambda.stack.stackName,
|
|
26307
|
+
resources: loaded.resources,
|
|
26308
|
+
outputs: loaded.outputs,
|
|
26309
|
+
lastModified: 0
|
|
26310
|
+
};
|
|
26311
|
+
const subContext = {
|
|
26312
|
+
resources: loaded.resources,
|
|
26313
|
+
consumerRegion: loaded.region,
|
|
26314
|
+
resolveDynamicReferences: (value, producerRegion) => dynamicRefs.resolveString(value, {
|
|
26315
|
+
region: producerRegion,
|
|
26316
|
+
consumer: `Lambda ${lambda.logicalId} cross-stack env value`
|
|
26317
|
+
})
|
|
26318
|
+
};
|
|
26319
|
+
if (envHasIntrinsicValue(templateEnv)) {
|
|
26320
|
+
const pseudo = await resolvePseudoParametersForInvoke(lambda.stack.region, options);
|
|
26321
|
+
if (pseudo) subContext.pseudoParameters = pseudo;
|
|
26322
|
+
}
|
|
26323
|
+
if (envHasCrossStackIntrinsic(templateEnv)) {
|
|
26324
|
+
const resolver = await stateProvider.buildCrossStackResolver(loaded.region);
|
|
26325
|
+
if (resolver) subContext.crossStackResolver = resolver;
|
|
26326
|
+
}
|
|
26327
|
+
const { env, audit } = await substituteEnvVarsFromStateAsync(templateEnv, subContext);
|
|
26328
|
+
templateEnv = env;
|
|
26329
|
+
stateAudit = audit;
|
|
26330
|
+
const label = stateProvider.label;
|
|
26331
|
+
for (const key of audit.resolvedKeys) logger.debug(`${label}: substituted env var ${key}`);
|
|
26332
|
+
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.`);
|
|
26333
|
+
}
|
|
26334
|
+
} finally {
|
|
26335
|
+
stateProvider.dispose();
|
|
26336
|
+
}
|
|
26337
|
+
const envResult = resolveEnvVars(lambda.logicalId, lambdaCdkPath, templateEnv, overrides);
|
|
26338
|
+
for (const key of envResult.unresolved) {
|
|
26339
|
+
if (stateAudit && stateAudit.unresolved.some((u) => u.key === key)) continue;
|
|
26340
|
+
const overrideKeyExample = lambdaCdkPath?.replace(/\/Resource$/, "") ?? lambda.logicalId;
|
|
26341
|
+
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.`);
|
|
26342
|
+
}
|
|
26343
|
+
const plaintextKeys = new Set(stateAudit?.sensitiveKeys ?? []);
|
|
26344
|
+
for (const key of keysNotFromTemplate(templateEnv, envResult.resolved)) plaintextKeys.add(key);
|
|
26345
|
+
const dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
|
|
26346
|
+
region: firstUsableRegion(ownerRegion, options.stackRegion, lambda.stack.region, options.region),
|
|
26347
|
+
label: `Lambda ${lambda.logicalId}`,
|
|
26348
|
+
skipKeys: plaintextKeys,
|
|
26349
|
+
resolver: dynamicRefs
|
|
26350
|
+
});
|
|
26351
|
+
return {
|
|
26352
|
+
env: dynamic.env,
|
|
26353
|
+
sensitiveEnvKeys: /* @__PURE__ */ new Set([...stateAudit?.sensitiveKeys ?? [], ...dynamic.resolvedKeys]),
|
|
26354
|
+
...stateForRoleHint !== void 0 && { stateForRoleHint }
|
|
26355
|
+
};
|
|
26356
|
+
}
|
|
26142
26357
|
async function resolveImagePlan(lambda, options) {
|
|
26143
26358
|
if (lambda.kind === "zip") return resolveZipImagePlan(lambda, options);
|
|
26144
26359
|
return resolveContainerImagePlan(lambda, options);
|
|
@@ -26612,4 +26827,4 @@ function collectVerbFlags(program) {
|
|
|
26612
26827
|
|
|
26613
26828
|
//#endregion
|
|
26614
26829
|
export { canonicalizeIpProtocolValue as a, buildProgram, resolveSecretDerivedPrincipals as i, runDestroyForStack as n, resolvedResourceTimeoutMs as o, isResolvableSecretPrincipalList as r, canonicalizeIpv4Cidr as t };
|
|
26615
|
-
//# sourceMappingURL=program-
|
|
26830
|
+
//# sourceMappingURL=program-CwSdIG3b.js.map
|