cdk-local 0.143.3 → 0.144.1
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/README.md +1 -1
- package/dist/cli.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/internal.d.ts +10 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +2 -2
- package/dist/{local-studio-C1YGBilh.d.ts → local-studio-Cu4_X0M_.d.ts} +4 -2
- package/dist/{local-studio-C1YGBilh.d.ts.map → local-studio-Cu4_X0M_.d.ts.map} +1 -1
- package/dist/{local-studio-hmQ2mqsf.js → local-studio-CwyvulUm.js} +65 -7
- package/dist/local-studio-CwyvulUm.js.map +1 -0
- package/package.json +1 -1
- package/dist/local-studio-hmQ2mqsf.js.map +0 -1
|
@@ -8881,6 +8881,41 @@ async function probeHostGatewaySupport() {
|
|
|
8881
8881
|
supported: parsed === null || compareDockerVersions(parsed, HOST_GATEWAY_MIN_VERSION) >= 0
|
|
8882
8882
|
};
|
|
8883
8883
|
}
|
|
8884
|
+
/**
|
|
8885
|
+
* The `host.docker.internal:host-gateway` extra-host mapping that lets a
|
|
8886
|
+
* container reach a server bound on the host loopback. Docker Desktop
|
|
8887
|
+
* (macOS / Windows) resolves `host.docker.internal` natively, but Linux
|
|
8888
|
+
* native dockerd needs this explicit `--add-host` (since Docker 20.10).
|
|
8889
|
+
*/
|
|
8890
|
+
const HOST_DOCKER_INTERNAL_GATEWAY = {
|
|
8891
|
+
host: "host.docker.internal",
|
|
8892
|
+
ip: "host-gateway"
|
|
8893
|
+
};
|
|
8894
|
+
let hostGatewayExtraHostsCache;
|
|
8895
|
+
/**
|
|
8896
|
+
* Resolve the `extraHosts` entries to inject so a launched container can
|
|
8897
|
+
* reach a server on the host via `host.docker.internal` — the
|
|
8898
|
+
* load-bearing primitive behind pointing a Lambda / ECS container at a
|
|
8899
|
+
* local endpoint (e.g. `AWS_ENDPOINT_URL_*` to a local server, or a
|
|
8900
|
+
* tunneled VPC resource).
|
|
8901
|
+
*
|
|
8902
|
+
* Returns `[{@link HOST_DOCKER_INTERNAL_GATEWAY}]` when the Docker daemon
|
|
8903
|
+
* supports the `host-gateway` alias (>= 20.10, or an unparseable
|
|
8904
|
+
* podman / finch version per {@link probeHostGatewaySupport}), else `[]`
|
|
8905
|
+
* — passing `--add-host ...:host-gateway` to a pre-20.10 daemon would
|
|
8906
|
+
* fail the `docker run`, so an old / unknown-failed daemon silently
|
|
8907
|
+
* degrades to "no mapping" (Docker Desktop still resolves the name
|
|
8908
|
+
* natively; Linux native dockerd loses host reachability, matching the
|
|
8909
|
+
* pre-fix behavior). A probe error (daemon down, binary missing)
|
|
8910
|
+
* resolves to `[]` rather than throwing — reachability is best-effort
|
|
8911
|
+
* convenience here, NOT a hard requirement like the start-api WebSocket
|
|
8912
|
+
* path. Memoized per process: the probe (`docker version`) fires at most
|
|
8913
|
+
* once regardless of how many containers / replicas are launched.
|
|
8914
|
+
*/
|
|
8915
|
+
async function resolveHostGatewayExtraHosts() {
|
|
8916
|
+
if (hostGatewayExtraHostsCache === void 0) hostGatewayExtraHostsCache = probeHostGatewaySupport().then((probe) => probe.supported ? [{ ...HOST_DOCKER_INTERNAL_GATEWAY }] : []).catch(() => []);
|
|
8917
|
+
return hostGatewayExtraHostsCache;
|
|
8918
|
+
}
|
|
8884
8919
|
|
|
8885
8920
|
//#endregion
|
|
8886
8921
|
//#region src/local/vtl-engine.ts
|
|
@@ -17501,12 +17536,14 @@ async function localInvokeCommand(target, options, extraStateProviders) {
|
|
|
17501
17536
|
containerPath: profileCredsFile.containerPath,
|
|
17502
17537
|
readOnly: true
|
|
17503
17538
|
}] : imagePlan.extraMounts;
|
|
17539
|
+
const hostGatewayExtraHosts = await resolveHostGatewayExtraHosts();
|
|
17504
17540
|
containerId = await runDetached({
|
|
17505
17541
|
image: imagePlan.image,
|
|
17506
17542
|
mounts: imagePlan.mounts,
|
|
17507
17543
|
extraMounts: extraMountsWithProfile,
|
|
17508
17544
|
env: dockerEnv,
|
|
17509
17545
|
...containerEnv.sensitiveEnvKeys.length > 0 && { sensitiveEnvKeys: new Set(containerEnv.sensitiveEnvKeys) },
|
|
17546
|
+
...hostGatewayExtraHosts.length > 0 && { extraHosts: hostGatewayExtraHosts },
|
|
17510
17547
|
cmd: imagePlan.cmd,
|
|
17511
17548
|
hostPort,
|
|
17512
17549
|
host: containerHost,
|
|
@@ -21118,6 +21155,19 @@ async function cleanupEcsRun(state, options) {
|
|
|
21118
21155
|
state.dockerVolumeNames = [];
|
|
21119
21156
|
}
|
|
21120
21157
|
/**
|
|
21158
|
+
* Merge the Cloud Map peer-discovery `--add-host` flag pairs
|
|
21159
|
+
* ({@link RunEcsTaskOptions.addHostFlags}) with the boot-resolved
|
|
21160
|
+
* `host.docker.internal` host-gateway mapping(s)
|
|
21161
|
+
* ({@link RunEcsTaskOptions.hostGatewayExtraHosts}) into one verbatim
|
|
21162
|
+
* `['--add-host', 'name:ip', ...]` list for `docker run`. The host-gateway
|
|
21163
|
+
* entry uses a distinct name, so its position relative to the peer entries
|
|
21164
|
+
* is irrelevant (docker's resolver matches by name). Pure — exported for
|
|
21165
|
+
* the site-level merge test.
|
|
21166
|
+
*/
|
|
21167
|
+
function mergeHostGatewayAddHostFlags(addHostFlags, hostGatewayExtraHosts) {
|
|
21168
|
+
return [...addHostFlags ?? [], ...(hostGatewayExtraHosts ?? []).flatMap((h) => ["--add-host", `${h.host}:${h.ip}`])];
|
|
21169
|
+
}
|
|
21170
|
+
/**
|
|
21121
21171
|
* Top-level entry point. Mutates `state` as it makes progress so the
|
|
21122
21172
|
* caller's `cleanup(state)` can roll back partial side effects on any
|
|
21123
21173
|
* thrown error.
|
|
@@ -21172,6 +21222,7 @@ async function runEcsTask(task, options, state) {
|
|
|
21172
21222
|
autoRemappedContainerPorts = new Set(remapKeys.map(Number));
|
|
21173
21223
|
}
|
|
21174
21224
|
}
|
|
21225
|
+
const mergedAddHostFlags = mergeHostGatewayAddHostFlags(options.addHostFlags, options.hostGatewayExtraHosts);
|
|
21175
21226
|
const dockerCmds = /* @__PURE__ */ new Map();
|
|
21176
21227
|
for (const container of task.containers) {
|
|
21177
21228
|
const image = imagePlan.get(container.name);
|
|
@@ -21193,7 +21244,7 @@ async function runEcsTask(task, options, state) {
|
|
|
21193
21244
|
...effectiveHostPortOverrides ? { hostPortOverrides: effectiveHostPortOverrides } : {},
|
|
21194
21245
|
...autoRemappedContainerPorts ? { autoRemappedContainerPorts } : {},
|
|
21195
21246
|
...options.ephemeralPublishContainerPorts && options.ephemeralPublishContainerPorts.length > 0 ? { ephemeralPublishContainerPorts: options.ephemeralPublishContainerPorts } : {},
|
|
21196
|
-
...
|
|
21247
|
+
...mergedAddHostFlags.length > 0 ? { addHostFlags: mergedAddHostFlags } : {},
|
|
21197
21248
|
...(options.networkAliasesByContainer?.get(container.name)?.length ?? 0) > 0 ? { networkAliases: options.networkAliasesByContainer.get(container.name) } : {},
|
|
21198
21249
|
...options.profileCredentialsFile && { profileCredentialsFile: options.profileCredentialsFile }
|
|
21199
21250
|
});
|
|
@@ -26477,6 +26528,8 @@ async function resolveServiceAndRunnerOpts(boot, stacks, options, discovery, ski
|
|
|
26477
26528
|
containerPath: profileCredsFile.containerPath,
|
|
26478
26529
|
profileName: profileCredsFile.profileName
|
|
26479
26530
|
};
|
|
26531
|
+
const hostGatewayExtraHosts = await resolveHostGatewayExtraHosts();
|
|
26532
|
+
if (hostGatewayExtraHosts.length > 0) taskOpts.hostGatewayExtraHosts = hostGatewayExtraHosts;
|
|
26480
26533
|
if (opts.imageOverrideTag !== void 0) {
|
|
26481
26534
|
const essential = service.task.containers.find((c) => c.essential) ?? service.task.containers[0];
|
|
26482
26535
|
if (essential) taskOpts.imageOverrideByContainer = new Map([[essential.name, opts.imageOverrideTag]]);
|
|
@@ -26856,7 +26909,7 @@ async function assumeTaskRole$1(roleArn, region, profile) {
|
|
|
26856
26909
|
* site-level binding test that locks the `--from-cfn-stack` SSM-parameter
|
|
26857
26910
|
* resolution call (issue #94).
|
|
26858
26911
|
*/
|
|
26859
|
-
async function buildEcsImageResolutionContext$1(target, stacks, options, stateProvider) {
|
|
26912
|
+
async function buildEcsImageResolutionContext$1(target, stacks, options, stateProvider, opts = {}) {
|
|
26860
26913
|
const logger = getLogger();
|
|
26861
26914
|
const candidate = pickCandidateStack$1(parseEcsTarget(target).stackPattern, stacks);
|
|
26862
26915
|
if (!candidate) return void 0;
|
|
@@ -26896,8 +26949,11 @@ async function buildEcsImageResolutionContext$1(target, stacks, options, statePr
|
|
|
26896
26949
|
if (Object.keys(ssmParameters.values).length > 0) ctx.stateParameters = ssmParameters.values;
|
|
26897
26950
|
if (ssmParameters.secureStringLogicalIds.length > 0) ctx.stateSensitiveParameters = ssmParameters.secureStringLogicalIds;
|
|
26898
26951
|
}
|
|
26899
|
-
} else if (!stateProvider && needs.needsStateResources)
|
|
26900
|
-
|
|
26952
|
+
} else if (!stateProvider && needs.needsStateResources) {
|
|
26953
|
+
if (!opts.suppressStateWarning) logger.warn("Container Image references a same-stack AWS::ECR::Repository. Pass a state-source flag (e.g. --from-cfn-stack or a host-provided extension) to substitute the deployed repository URI.");
|
|
26954
|
+
} else if (!stateProvider && needs.needsEnvOrSecretSubstitution) {
|
|
26955
|
+
if (!opts.suppressStateWarning) logger.warn("Container Environment / Secrets entries contain CloudFormation intrinsics. Pass a state-source flag (e.g. --from-cfn-stack or a host-provided extension) to substitute them against the deployed state.");
|
|
26956
|
+
}
|
|
26901
26957
|
return ctx;
|
|
26902
26958
|
}
|
|
26903
26959
|
function pickCandidateStack$1(stackPattern, stacks) {
|
|
@@ -27070,7 +27126,7 @@ async function resolveAndBuildImageOverrides(args) {
|
|
|
27070
27126
|
let imageContext;
|
|
27071
27127
|
let service;
|
|
27072
27128
|
try {
|
|
27073
|
-
imageContext = await buildEcsImageResolutionContext$1(target, stacks, options, stateProvider);
|
|
27129
|
+
imageContext = await buildEcsImageResolutionContext$1(target, stacks, options, stateProvider, { suppressStateWarning: true });
|
|
27074
27130
|
service = resolveEcsServiceTarget(target, stacks, imageContext, { suppressLoadBalancerWarning: true });
|
|
27075
27131
|
} catch (err) {
|
|
27076
27132
|
logger.debug(`--image-override peek failed for '${target}': ${err instanceof Error ? err.message : String(err)}.`);
|
|
@@ -27361,6 +27417,8 @@ async function localRunTaskCommand(target, options, extraStateProviders) {
|
|
|
27361
27417
|
if (!options.detach) runOpts.onReady = () => {
|
|
27362
27418
|
logger.info(`Task running (family=${task.family}); streaming container logs. Stop with Ctrl-C.`);
|
|
27363
27419
|
};
|
|
27420
|
+
const hostGatewayExtraHosts = await resolveHostGatewayExtraHosts();
|
|
27421
|
+
if (hostGatewayExtraHosts.length > 0) runOpts.hostGatewayExtraHosts = hostGatewayExtraHosts;
|
|
27364
27422
|
const result = await runEcsTask(task, runOpts, state);
|
|
27365
27423
|
if (options.detach) {
|
|
27366
27424
|
logger.info(`Task containers started in detached mode; ${getEmbedConfig().binaryName} is exiting.`);
|
|
@@ -37694,5 +37752,5 @@ function addStudioSpecificOptions(cmd) {
|
|
|
37694
37752
|
}
|
|
37695
37753
|
|
|
37696
37754
|
//#endregion
|
|
37697
|
-
export { applyEdgeResponseResult as $, buildJwksUrlFromIssuer as $n,
|
|
37698
|
-
//# sourceMappingURL=local-studio-
|
|
37755
|
+
export { applyEdgeResponseResult as $, buildJwksUrlFromIssuer as $n, resolveCfnStackName as $r, buildCloudMapIndex as $t, startAgentCoreHttpServer as A, resolveProfileCredentials as Ai, classifySourceChange as An, ConnectionRegistry as Ar, addRunTaskSpecificOptions as At, idFromArn as B, buildStageMap as Bn, resolveRuntimeFileExtension as Br, resolveEcsAssumeRoleOption as Bt, addListSpecificOptions as C, resolveAgentCoreTarget as Ci, waitForAgentCorePing as Cn, tryParseStatus as Cr, parseLbPortOverrides as Ct, createLocalStartAgentCoreCommand as D, tryResolveImageFnJoin as Di, computeCodeImageTag as Dn, probeHostGatewaySupport as Dr, addStartServiceSpecificOptions as Dt, addStartAgentCoreSpecificOptions as E, substituteImagePlaceholders as Ei, buildAgentCoreCodeImage as En, HOST_GATEWAY_MIN_VERSION as Er, resolveAlbFrontDoor as Et, createLocalStartCloudFrontCommand as F, createWatchPredicates as Fn, buildDisconnectEvent as Fr, addImageOverrideOptions as Ft, classifyS3Error as G, filterRoutesByApiIdentifiers as Gn, substituteEnvVarsFromState as Gr, enforceImageOverrideOrphans as Gt, createDeployedKvsDataSource as H, resolveEnvVars$1 as Hn, EcsTaskResolutionError as Hr, runEcsServiceEmulator as Ht, normalizeKvsFileKeys as I, resolveApiTargetSubset as In, buildMessageEvent as Ir, buildEcsImageResolutionContext$1 as It, startCloudFrontServer as J, startApiServer as Jn, createLocalStateProvider as Jr, resolveImageOverrides as Jt, createS3OriginReader as K, groupRoutesByServer as Kn, substituteEnvVarsFromStateAsync as Kr, mergeForService as Kt, parseKvsFileOverrides as L, createAuthorizerCache as Ln, architectureToPlatform as Lr, ecsClusterOption as Lt, startAgentCoreWsBridge as M, createLocalInvokeCommand as Mn, handleConnectionsRequest as Mr, MAX_TASKS_SUBNET_RANGE_CAP as Mt, LocalStartCloudFrontError as N, addStartApiSpecificOptions as Nn, parseConnectionsPath as Nr, addCommonEcsServiceOptions as Nt, buildAgentCoreServeAuthCheck as O, LocalInvokeBuildError as Oi, renderCodeDockerfile as On, resolveHostGatewayExtraHosts as Or, createLocalStartServiceCommand as Ot, addStartCloudFrontSpecificOptions as P, createLocalStartApiCommand as Pn, buildConnectEvent as Pr, addEcsAssumeRoleOptions as Pt, applyEdgeRequestResult as Q, buildCognitoJwksUrl as Qn, resolveCfnRegion as Qr, listPinnedTargets as Qt, parseOriginOverrides as R, createFileWatcher as Rn, buildContainerImage as Rr, parseMaxTasks as Rt, StudioEventBus as S, pickAgentCoreCandidateStack as Si, waitForAgentCoreHttpReady as Sn, selectIntegrationResponse as Sr, createLocalStartAlbCommand as St, formatTargetListing as T, formatStateRemedy as Ti, SUPPORTED_CODE_RUNTIMES as Tn, HOST_DOCKER_INTERNAL_GATEWAY as Tr, isApplicationLoadBalancer as Tt, resolveDeployedKvsArnByName as U, availableApiIdentifiers as Un, substituteAgainstState as Ur, ImageOverrideError as Ut, resolveKvsModulesForDistribution as V, materializeLayerFromArn as Vn, resolveRuntimeImage as Vr, resolveSharedSidecarCredentials as Vt, resolveDeployedOriginBucket as W, filterRoutesByApiIdentifier as Wn, substituteAgainstStateAsync as Wr, buildImageOverrideTag as Wt, serveFromStaticOrigin as X, resolveServiceIntegrationParameters as Xn, rejectExplicitCfnStackWithMultipleStacks as Xr, describePinnedImageUri as Xt, resolveErrorResponseCandidates as Y, resolveSelectionExpression as Yn, isCfnFlagPresent as Yr, runImageOverrideBuilds as Yt, serveLambdaUrlOrigin as Z, defaultCredentialsLoader as Zn, resolveCfnFallbackRegion as Zr, isLocalCdkAssetImage as Zt, filterStudioTargetGroups as _, AGENTCORE_AGUI_PROTOCOL as _i, parseSseForJsonRpc as _n, applyAuthorizerOverlay as _r, createCloudFrontModule as _t, createLocalStudioCommand as a, countTargets as ai, attachContainerLogStreamer as an, computeRequestIdentityHash as ar, describeS3OriginDomain as at, renderStudioHtml as b, AGENTCORE_RUNTIME_TYPE as bi, AGENTCORE_SESSION_ID_HEADER as bn, evaluateResponseParameters as br, addAlbSpecificOptions as bt, startStudioProxy as c, discoverWebSocketApis as ci, bridgeAgentCoreWs as cn, invokeTokenAuthorizer as cr, pickFunctionUrlLogicalIdFromOrigin as ct, createStudioDispatcher as d, parseSelectionExpressionPath as di, A2A_PATH as dn, buildCorsConfigByApiId as dr, pickTargetFunctionLogicalId as dt, CfnLocalStateProvider as ei, CloudMapRegistry as en, createJwksCache as er, buildEdgeRequestEvent as et, filterStudioCustomResources as f, webSocketApiMatchesIdentifier as fi, a2aInvokeOnce as fn, buildCorsConfigFromCloudFrontChain as fr, resolveCloudFrontDistribution as ft, annotatePinnedEcsTargets as g, AGENTCORE_A2A_PROTOCOL as gi, mcpInvokeOnce as gn, translateLambdaResponse as gr, stripCloudFrontImport as gt, annotateEcsTaskPinnedTargets as h, resolveLambdaArnIntrinsic as hi, MCP_PROTOCOL_VERSION as hn, matchRoute as hr, runViewerResponse as ht, coerceStopRequest as i, resolveSingleTarget as ii, getContainerNetworkIp as in, buildMethodArn as ir, CLOUDFRONT_DISTRIBUTION_TYPE as it, attachAgentCoreWsBridge as j, addInvokeSpecificOptions as jn, buildMgmtEndpointEnvUrl as jr, createLocalRunTaskCommand as jt, selectServeInboundAuth as k, buildStsClientConfig as ki, toCmdArgv as kn, bufferToBody as kr, serviceStrategy as kt, relayServeRequest as l, discoverWebSocketApisOrThrow as li, invokeAgentCoreWs as ln, attachAuthorizers as lr, pickKvsLogicalIdFromArn as lt, annotateAlbPinnedBackingServices as m, pickRefLogicalId as mi, MCP_PATH as mn, matchPreflight as mr, runViewerRequest as mt, coerceRunRequest as n, resolveSsmParameters as ni, SOFT_RELOAD_COMPLETION_LOG_SUFFIX as nn, verifyJwtAuthorizer as nr, edgeHeadersToHttp as nt, resolveServeBaseUrl as o, listTargets as oi, addInvokeAgentCoreSpecificOptions as on, evaluateCachedLambdaPolicy as or, extractKvsAssociations as ot, isCustomResourceLambdaTarget as p, discoverRoutes as pi, MCP_CONTAINER_PORT as pn, isFunctionUrlOacFronted as pr, compileCloudFrontFunction as pt, matchBehavior as q, readMtlsMaterialsFromDisk as qn, LocalStateSourceError as qr, parseImageOverrideFlags as qt, coerceServeRequest as r, resolveWatchConfig as ri, setShadowReadyTimeoutMs as rn, verifyJwtViaDiscovery as rr, httpHeadersToEdge as rt, createStudioServeManager as s, availableWebSocketApiIdentifiers as si, createLocalInvokeAgentCoreCommand as sn, invokeRequestAuthorizer as sr, isCloudFrontDistribution as st, addStudioSpecificOptions as t, collectSsmParameterRefs as ti, DEFAULT_SHADOW_READY_TIMEOUT_MS as tn, verifyCognitoJwt as tr, buildEdgeResponseEvent as tt, reinvoke as u, filterWebSocketApisByIdentifiers as ui, A2A_CONTAINER_PORT as un, applyCorsResponseHeaders as ur, pickLambdaEdgeFunctionLogicalId as ut, startStudioServer as v, AGENTCORE_HTTP_PROTOCOL as vi, AGENTCORE_SIGV4_SERVICE as vn, buildHttpApiV2Event as vr, createLocalFileKvsDataSource as vt, createLocalListCommand as w, derivePseudoParametersFromRegion as wi, downloadAndExtractS3Bundle as wn, VtlEvaluationError as wr, resolveAlbTarget as wt, createStudioStore as x, AgentCoreResolutionError as xi, invokeAgentCore as xn, pickResponseTemplate as xr, albStrategy as xt, toStudioTargetGroups as y, AGENTCORE_MCP_PROTOCOL as yi, signAgentCoreInvocation as yn, buildRestV1Event as yr, createUnboundCloudFrontModule as yt, resolveCloudFrontTarget as z, attachStageContext as zn, resolveRuntimeCodeMountPath as zr, parseRestartPolicy as zt };
|
|
37756
|
+
//# sourceMappingURL=local-studio-CwyvulUm.js.map
|