@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.
- package/dist/{asg-provider-DedWRf1j.js → asg-provider-CksS_6jO.js} +2 -2
- package/dist/{asg-provider-DedWRf1j.js.map → asg-provider-CksS_6jO.js.map} +1 -1
- package/dist/cli.js +2 -2
- package/dist/{deploy-engine-C_Eg-RHm.js → deploy-engine-Dre6eDNJ.js} +18 -6
- package/dist/{deploy-engine-C_Eg-RHm.js.map → deploy-engine-Dre6eDNJ.js.map} +1 -1
- package/dist/{iam-role-provider-COoTgydF.js → iam-role-provider-D9wk9Bnh.js} +2 -2
- package/dist/{iam-role-provider-COoTgydF.js.map → iam-role-provider-D9wk9Bnh.js.map} +1 -1
- package/dist/index.js +2 -2
- package/dist/{neptune-provider-D2SmeISr.js → neptune-provider-B1GRQ6UO.js} +2 -2
- package/dist/{neptune-provider-D2SmeISr.js.map → neptune-provider-B1GRQ6UO.js.map} +1 -1
- package/dist/{program-CiMVZi4n.js → program-DFehMfoh.js} +281 -81
- package/dist/program-DFehMfoh.js.map +1 -0
- package/dist/{provider-classes-CtsCylnp.js → provider-classes-Ca6o5by0.js} +139 -24
- package/dist/provider-classes-Ca6o5by0.js.map +1 -0
- package/dist/{rds-provider-DQwvPJXB.js → rds-provider-Dl--9uQU.js} +2 -2
- package/dist/{rds-provider-DQwvPJXB.js.map → rds-provider-Dl--9uQU.js.map} +1 -1
- package/dist/{version-WJhcQQ3m.js → version-B5LYpWJH.js} +2 -2
- package/dist/{version-WJhcQQ3m.js.map → version-B5LYpWJH.js.map} +1 -1
- package/package.json +2 -2
- 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 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-
|
|
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
|
-
|
|
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,
|
|
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
|
-
...
|
|
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 = {
|
|
23332
|
-
|
|
23333
|
-
|
|
23334
|
-
|
|
23335
|
-
|
|
23336
|
-
|
|
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(
|
|
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([
|
|
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
|
-
|
|
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", [
|
|
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
|
-
|
|
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
|
|
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", [
|
|
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
|
-
|
|
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
|
-
...
|
|
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-
|
|
26815
|
+
//# sourceMappingURL=program-DFehMfoh.js.map
|