cdk-local 0.161.2 → 0.162.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/dist/cli.js +2 -2
- package/dist/{docker-runner-D9E9mLH-.js → docker-runner-CLlVjU7l.js} +87 -5
- package/dist/{docker-runner-D9E9mLH-.js.map → docker-runner-CLlVjU7l.js.map} +1 -1
- package/dist/index.js +1 -1
- package/dist/internal.d.ts +43 -26
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +3 -3
- package/dist/local-studio-BVVcAPV8.d.ts.map +1 -1
- package/dist/{local-studio-CVy7mUW9.js → local-studio-D8eIrFzx.js} +160 -64
- package/dist/{local-studio-CVy7mUW9.js.map → local-studio-D8eIrFzx.js.map} +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as displayIdent, c as getEmbedConfig, i as STACK_REF_MAX_CODE_POINTS, o as displayStackName, s as displayToolOutput, t as getLogger, u as setEmbedConfig } from "./logger-Co5XVwco.js";
|
|
2
2
|
import { C as effectiveLoopbackPorts, G as isWildcardHostname, H as proxyAwareFetch, J as hostFromAuthority, K as formatAuthority, P as resolveHostDefaultCredentials, W as isLoopbackHostname, b as awsEmulatorEnvName, d as workloadStsClientConfig, l as warnWorkloadCredentialsStripped, n as accountLookupStsClientConfig, q as formatHostForAuthority, r as applyWorkloadEnvCredentials, u as workloadClientConfig, v as activateWorkloadAwsWiring, w as getActiveWorkloadAwsWiring, y as applyWorkloadAwsWiringToEnv, z as buildProxyClientConfig } from "./workload-identity-ITM3p2Ed.js";
|
|
3
3
|
import { c as clampErrorName, d as flattenToOneLine, f as isAwsServiceException, l as describeAwsFailureForWarn, m as stringifyThrown, o as renderAssemblyPathEscape, p as sanitizeServiceExceptionMessage, r as displayUntrustedValue, s as resolveAssemblyPath, t as absoluteAssemblyPathEscape, u as describeCredentialLoadFailure } from "./assembly-path-R96uhMm1.js";
|
|
4
|
-
import {
|
|
4
|
+
import { $ as buildStsClientConfig, A as buildDockerImage, B as InteractiveTtyRequiredError, D as isImageInLocalCache, E as warnIfEmulatedPlatform, F as derivePseudoParametersFromRegion, G as withErrorHandling, H as LocalStartServiceError, I as formatStateRemedy, J as applyRoleArnIfSet, K as defineOwnKey, L as substituteImagePlaceholders, M as describeExitWithoutArgv, N as parseEcrRegistryHost, O as parseEcrUri, P as derivePartitionAndUrlSuffix, Q as refusedRoleArnMessage, R as tryResolveImageFnJoin, T as buildContainerImage, U as RouteDiscoveryError, V as LocalInvokeBuildError, W as TargetSelectionCancelledError, X as describeRejectedRoleArn, Y as assumeRoleCredentials, Z as isIamRoleArn, a as describeRefusedSensitiveEnvKeys, c as execEnvForSecrets, d as rememberForwardedPorts, et as resolveProfileCredentials, f as removeContainer, h as streamLogs, i as attachLoopbackForwarder, j as resolveAssetSourcePath, k as pullEcrImage, l as pickFreePort, m as startNamespaceOwnerForwarder, n as SENSITIVE_ENV_KEYS, p as runDetached, q as AssumeRoleFailure, r as appendEnvFlags, s as ensureDockerAvailable, t as DockerRunnerError, u as pullImage, w as architectureToPlatform, z as CdkLocalError } from "./docker-runner-CLlVjU7l.js";
|
|
5
5
|
import { a as isDockerClientEnvKey, c as runDockerStreaming, i as getDockerCmd, n as finchSecretArgvRefusal, o as isMalformedEnvKey, u as warnFinchArgvExposure } from "./docker-cmd-Cjg3jGYF.js";
|
|
6
6
|
import { chmodSync, cpSync, createWriteStream, existsSync, lstatSync, mkdirSync, mkdtempSync, promises, readFileSync, readdirSync, readlinkSync, realpathSync, rmSync, statSync, symlinkSync, unlinkSync, writeFileSync } from "node:fs";
|
|
7
7
|
import { Command, InvalidArgumentError, Option } from "commander";
|
|
@@ -14929,7 +14929,8 @@ function createEcsRunState() {
|
|
|
14929
14929
|
dockerVolumeNames: [],
|
|
14930
14930
|
startedContainers: [],
|
|
14931
14931
|
logStoppers: [],
|
|
14932
|
-
publishedEndpoints: []
|
|
14932
|
+
publishedEndpoints: [],
|
|
14933
|
+
forwarders: []
|
|
14933
14934
|
};
|
|
14934
14935
|
}
|
|
14935
14936
|
async function cleanupEcsRun(state, options) {
|
|
@@ -14940,6 +14941,8 @@ async function cleanupEcsRun(state, options) {
|
|
|
14940
14941
|
logger.debug(`log stream stop failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
14941
14942
|
}
|
|
14942
14943
|
state.logStoppers = [];
|
|
14944
|
+
await removeForwarders((state.forwarders ?? []).filter((f) => !f.joined));
|
|
14945
|
+
state.forwarders = (state.forwarders ?? []).filter((f) => f.joined);
|
|
14943
14946
|
if (!options.keepRunning) {
|
|
14944
14947
|
for (const c of state.startedContainers) {
|
|
14945
14948
|
try {
|
|
@@ -14954,6 +14957,8 @@ async function cleanupEcsRun(state, options) {
|
|
|
14954
14957
|
}
|
|
14955
14958
|
}
|
|
14956
14959
|
state.startedContainers = [];
|
|
14960
|
+
await removeForwarders(state.forwarders);
|
|
14961
|
+
state.forwarders = [];
|
|
14957
14962
|
}
|
|
14958
14963
|
if (state.network && !state.network.ownedByCaller) await destroyTaskNetwork(state.network);
|
|
14959
14964
|
state.network = void 0;
|
|
@@ -14969,6 +14974,9 @@ async function cleanupEcsRun(state, options) {
|
|
|
14969
14974
|
}
|
|
14970
14975
|
state.dockerVolumeNames = [];
|
|
14971
14976
|
}
|
|
14977
|
+
async function removeForwarders(forwarders) {
|
|
14978
|
+
for (const f of forwarders) await removeContainer(f.id || f.name);
|
|
14979
|
+
}
|
|
14972
14980
|
function mergeHostGatewayAddHostFlags(addHostFlags, hostGatewayExtraHosts) {
|
|
14973
14981
|
return [...addHostFlags ?? [], ...(hostGatewayExtraHosts ?? []).flatMap((h) => ["--add-host", `${h.host}:${h.ip}`])];
|
|
14974
14982
|
}
|
|
@@ -15106,7 +15114,8 @@ async function runEcsTask(task, options, state) {
|
|
|
15106
15114
|
dockerCmds.set(container.name, {
|
|
15107
15115
|
args: built.args,
|
|
15108
15116
|
sensitiveEnv: built.sensitiveEnv,
|
|
15109
|
-
loopbackPorts: built.loopbackPorts
|
|
15117
|
+
loopbackPorts: built.loopbackPorts,
|
|
15118
|
+
...built.forwarder ? { forwarder: built.forwarder } : {}
|
|
15110
15119
|
});
|
|
15111
15120
|
if (built.collisions.length > 0) logger.warn(describeRefusedSensitiveEnvKeys(`Container ${displayUntrustedValue(container.name)}`, built.collisions));
|
|
15112
15121
|
for (const ep of built.publishedEndpoints) state.publishedEndpoints.push(ep);
|
|
@@ -15115,9 +15124,31 @@ async function runEcsTask(task, options, state) {
|
|
|
15115
15124
|
for (const containerName of startOrder) {
|
|
15116
15125
|
const container = task.containers.find((c) => c.name === containerName);
|
|
15117
15126
|
await awaitDependencies(container, startedByName);
|
|
15118
|
-
const
|
|
15119
|
-
const
|
|
15120
|
-
|
|
15127
|
+
const cmd = dockerCmds.get(container.name);
|
|
15128
|
+
const { sensitiveEnv, loopbackPorts } = cmd;
|
|
15129
|
+
let args = cmd.args;
|
|
15130
|
+
const wiring = getActiveWorkloadAwsWiring();
|
|
15131
|
+
let joined;
|
|
15132
|
+
if (cmd.forwarder && wiring && loopbackPorts.length > 0) {
|
|
15133
|
+
const fwd = cmd.forwarder;
|
|
15134
|
+
const fwdId = await startNamespaceOwnerForwarder({
|
|
15135
|
+
name: fwd.name,
|
|
15136
|
+
namespace: fwd.namespace,
|
|
15137
|
+
ports: loopbackPorts,
|
|
15138
|
+
wiring,
|
|
15139
|
+
workloadLabel: `container ${displayIdent(container.name)}`
|
|
15140
|
+
});
|
|
15141
|
+
if (fwdId !== void 0) {
|
|
15142
|
+
joined = {
|
|
15143
|
+
containerName: container.name,
|
|
15144
|
+
name: fwd.name,
|
|
15145
|
+
id: fwdId,
|
|
15146
|
+
joined: false
|
|
15147
|
+
};
|
|
15148
|
+
state.forwarders.push(joined);
|
|
15149
|
+
args = fwd.args;
|
|
15150
|
+
}
|
|
15151
|
+
}
|
|
15121
15152
|
logger.info(`Starting container ${displayIdent(container.name)} (image=${displayIdent(imagePlan.get(container.name))})`);
|
|
15122
15153
|
let id;
|
|
15123
15154
|
warnFinchArgvExposure(Object.keys(sensitiveEnv));
|
|
@@ -15135,12 +15166,12 @@ async function runEcsTask(task, options, state) {
|
|
|
15135
15166
|
name: container.name,
|
|
15136
15167
|
id
|
|
15137
15168
|
});
|
|
15169
|
+
if (joined) joined.joined = true;
|
|
15170
|
+
else if (wiring) rememberForwardedPorts(id, wiring, loopbackPorts);
|
|
15138
15171
|
startedByName.set(container.name, {
|
|
15139
15172
|
id,
|
|
15140
15173
|
container
|
|
15141
15174
|
});
|
|
15142
|
-
const wiring = getActiveWorkloadAwsWiring();
|
|
15143
|
-
if (wiring) await attachLoopbackForwarder(id, wiring, loopbackPorts);
|
|
15144
15175
|
if (!options.detach) state.logStoppers.push(attachContainerLogStreamer(`[${displayIdent(container.name)}] `, id));
|
|
15145
15176
|
}
|
|
15146
15177
|
if (options.detach) return {
|
|
@@ -15419,23 +15450,42 @@ async function resolvePrivilegedHostPortRemaps(opts) {
|
|
|
15419
15450
|
function buildDockerRunArgs(opts) {
|
|
15420
15451
|
const { task, container, image, network, volumeByName, secrets, containerHost, roleArn } = opts;
|
|
15421
15452
|
const args = ["run", "-d"];
|
|
15453
|
+
const joinArgs = ["run", "-d"];
|
|
15454
|
+
const both = (...xs) => {
|
|
15455
|
+
args.push(...xs);
|
|
15456
|
+
joinArgs.push(...xs);
|
|
15457
|
+
};
|
|
15458
|
+
const ownerAliases = [];
|
|
15459
|
+
const ownerPublish = [];
|
|
15460
|
+
const ownerAddHosts = [];
|
|
15461
|
+
const ownerLinks = [];
|
|
15422
15462
|
const publishedEndpoints = [];
|
|
15423
|
-
|
|
15463
|
+
const dockerName = `${getEmbedConfig().resourceNamePrefix}-${task.family}-${container.name}-${randHex(3)}`;
|
|
15464
|
+
const forwarderName = `${dockerName}-awsfwd`;
|
|
15465
|
+
both("--name", dockerName);
|
|
15424
15466
|
args.push("--network", network);
|
|
15425
|
-
|
|
15467
|
+
joinArgs.push("--network", `container:${forwarderName}`);
|
|
15468
|
+
if (!opts.omitContainerNameAlias) {
|
|
15469
|
+
args.push("--network-alias", container.name);
|
|
15470
|
+
ownerAliases.push(container.name);
|
|
15471
|
+
}
|
|
15426
15472
|
if (opts.networkAliases && opts.networkAliases.length > 0) {
|
|
15427
15473
|
const seen = /* @__PURE__ */ new Set([container.name]);
|
|
15428
15474
|
for (const a of opts.networkAliases) if (!seen.has(a)) {
|
|
15429
15475
|
args.push("--network-alias", a);
|
|
15476
|
+
ownerAliases.push(a);
|
|
15430
15477
|
seen.add(a);
|
|
15431
15478
|
}
|
|
15432
15479
|
}
|
|
15433
|
-
if (opts.addHostFlags && opts.addHostFlags.length > 0)
|
|
15480
|
+
if (opts.addHostFlags && opts.addHostFlags.length > 0) {
|
|
15481
|
+
for (const f of opts.addHostFlags) args.push(f);
|
|
15482
|
+
for (let i = 0; i + 1 < opts.addHostFlags.length; i++) if (opts.addHostFlags[i] === "--add-host") ownerAddHosts.push(opts.addHostFlags[++i]);
|
|
15483
|
+
}
|
|
15434
15484
|
let resolvedPlatform;
|
|
15435
15485
|
if (opts.platformOverride) resolvedPlatform = opts.platformOverride;
|
|
15436
15486
|
else if (task.runtimePlatform) resolvedPlatform = task.runtimePlatform.cpuArchitecture === "ARM64" ? "linux/arm64" : "linux/amd64";
|
|
15437
15487
|
if (resolvedPlatform) {
|
|
15438
|
-
|
|
15488
|
+
both("--platform", resolvedPlatform);
|
|
15439
15489
|
warnIfEmulatedPlatform(resolvedPlatform, { label: `${task.family}/${container.name}` });
|
|
15440
15490
|
}
|
|
15441
15491
|
const ephemeralPorts = new Set(opts.ephemeralPublishContainerPorts ?? []);
|
|
@@ -15446,7 +15496,9 @@ function buildDockerRunArgs(opts) {
|
|
|
15446
15496
|
const overridden = hostPort !== declaredHostPort;
|
|
15447
15497
|
const overrideNote = opts.autoRemappedContainerPorts?.has(pm.containerPort) ?? false ? " (privileged-port auto-remap)" : overridden ? " (--host-port override)" : "";
|
|
15448
15498
|
getLogger().child("ecs").info(`Container ${displayIdent(container.name)} container port ${pm.containerPort} published on ${formatAuthority(containerHost, hostPort)}${overrideNote}. Reach it at ${formatAuthority(containerHost, hostPort)}.`);
|
|
15449
|
-
|
|
15499
|
+
const publish = `${containerHost}:${hostPort}:${pm.containerPort}/${pm.protocol}`;
|
|
15500
|
+
args.push("-p", publish);
|
|
15501
|
+
ownerPublish.push(publish);
|
|
15450
15502
|
publishedEndpoints.push({
|
|
15451
15503
|
containerName: container.name,
|
|
15452
15504
|
containerPort: pm.containerPort,
|
|
@@ -15461,24 +15513,26 @@ function buildDockerRunArgs(opts) {
|
|
|
15461
15513
|
for (const pm of container.portMappings) {
|
|
15462
15514
|
if (!ephemeralPorts.has(pm.containerPort) || alreadyEphemeral.has(pm.containerPort)) continue;
|
|
15463
15515
|
alreadyEphemeral.add(pm.containerPort);
|
|
15464
|
-
|
|
15516
|
+
const publish = `${containerHost}::${pm.containerPort}/${pm.protocol}`;
|
|
15517
|
+
args.push("-p", publish);
|
|
15518
|
+
ownerPublish.push(publish);
|
|
15465
15519
|
}
|
|
15466
15520
|
}
|
|
15467
15521
|
const wiring = getActiveWorkloadAwsWiring();
|
|
15468
15522
|
const profileCredentialsFile = wiring?.mode === "emulator" ? void 0 : opts.profileCredentialsFile;
|
|
15469
|
-
if (profileCredentialsFile)
|
|
15470
|
-
for (const m of wiring?.mounts ?? []) if (!container.mountPoints.some((mp) => mp.containerPath === m.containerPath))
|
|
15523
|
+
if (profileCredentialsFile) both("-v", `${profileCredentialsFile.hostPath}:${profileCredentialsFile.containerPath}:ro`);
|
|
15524
|
+
for (const m of wiring?.mounts ?? []) if (!container.mountPoints.some((mp) => mp.containerPath === m.containerPath)) both("-v", `${m.hostPath}:${m.containerPath}:ro`);
|
|
15471
15525
|
for (const mp of container.mountPoints) {
|
|
15472
15526
|
const v = volumeByName.get(mp.sourceVolume);
|
|
15473
15527
|
if (!v) continue;
|
|
15474
15528
|
if (v.kind === "host") if (v.hostPath) {
|
|
15475
15529
|
const ro = mp.readOnly ? ":ro" : "";
|
|
15476
|
-
|
|
15477
|
-
} else
|
|
15530
|
+
both("-v", `${v.hostPath}:${mp.containerPath}${ro}`);
|
|
15531
|
+
} else both("-v", mp.containerPath);
|
|
15478
15532
|
else {
|
|
15479
15533
|
const name = v.dockerVolumeName ?? v.name;
|
|
15480
15534
|
const ro = mp.readOnly ? ":ro" : "";
|
|
15481
|
-
|
|
15535
|
+
both("-v", `${name}:${mp.containerPath}${ro}`);
|
|
15482
15536
|
}
|
|
15483
15537
|
}
|
|
15484
15538
|
let finalEnv = {};
|
|
@@ -15510,32 +15564,49 @@ function buildDockerRunArgs(opts) {
|
|
|
15510
15564
|
for (const s of container.secrets) sensitiveEnvKeys.add(s.name);
|
|
15511
15565
|
for (const n of container.droppedSecretNames ?? []) sensitiveEnvKeys.add(n);
|
|
15512
15566
|
for (const k of container.sensitiveEnvKeys) sensitiveEnvKeys.add(k);
|
|
15513
|
-
const
|
|
15514
|
-
|
|
15515
|
-
|
|
15516
|
-
if (container.
|
|
15517
|
-
if (container.
|
|
15518
|
-
|
|
15519
|
-
|
|
15567
|
+
const envFlags = [];
|
|
15568
|
+
const { passthrough: sensitiveEnv, collisions } = appendEnvFlags(envFlags, finalEnv, sensitiveEnvKeys);
|
|
15569
|
+
both(...envFlags);
|
|
15570
|
+
if (container.user) both("--user", container.user);
|
|
15571
|
+
if (container.privileged) both("--privileged");
|
|
15572
|
+
if (container.readonlyRootFilesystem) both("--read-only");
|
|
15573
|
+
if (container.workingDirectory) both("--workdir", container.workingDirectory);
|
|
15574
|
+
for (const u of container.ulimits) both("--ulimit", `${u.name}=${u.softLimit}:${u.hardLimit}`);
|
|
15575
|
+
for (const link of container.links) {
|
|
15576
|
+
args.push("--link", link);
|
|
15577
|
+
ownerLinks.push(link);
|
|
15578
|
+
}
|
|
15520
15579
|
if (container.healthCheck) {
|
|
15521
|
-
|
|
15522
|
-
if (container.healthCheck.interval !== void 0)
|
|
15523
|
-
if (container.healthCheck.timeout !== void 0)
|
|
15524
|
-
if (container.healthCheck.retries !== void 0)
|
|
15525
|
-
if (container.healthCheck.startPeriod !== void 0)
|
|
15580
|
+
both("--health-cmd", shellJoin(container.healthCheck.command));
|
|
15581
|
+
if (container.healthCheck.interval !== void 0) both("--health-interval", `${container.healthCheck.interval}s`);
|
|
15582
|
+
if (container.healthCheck.timeout !== void 0) both("--health-timeout", `${container.healthCheck.timeout}s`);
|
|
15583
|
+
if (container.healthCheck.retries !== void 0) both("--health-retries", String(container.healthCheck.retries));
|
|
15584
|
+
if (container.healthCheck.startPeriod !== void 0) both("--health-start-period", `${container.healthCheck.startPeriod}s`);
|
|
15526
15585
|
}
|
|
15527
15586
|
let entryPointTail = [];
|
|
15528
15587
|
if (container.entryPoint && container.entryPoint.length > 0) {
|
|
15529
|
-
|
|
15588
|
+
both("--entrypoint", container.entryPoint[0]);
|
|
15530
15589
|
entryPointTail = container.entryPoint.slice(1);
|
|
15531
15590
|
}
|
|
15532
|
-
|
|
15591
|
+
both(image, ...entryPointTail, ...container.command ?? []);
|
|
15592
|
+
const loopbackPorts = wiring ? effectiveLoopbackPorts(finalEnv, wiring) : [];
|
|
15533
15593
|
return {
|
|
15534
15594
|
args,
|
|
15535
15595
|
sensitiveEnv,
|
|
15536
15596
|
collisions,
|
|
15537
15597
|
publishedEndpoints,
|
|
15538
|
-
loopbackPorts
|
|
15598
|
+
loopbackPorts,
|
|
15599
|
+
...loopbackPorts.length > 0 && { forwarder: {
|
|
15600
|
+
name: forwarderName,
|
|
15601
|
+
namespace: {
|
|
15602
|
+
network,
|
|
15603
|
+
networkAliases: ownerAliases,
|
|
15604
|
+
publish: ownerPublish,
|
|
15605
|
+
addHosts: ownerAddHosts,
|
|
15606
|
+
links: ownerLinks
|
|
15607
|
+
},
|
|
15608
|
+
args: joinArgs
|
|
15609
|
+
} }
|
|
15539
15610
|
};
|
|
15540
15611
|
}
|
|
15541
15612
|
function shellJoin(parts) {
|
|
@@ -15978,6 +16049,12 @@ function containerPublishesHostPorts(container, opts) {
|
|
|
15978
16049
|
if (!opts.skipHostPortPublish) return true;
|
|
15979
16050
|
return container.portMappings.some((pm) => opts.ephemeralPublishContainerPorts.includes(pm.containerPort));
|
|
15980
16051
|
}
|
|
16052
|
+
function networkEndpointId(state, containerName, containerId) {
|
|
16053
|
+
return (state.forwarders ?? []).find((f) => f.containerName === containerName && f.joined)?.id ?? containerId;
|
|
16054
|
+
}
|
|
16055
|
+
function joinsForwarder(state, containerName) {
|
|
16056
|
+
return (state.forwarders ?? []).some((f) => f.containerName === containerName && f.joined);
|
|
16057
|
+
}
|
|
15981
16058
|
async function publishGatedReplica(service, options, instance, deadline, isShuttingDown, label = `Shadow replica r${instance.index} (gen ${instance.generation})`) {
|
|
15982
16059
|
const network = instance.state.network;
|
|
15983
16060
|
const withheld = instance.withheldAliasContainers ?? [];
|
|
@@ -15996,12 +16073,13 @@ async function publishGatedReplica(service, options, instance, deadline, isShutt
|
|
|
15996
16073
|
}
|
|
15997
16074
|
}
|
|
15998
16075
|
if (isShuttingDown()) return;
|
|
15999
|
-
const
|
|
16076
|
+
const endpoint = networkEndpointId(instance.state, name, started.id);
|
|
16077
|
+
const ip = await getContainerNetworkIp(endpoint, network.networkName);
|
|
16000
16078
|
if (!ip) throw new EcsServiceRunnerError(`${label}: no docker IP for ${displayIdent(name)} on ${network.networkName}; cannot attach its Service Connect aliases.`);
|
|
16001
16079
|
const aliases = [name];
|
|
16002
16080
|
for (const a of fullAliases.get(name) ?? []) if (!aliases.includes(a)) aliases.push(a);
|
|
16003
|
-
await dockerNetworkDisconnectImpl(network.networkName,
|
|
16004
|
-
await dockerNetworkConnectImpl(network.networkName,
|
|
16081
|
+
await dockerNetworkDisconnectImpl(network.networkName, endpoint);
|
|
16082
|
+
await dockerNetworkConnectImpl(network.networkName, endpoint, {
|
|
16005
16083
|
ip,
|
|
16006
16084
|
aliases
|
|
16007
16085
|
});
|
|
@@ -16034,7 +16112,7 @@ async function publishReplicaToCloudMap(service, instance, discovery, ownerKeyPr
|
|
|
16034
16112
|
if (!started) return;
|
|
16035
16113
|
let ip;
|
|
16036
16114
|
try {
|
|
16037
|
-
ip = await getContainerNetworkIp(started.id, networkName);
|
|
16115
|
+
ip = await getContainerNetworkIp(networkEndpointId(instance.state, started.name, started.id), networkName);
|
|
16038
16116
|
} catch (err) {
|
|
16039
16117
|
logger.warn(`Replica ${instance.index}: docker inspect failed before Cloud Map publish: ${err instanceof Error ? err.message : String(err)}`);
|
|
16040
16118
|
return;
|
|
@@ -16101,7 +16179,7 @@ async function publishReplicaToFrontDoor(service, instance, frontDoor, container
|
|
|
16101
16179
|
}
|
|
16102
16180
|
let hostPort;
|
|
16103
16181
|
try {
|
|
16104
|
-
hostPort = await getPublishedHostPort(started.id, target.targetContainerPort);
|
|
16182
|
+
hostPort = await getPublishedHostPort(networkEndpointId(instance.state, started.name, started.id), target.targetContainerPort);
|
|
16105
16183
|
} catch (err) {
|
|
16106
16184
|
logger.warn(`Replica ${instance.index}: docker inspect failed before front-door publish: ${err instanceof Error ? err.message : String(err)}`);
|
|
16107
16185
|
continue;
|
|
@@ -16244,6 +16322,8 @@ async function softReloadReplica(args) {
|
|
|
16244
16322
|
targets.push({
|
|
16245
16323
|
name: container.name,
|
|
16246
16324
|
id,
|
|
16325
|
+
endpoint: networkEndpointId(instance.state, container.name, id),
|
|
16326
|
+
joined: joinsForwarder(instance.state, container.name),
|
|
16247
16327
|
aliases,
|
|
16248
16328
|
...port !== void 0 ? { port } : {}
|
|
16249
16329
|
});
|
|
@@ -16288,12 +16368,12 @@ async function softReloadReplica(args) {
|
|
|
16288
16368
|
const plan = attachPlans.get(target.id);
|
|
16289
16369
|
if (plan && (plan.publishesHostPorts || !plan.attached)) {
|
|
16290
16370
|
if (plan.attached) {
|
|
16291
|
-
await dockerNetworkDisconnectImpl(plan.networkName,
|
|
16371
|
+
await dockerNetworkDisconnectImpl(plan.networkName, plan.endpointId);
|
|
16292
16372
|
plan.attached = false;
|
|
16293
16373
|
}
|
|
16294
|
-
await attachToSharedNetwork(
|
|
16374
|
+
await attachToSharedNetwork(plan, plan.publishesHostPorts);
|
|
16295
16375
|
}
|
|
16296
|
-
await dockerStartImpl(target.id);
|
|
16376
|
+
await dockerStartImpl(target.id, { joinedForwarder: target.joined });
|
|
16297
16377
|
} catch (err) {
|
|
16298
16378
|
throw new EcsServiceRunnerError(`softReloadReplica: docker stop / start of ${displayIdent(target.name)} (${target.id}) failed: ${err instanceof Error ? err.message : String(err)}. This replica is unregistered from Cloud Map + the front-door pool until the next save triggers another reload.`);
|
|
16299
16379
|
}
|
|
@@ -16308,9 +16388,9 @@ async function softReloadReplica(args) {
|
|
|
16308
16388
|
if (!plan || plan.aliasesAttached) continue;
|
|
16309
16389
|
if (target.port !== void 0) await waitForContainerListening(target.id, target.port, aliasDeadline);
|
|
16310
16390
|
try {
|
|
16311
|
-
await dockerNetworkDisconnectImpl(plan.networkName,
|
|
16391
|
+
await dockerNetworkDisconnectImpl(plan.networkName, plan.endpointId);
|
|
16312
16392
|
plan.attached = false;
|
|
16313
|
-
await attachToSharedNetwork(
|
|
16393
|
+
await attachToSharedNetwork(plan, true);
|
|
16314
16394
|
} catch (err) {
|
|
16315
16395
|
throw new EcsServiceRunnerError(`softReloadReplica: restoring the network aliases of ${displayIdent(target.name)} (${target.id}) failed: ${err instanceof Error ? err.message : String(err)}. This replica is unregistered from Cloud Map + the front-door pool until the next save triggers another reload.`);
|
|
16316
16396
|
}
|
|
@@ -16321,7 +16401,8 @@ async function softReloadReplica(args) {
|
|
|
16321
16401
|
instance.lastDeployedAssetHash = pickEssentialAssetHash(newService);
|
|
16322
16402
|
logger.info(`Soft-reloaded replica r${instance.index} (gen ${instance.generation}): ` + (ready ? SOFT_RELOAD_COMPLETION_LOG_SUFFIX : SOFT_RELOAD_PROBE_TIMEOUT_LOG_SUFFIX));
|
|
16323
16403
|
} catch (err) {
|
|
16324
|
-
for (const
|
|
16404
|
+
for (const plan of attachPlans.values()) {
|
|
16405
|
+
const id = plan.endpointId;
|
|
16325
16406
|
if (plan.aliasesAttached) continue;
|
|
16326
16407
|
try {
|
|
16327
16408
|
if (plan.attached) {
|
|
@@ -16329,7 +16410,7 @@ async function softReloadReplica(args) {
|
|
|
16329
16410
|
plan.attached = false;
|
|
16330
16411
|
}
|
|
16331
16412
|
try {
|
|
16332
|
-
await attachToSharedNetwork(
|
|
16413
|
+
await attachToSharedNetwork(plan, true);
|
|
16333
16414
|
} catch {
|
|
16334
16415
|
await dockerNetworkConnectImpl(plan.networkName, id, { aliases: plan.aliases });
|
|
16335
16416
|
plan.attached = true;
|
|
@@ -16374,15 +16455,16 @@ const defaultDockerStopImpl = async (containerId) => {
|
|
|
16374
16455
|
const { getDockerCmd } = await import("./docker-cmd-Cjg3jGYF.js").then((n) => n.t);
|
|
16375
16456
|
await promisify(execFile)(getDockerCmd(), ["stop", containerId]);
|
|
16376
16457
|
};
|
|
16377
|
-
const defaultDockerStartImpl = async (containerId) => {
|
|
16458
|
+
const defaultDockerStartImpl = async (containerId, opts = {}) => {
|
|
16378
16459
|
const { execFile } = await import("node:child_process");
|
|
16379
16460
|
const { promisify } = await import("node:util");
|
|
16380
16461
|
const { getDockerCmd } = await import("./docker-cmd-Cjg3jGYF.js").then((n) => n.t);
|
|
16381
16462
|
await promisify(execFile)(getDockerCmd(), ["start", containerId]);
|
|
16463
|
+
if (opts.joinedForwarder) return;
|
|
16382
16464
|
const { getActiveWorkloadAwsWiring } = await import("./workload-identity-ITM3p2Ed.js").then((n) => n.L);
|
|
16383
16465
|
const wiring = getActiveWorkloadAwsWiring();
|
|
16384
16466
|
if (wiring) {
|
|
16385
|
-
const { attachLoopbackForwarder } = await import("./docker-runner-
|
|
16467
|
+
const { attachLoopbackForwarder } = await import("./docker-runner-CLlVjU7l.js").then((n) => n.o);
|
|
16386
16468
|
await attachLoopbackForwarder(containerId, wiring);
|
|
16387
16469
|
}
|
|
16388
16470
|
};
|
|
@@ -16392,7 +16474,7 @@ async function detachFromSharedNetwork(target, networkName) {
|
|
|
16392
16474
|
const logger = getLogger().child("ecs-service");
|
|
16393
16475
|
let ip;
|
|
16394
16476
|
try {
|
|
16395
|
-
ip = await getContainerNetworkIp(target.
|
|
16477
|
+
ip = await getContainerNetworkIp(target.endpoint, networkName);
|
|
16396
16478
|
} catch {
|
|
16397
16479
|
ip = void 0;
|
|
16398
16480
|
}
|
|
@@ -16402,17 +16484,22 @@ async function detachFromSharedNetwork(target, networkName) {
|
|
|
16402
16484
|
}
|
|
16403
16485
|
let publishesHostPorts;
|
|
16404
16486
|
try {
|
|
16405
|
-
publishesHostPorts = await dockerInspectPublishesHostPortsImpl(target.
|
|
16487
|
+
publishesHostPorts = await dockerInspectPublishesHostPortsImpl(target.endpoint);
|
|
16406
16488
|
} catch {
|
|
16407
16489
|
publishesHostPorts = true;
|
|
16408
16490
|
}
|
|
16491
|
+
if (target.joined && publishesHostPorts) {
|
|
16492
|
+
logger.debug(`Soft-reload: ${displayIdent(target.name)} (${target.id}) publishes host ports through its loopback forwarder; restarting it in place without detaching its network aliases first.`);
|
|
16493
|
+
return;
|
|
16494
|
+
}
|
|
16409
16495
|
try {
|
|
16410
|
-
await dockerNetworkDisconnectImpl(networkName, target.
|
|
16496
|
+
await dockerNetworkDisconnectImpl(networkName, target.endpoint);
|
|
16411
16497
|
} catch (err) {
|
|
16412
16498
|
logger.debug(`Soft-reload: detaching ${displayIdent(target.name)} (${target.id}) from ${networkName} failed: ${err instanceof Error ? err.message : String(err)}. Restarting it in place.`);
|
|
16413
16499
|
return;
|
|
16414
16500
|
}
|
|
16415
16501
|
return {
|
|
16502
|
+
endpointId: target.endpoint,
|
|
16416
16503
|
networkName,
|
|
16417
16504
|
ip,
|
|
16418
16505
|
aliases: target.aliases,
|
|
@@ -16425,16 +16512,19 @@ const DEFAULT_RELOAD_DRAIN_MS = 1e3;
|
|
|
16425
16512
|
let reloadDrainMs = DEFAULT_RELOAD_DRAIN_MS;
|
|
16426
16513
|
async function reattachForDrain(plans) {
|
|
16427
16514
|
let any = false;
|
|
16428
|
-
for (const
|
|
16429
|
-
|
|
16430
|
-
|
|
16431
|
-
|
|
16432
|
-
|
|
16515
|
+
for (const plan of plans.values()) {
|
|
16516
|
+
const id = plan.endpointId;
|
|
16517
|
+
try {
|
|
16518
|
+
await attachToSharedNetwork(plan, false);
|
|
16519
|
+
any = true;
|
|
16520
|
+
} catch (err) {
|
|
16521
|
+
getLogger().child("ecs-service").debug(`Soft-reload: drain re-attach of ${id} to ${plan.networkName} failed: ${err instanceof Error ? err.message : String(err)}. Stopping it without a drain.`);
|
|
16522
|
+
}
|
|
16433
16523
|
}
|
|
16434
16524
|
return any;
|
|
16435
16525
|
}
|
|
16436
|
-
async function attachToSharedNetwork(
|
|
16437
|
-
await dockerNetworkConnectImpl(plan.networkName,
|
|
16526
|
+
async function attachToSharedNetwork(plan, withAliases) {
|
|
16527
|
+
await dockerNetworkConnectImpl(plan.networkName, plan.endpointId, {
|
|
16438
16528
|
ip: plan.ip,
|
|
16439
16529
|
aliases: withAliases ? plan.aliases : []
|
|
16440
16530
|
});
|
|
@@ -16471,12 +16561,12 @@ async function disconnectOldFromSharedNetwork(oldInstance, opts = {}) {
|
|
|
16471
16561
|
const network = oldInstance.state.network;
|
|
16472
16562
|
if (!network || !network.ownedByCaller) return;
|
|
16473
16563
|
const networkName = network.networkName;
|
|
16564
|
+
const targets = [...new Set(oldInstance.state.startedContainers.map((c) => networkEndpointId(oldInstance.state, c.name, c.id)))];
|
|
16474
16565
|
const drainIps = /* @__PURE__ */ new Map();
|
|
16475
|
-
if (opts.drain) for (const
|
|
16476
|
-
const ip = await getContainerNetworkIp(
|
|
16477
|
-
if (ip) drainIps.set(
|
|
16566
|
+
if (opts.drain) for (const id of targets) {
|
|
16567
|
+
const ip = await getContainerNetworkIp(id, networkName).catch(() => void 0);
|
|
16568
|
+
if (ip) drainIps.set(id, ip);
|
|
16478
16569
|
}
|
|
16479
|
-
const targets = oldInstance.state.startedContainers.map((c) => c.id);
|
|
16480
16570
|
for (const id of targets) try {
|
|
16481
16571
|
await dockerNetworkDisconnectImpl(networkName, id);
|
|
16482
16572
|
} catch (err) {}
|
|
@@ -16541,7 +16631,7 @@ async function waitForReplicaTcpReady(service, replica, opts) {
|
|
|
16541
16631
|
} else {
|
|
16542
16632
|
if (ip === void 0) {
|
|
16543
16633
|
try {
|
|
16544
|
-
ip = await getContainerNetworkIp(started.id, networkName);
|
|
16634
|
+
ip = await getContainerNetworkIp(networkEndpointId(replica.state, started.name, started.id), networkName);
|
|
16545
16635
|
} catch (err) {
|
|
16546
16636
|
logger.warn(`${label}: TCP-ready probe could not resolve docker IP: ${err instanceof Error ? err.message : String(err)}. Proceeding.`);
|
|
16547
16637
|
return "not-ready";
|
|
@@ -20110,6 +20200,12 @@ async function localRunTaskCommand(target, options, extraStateProviders) {
|
|
|
20110
20200
|
if (options.detach) {
|
|
20111
20201
|
logger.info(`Task containers started in detached mode; ${getEmbedConfig().binaryName} is exiting.`);
|
|
20112
20202
|
logger.info(`Use 'docker ps --filter network=${result.state.network?.networkName ?? "<network>"}' to inspect; tear down with 'docker rm -f' and 'docker network rm'.`);
|
|
20203
|
+
const joinedForwarders = result.state.forwarders.filter((f) => f.joined);
|
|
20204
|
+
if (joinedForwarders.length > 0) {
|
|
20205
|
+
const joinedNames = new Set(joinedForwarders.map((f) => f.containerName));
|
|
20206
|
+
const containers = result.state.startedContainers.filter((c) => joinedNames.has(c.name)).map((c) => c.id.slice(0, 12)).join(", ");
|
|
20207
|
+
logger.info(`Under the loopback AWS endpoint, task containers share the network of a forwarder container, so that filter does not list them. Task container ids: ${containers}. Remove them before the forwarders (${joinedForwarders.map((f) => f.name).join(", ")}).`);
|
|
20208
|
+
}
|
|
20113
20209
|
sigintCount = 99;
|
|
20114
20210
|
return;
|
|
20115
20211
|
}
|
|
@@ -31651,4 +31747,4 @@ function addStudioSpecificOptions(cmd) {
|
|
|
31651
31747
|
|
|
31652
31748
|
//#endregion
|
|
31653
31749
|
export { postHook as $, addAwsEndpointOptions as $a, parseConnectionsPath as $i, addImageOverrideOptions as $n, addStartApiSpecificOptions as $r, classifyS3Error as $t, microvmFidelityWarnings as A, parseSelectionExpressionPath as Aa, applyCorsResponseHeaders as Ai, stripCloudFrontImport as An, A2A_CONTAINER_PORT as Ar, readContainerLogTail as At, MICROVM_WS_BASE_PROTOCOL as B, AgentCoreResolutionError as Ba, evaluateResponseParameters as Bi, createLocalStartAlbCommand as Bn, AGENTCORE_SESSION_ID_HEADER as Br, parseWebFunctionBuildConfig as Bt, addListSpecificOptions as C, resolveSingleTarget as Ca, verifyJwtViaDiscovery as Ci, WEB_FUNCTION_REVISION_TYPE as Cn, setShadowReadyTimeoutMs as Cr, parseKvsFileOverrides as Ct, buildMicrovmLambdaView as D, discoverWebSocketApis as Da, invokeRequestAuthorizer as Di, compileCloudFrontFunction as Dn, createLocalInvokeAgentCoreCommand as Dr, WEB_FUNCTION_CONTAINER_PORT as Dt, addStartMicrovmSpecificOptions as E, availableWebSocketApiIdentifiers as Ea, evaluateCachedLambdaPolicy as Ei, resolveWebFunctionTarget as En, addInvokeAgentCoreSpecificOptions as Er, RecentOutput as Et, microvmImageTag as F, AGENTCORE_A2A_PROTOCOL as Fa, matchRoute as Fi, findFileAssetForObjectKey as Fn, MCP_PROTOCOL_VERSION as Fr, buildNodeEntryFileStart as Ft, startMicrovmFrontDoor as G, containsDynamicReference as Ga, HOST_DOCKER_INTERNAL_GATEWAY as Gi, addStartServiceSpecificOptions as Gn, SUPPORTED_CODE_RUNTIMES as Gr, readWebFunctionServiceConfig as Gt, PROXY_PORT_HEADER as H, resolveAgentCoreTarget as Ha, selectIntegrationResponse as Hi, resolveAlbTarget as Hn, waitForAgentCoreHttpReady as Hr, WEB_FUNCTION_HTTP_ENDPOINT_ENV as Ht, planMicrovmPorts as I, AGENTCORE_AGUI_PROTOCOL as Ia, translateLambdaResponse as Ii, isBucketDeploymentResource as In, mcpInvokeOnce as Ir, defaultWebFunctionPlatform as It, MICROVM_HOOK_PATH_PREFIX as J, keysNotFromTemplate as Ja, resolveHostGatewayExtraHosts as Ji, addRunTaskSpecificOptions as Jn, renderCodeDockerfile as Jr, idFromArn as Jt, stripMicrovmProxyHeaders as K, deployedFillMayBeSecret as Ka, HOST_GATEWAY_MIN_VERSION as Ki, createLocalStartServiceCommand as Kn, buildAgentCoreCodeImage as Kr, webFunctionAssumeRole as Kt, readExposedPorts as L, AGENTCORE_HTTP_PROTOCOL as La, applyAuthorizerOverlay as Li, resolveBucketDeploymentObjectKey as Ln, parseSseForJsonRpc as Lr, resolveWebFunctionRuntime as Lt, DEFAULT_TERMINATE_HOOK_TIMEOUT_MS as M, discoverRoutes as Ma, buildCorsConfigFromCloudFrontChain as Mi, createLocalFileKvsDataSource as Mn, a2aInvokeOnce as Mr, waitForWebFunctionReady as Mt, LocalMicrovm as N, pickRefLogicalId as Na, isFunctionUrlOacFronted as Ni, createUnboundCloudFrontModule as Nn, MCP_CONTAINER_PORT as Nr, watchContainerExit as Nt, createLocalStartMicrovmCommand as O, discoverWebSocketApisOrThrow as Oa, invokeTokenAuthorizer as Oi, runViewerRequest as On, bridgeAgentCoreWs as Or, containerFailure as Ot, buildMicrovmImage as P, resolveLambdaArnIntrinsic as Pa, matchPreflight as Pi, bucketDeploymentSourceObjectKeys as Pn, MCP_PATH as Pr, WEB_FUNCTION_RUNTIMES as Pt, pollBuildHook as Q, withoutKeys as Qa, handleConnectionsRequest as Qi, addEcsAssumeRoleOptions as Qn, createLocalInvokeCommand as Qr, resolveDeployedOriginBucket as Qt, setContainerPaused as R, AGENTCORE_MCP_PROTOCOL as Ra, buildHttpApiV2Event as Ri, addAlbSpecificOptions as Rn, AGENTCORE_SIGV4_SERVICE as Rr, supportedWebFunctionRuntimes as Rt, StudioEventBus as S, resolveWatchConfig as Sa, verifyJwtAuthorizer as Si, WEB_FUNCTION_ENDPOINT_TYPE as Sn, SOFT_RELOAD_COMPLETION_LOG_SUFFIX as Sr, normalizeKvsFileKeys as St, formatTargetListing as T, listTargets as Ta, computeRequestIdentityHash as Ti, WebFunctionResolutionError as Tn, attachContainerLogStreamer as Tr, resolveCloudFrontTarget as Tt, rewriteUpgradeResponseHead as U, DynamicReferenceResolutionError as Ua, tryParseStatus as Ui, isApplicationLoadBalancer as Un, waitForAgentCorePing as Ur, buildWebFunctionLambdaView as Ut, MicrovmStateError as V, pickAgentCoreCandidateStack as Va, pickResponseTemplate as Vi, parseLbPortOverrides as Vn, invokeAgentCore as Vr, resolveWebFunctionArtifact as Vt, selectTargetPort as W, DynamicReferenceResolver as Wa, VtlEvaluationError as Wi, resolveAlbFrontDoor as Wn, downloadAndExtractS3Bundle as Wr, finalizeWebFunctionEnv as Wt, callRuntimeHook as X, parseDynamicReference as Xa, ConnectionRegistry as Xi, MAX_TASKS_SUBNET_RANGE_CAP as Xn, classifySourceChange as Xr, createDeployedKvsDataSource as Xt, MicrovmHookError as Y, keysOverriddenBy as Ya, bufferToBody as Yi, createLocalRunTaskCommand as Yn, toCmdArgv as Yr, resolveKvsModulesForDistribution as Yt, generateMicrovmId as Z, resolveDynamicReferencesInEnv as Za, buildMgmtEndpointEnvUrl as Zi, addCommonEcsServiceOptions as Zn, addInvokeSpecificOptions as Zr, resolveDeployedKvsArnByName as Zt, filterStudioTargetGroups as _, resolveCfnRegion as _a, defaultCredentialsLoader as _i, pickKvsLogicalIdFromArn as _n, isLocalCdkAssetImage as _r, attachAgentCoreWsBridge as _t, createLocalStudioCommand as a, resolveRuntimeImage as aa, attachStageContext as ai, serveLambdaUrlOrigin as an, resolveSharedSidecarCredentials as ar, disposeMicrovmCodeArtifact as at, renderStudioHtml as b, collectSsmParameterRefs as ba, createJwksCache as bi, pickWebFunctionEndpointLogicalIdFromOrigin as bn, CloudMapRegistry as br, addStartCloudFrontSpecificOptions as bt, startStudioProxy as c, substituteAgainstState as ca, resolveEnvVars$1 as ci, buildEdgeRequestEvent as cn, buildImageOverrideTag as cr, resolveMicrovmImageTarget as ct, createStudioDispatcher as d, substituteEnvVarsFromStateAsync as da, filterRoutesByApiIdentifiers as di, httpHeadersToEdge as dn, mergeForService as dr, createLocalStartWebFunctionCommand as dt, buildConnectEvent as ea, createLocalStartApiCommand as ei, createS3OriginReader as en, awsEndpointOptions as eo, buildEcsImageResolutionContext$1 as er, runHookBody as et, filterStudioCustomResources as f, LocalStateSourceError as fa, groupRoutesByServer as fi, CLOUDFRONT_DISTRIBUTION_TYPE as fn, parseImageOverrideFlags as fr, addStartAgentCoreSpecificOptions as ft, annotatePinnedEcsTargets as g, resolveCfnFallbackRegion as ga, resolveServiceIntegrationParameters as gi, pickFunctionUrlLogicalIdFromOrigin as gn, imageOverrideKeyAliases as gr, startAgentCoreHttpServer as gt, annotateEcsTaskPinnedTargets as h, rejectExplicitCfnStackWithMultipleStacks as ha, resolveSelectionExpression as hi, isCloudFrontDistribution as hn, describePinnedImageUri as hr, selectServeInboundAuth as ht, coerceStopRequest as i, resolveRuntimeFileExtension as ia, createFileWatcher as ii, serveFromStaticOrigin as in, resolveEcsAssumeRoleOption as ir, MicrovmResolutionError as it, readRunHookPayload as j, webSocketApiMatchesIdentifier as ja, buildCorsConfigByApiId as ji, createCloudFrontModule as jn, A2A_PATH as jr, startWebFunctionContainer as jt, finalizeMicrovmEnv as k, filterWebSocketApisByIdentifiers as ka, attachAuthorizers as ki, runViewerResponse as kn, invokeAgentCoreWs as kr, planWebFunctionContainer as kt, relayServeRequest as l, substituteAgainstStateAsync as la, availableApiIdentifiers as li, buildEdgeResponseEvent as ln, canonicalizeImageOverrideKeys as lr, s3KeyOfUri as lt, annotateAlbPinnedBackingServices as m, isCfnFlagPresent as ma, startApiServer as mi, extractKvsAssociations as mn, runImageOverrideBuilds as mr, buildAgentCoreServeAuthCheck as mt, coerceRunRequest as n, buildMessageEvent as na, resolveApiTargetSubset as ni, startCloudFrontServer as nn, parseMaxTasks as nr, MICROVM_DEFAULT_INGRESS_PORT as nt, resolveServeBaseUrl as o, EcsTaskResolutionError as oa, buildStageMap as oi, applyEdgeRequestResult as on, runEcsServiceEmulator as or, readMicrovmImageConfig as ot, isCustomResourceLambdaTarget as p, createLocalStateProvider as pa, readMtlsMaterialsFromDisk as pi, describeS3OriginDomain as pn, resolveImageOverrides as pr, createLocalStartAgentCoreCommand as pt, MAX_RUN_HOOK_PAYLOAD_BYTES as q, firstUsableRegion as qa, probeHostGatewaySupport as qi, serviceStrategy as qn, computeCodeImageTag as qr, webFunctionFidelityWarnings as qt, coerceServeRequest as r, resolveRuntimeCodeMountPath as ra, createAuthorizerCache as ri, resolveErrorResponseCandidates as rn, parseRestartPolicy as rr, MICROVM_IMAGE_TYPE as rt, createStudioServeManager as s, assertEcsTaskImagesResolvable as sa, materializeLayerFromArn as si, applyEdgeResponseResult as sn, ImageOverrideError as sr, resolveMicrovmCodeArtifact as st, addStudioSpecificOptions as t, buildDisconnectEvent as ta, createWatchPredicates as ti, matchBehavior as tn, ecsClusterOption as tr, waitForAppAnswer as tt, reinvoke as u, substituteEnvVarsFromState as ua, filterRoutesByApiIdentifier as ui, edgeHeadersToHttp as un, enforceImageOverrideOrphans as ur, addStartWebFunctionSpecificOptions as ut, startStudioServer as v, resolveCfnStackName as va, buildCognitoJwksUrl as vi, pickLambdaEdgeFunctionLogicalId as vn, listPinnedTargets as vr, startAgentCoreWsBridge as vt, createLocalListCommand as w, countTargets as wa, buildMethodArn as wi, WEB_FUNCTION_TYPE as wn, getContainerNetworkIp as wr, parseOriginOverrides as wt, createStudioStore as x, resolveSsmParameters as xa, verifyCognitoJwt as xi, resolveCloudFrontDistribution as xn, DEFAULT_SHADOW_READY_TIMEOUT_MS as xr, createLocalStartCloudFrontCommand as xt, toStudioTargetGroups as y, CfnLocalStateProvider as ya, buildJwksUrlFromIssuer as yi, pickTargetFunctionLogicalId as yn, buildCloudMapIndex as yr, LocalStartCloudFrontError as yt, MICROVM_CONTROL_PATH as z, AGENTCORE_RUNTIME_TYPE as za, buildRestV1Event as zi, albStrategy as zn, signAgentCoreInvocation as zr, disposeWebFunctionArtifact as zt };
|
|
31654
|
-
//# sourceMappingURL=local-studio-
|
|
31750
|
+
//# sourceMappingURL=local-studio-D8eIrFzx.js.map
|