cdk-local 0.163.5 → 0.164.0
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/{docker-runner-6cuoe4H9.js → docker-runner-D6K15jJP.js} +17 -8
- package/dist/docker-runner-D6K15jJP.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/internal.d.ts +2 -2
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +4 -4
- package/dist/{local-studio-DIxEENzj.js → local-studio-C78UofCN.js} +298 -104
- package/dist/local-studio-C78UofCN.js.map +1 -0
- package/dist/{local-studio-Dyp2aN5T.d.ts → local-studio-nWE5yJK1.d.ts} +49 -27
- package/dist/local-studio-nWE5yJK1.d.ts.map +1 -0
- package/dist/{workload-identity-BOEZuEDO.js → workload-identity-CCXbr0KK.js} +473 -90
- package/dist/workload-identity-CCXbr0KK.js.map +1 -0
- package/package.json +1 -1
- package/dist/docker-runner-6cuoe4H9.js.map +0 -1
- package/dist/local-studio-DIxEENzj.js.map +0 -1
- package/dist/local-studio-Dyp2aN5T.d.ts.map +0 -1
- package/dist/workload-identity-BOEZuEDO.js.map +0 -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
|
-
import { C as effectiveLoopbackPorts,
|
|
2
|
+
import { $ as isAwsServiceRoutedToEmulator, C as effectiveLoopbackPorts, Ct as resolveEnvVars$1, Dt as formatAuthority, Et as isWildcardHostname, F as resolveHostDefaultCredentials, K as awsEmulatorRealServices, Ot as formatHostForAuthority, R as takeAwsEmulatorStateSourceHint, St as readEnvVarsFileText, Tt as isLoopbackHostname, X as deployArtifactsReadEmulator, Y as deployArtifactClientConfig, b as awsEmulatorEnvName, ct as createMixedModeStateProvider, d as workloadStsClientConfig, kt as hostFromAuthority, l as warnWorkloadCredentialsStripped, n as accountLookupStsClientConfig, nt as proxyAwareFetch, q as awsEndpointOverrideClientConfig, r as applyWorkloadEnvCredentials, u as workloadClientConfig, v as activateWorkloadAwsWiring, w as getActiveWorkloadAwsWiring, wt as defineOwnKey, xt as applyEnvOverrideMap, y as applyWorkloadAwsWiringToEnv, z as workloadGetsEmulatorKeysOnly } from "./workload-identity-CCXbr0KK.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 { $ as
|
|
4
|
+
import { $ as isIamRoleArn, A as buildDockerImage, B as substituteImagePlaceholders, D as isImageInLocalCache, E as warnIfEmulatedPlatform, F as parseEcrRegistryHost, G as LocalStartServiceError, H as CdkLocalError, I as contextForContainer, J as withErrorHandling, K as RouteDiscoveryError, L as derivePartitionAndUrlSuffix, M as createShutdownSignalHandler, N as signalExitCode, O as parseEcrUri, P as describeExitWithoutArgv, Q as describeRejectedRoleArn, R as derivePseudoParametersFromRegion, T as buildContainerImage, U as InteractiveTtyRequiredError, V as tryResolveImageFnJoin, W as LocalInvokeBuildError, X as applyRoleArnIfSet, Y as AssumeRoleFailure, Z as assumeRoleCredentials, a as describeRefusedSensitiveEnvKeys, c as execEnvForSecrets, d as rememberForwardedPorts, et as refusedRoleArnMessage, 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, nt as resolveProfileCredentials, p as runDetached, q as TargetSelectionCancelledError, r as appendEnvFlags, s as ensureDockerAvailable, t as DockerRunnerError, tt as buildStsClientConfig, u as pullImage, w as architectureToPlatform, z as formatStateRemedy } from "./docker-runner-D6K15jJP.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";
|
|
@@ -3377,19 +3377,23 @@ function createLocalStateProvider(options, stackName, synthRegion, extraStatePro
|
|
|
3377
3377
|
...options.profile !== void 0 && { profile: options.profile },
|
|
3378
3378
|
...behavior.workload !== void 0 && { workload: behavior.workload }
|
|
3379
3379
|
});
|
|
3380
|
-
const mixed =
|
|
3380
|
+
const mixed = getActiveWorkloadAwsWiring()?.mixed;
|
|
3381
3381
|
if (!mixed) return real;
|
|
3382
|
-
const
|
|
3383
|
-
|
|
3382
|
+
const emulator = new CfnLocalStateProvider({
|
|
3383
|
+
cfnStackName,
|
|
3384
|
+
region,
|
|
3385
|
+
endpointOverride: mixed.emulatorClientOverride,
|
|
3386
|
+
label: "--from-cfn-stack (AWS Emulator)"
|
|
3387
|
+
});
|
|
3388
|
+
const realServices = awsEmulatorRealServices(behavior.workload) ?? [];
|
|
3389
|
+
if (realServices.length === 0) {
|
|
3390
|
+
real.dispose();
|
|
3391
|
+
return emulator;
|
|
3392
|
+
}
|
|
3384
3393
|
return createMixedModeStateProvider({
|
|
3394
|
+
emulator,
|
|
3385
3395
|
real,
|
|
3386
|
-
|
|
3387
|
-
cfnStackName,
|
|
3388
|
-
region,
|
|
3389
|
-
endpointOverride: mixed.emulatorClientOverride,
|
|
3390
|
-
label: "--from-cfn-stack (AWS Emulator)"
|
|
3391
|
-
}),
|
|
3392
|
-
emulatedServices
|
|
3396
|
+
realServices
|
|
3393
3397
|
});
|
|
3394
3398
|
}
|
|
3395
3399
|
if (activeExtras.length === 1) {
|
|
@@ -3397,6 +3401,27 @@ function createLocalStateProvider(options, stackName, synthRegion, extraStatePro
|
|
|
3397
3401
|
return factory(options, behavior);
|
|
3398
3402
|
}
|
|
3399
3403
|
}
|
|
3404
|
+
const UNNAMED_WORKLOAD = Object.freeze({});
|
|
3405
|
+
function groupWorkloadsRoutedApart(items, workloadOf) {
|
|
3406
|
+
const base = awsEmulatorRealServices(UNNAMED_WORKLOAD);
|
|
3407
|
+
if (base === void 0) return [];
|
|
3408
|
+
const baseKey = base.join(",");
|
|
3409
|
+
const groups = /* @__PURE__ */ new Map();
|
|
3410
|
+
for (const item of items) {
|
|
3411
|
+
const workload = workloadOf(item);
|
|
3412
|
+
const realServices = awsEmulatorRealServices(workload) ?? base;
|
|
3413
|
+
const key = realServices.join(",");
|
|
3414
|
+
if (key === baseKey) continue;
|
|
3415
|
+
const group = groups.get(key);
|
|
3416
|
+
if (group) group.items.push(item);
|
|
3417
|
+
else groups.set(key, {
|
|
3418
|
+
realServices,
|
|
3419
|
+
workload,
|
|
3420
|
+
items: [item]
|
|
3421
|
+
});
|
|
3422
|
+
}
|
|
3423
|
+
return [...groups.values()];
|
|
3424
|
+
}
|
|
3400
3425
|
function toFlagName(field) {
|
|
3401
3426
|
return "--" + field.replace(/([A-Z])/g, "-$1").toLowerCase();
|
|
3402
3427
|
}
|
|
@@ -4231,6 +4256,10 @@ function extractTaskDefinitionProperties(stack, logicalId, resource, context) {
|
|
|
4231
4256
|
if (!Array.isArray(rawContainers) || rawContainers.length === 0) throw new EcsTaskResolutionError(`Task definition ${displayIdent(logicalId)} has no ContainerDefinitions.`);
|
|
4232
4257
|
const containers = rawContainers.map((c, idx) => parseContainerDefinition(c, idx, logicalId, resources, stack, context));
|
|
4233
4258
|
for (const ctr of containers) for (const w of ctr.warnings) warnings.push(`Container ${displayIdent(ctr.name)}: ${w}`);
|
|
4259
|
+
if (containers.some((c) => c.droppedEnvWithoutState)) {
|
|
4260
|
+
const hint = takeAwsEmulatorStateSourceHint();
|
|
4261
|
+
if (hint) warnings.push(hint);
|
|
4262
|
+
}
|
|
4234
4263
|
const rawVolumes = props["Volumes"];
|
|
4235
4264
|
const volumes = Array.isArray(rawVolumes) ? rawVolumes.map((v, idx) => parseVolume(v, idx, logicalId, subContext)) : [];
|
|
4236
4265
|
const containerNames = new Set(containers.map((c) => c.name));
|
|
@@ -4272,10 +4301,11 @@ function parseContainerDefinition(raw, idx, taskLogicalId, resources, stack, con
|
|
|
4272
4301
|
const command = pickStringArray$1(c["Command"]);
|
|
4273
4302
|
const entryPoint = pickStringArray$1(c["EntryPoint"]);
|
|
4274
4303
|
const workingDirectory = pickString(c["WorkingDirectory"]);
|
|
4275
|
-
const subContext = buildSubstitutionContextFromImageContext(context);
|
|
4304
|
+
const subContext = buildSubstitutionContextFromImageContext(contextForContainer(context, name));
|
|
4276
4305
|
const environment = {};
|
|
4277
4306
|
const sensitiveEnvKeys = [];
|
|
4278
4307
|
const droppedEnvKeys = [];
|
|
4308
|
+
let droppedEnvWithoutState = false;
|
|
4279
4309
|
if (Array.isArray(c["Environment"])) for (const entry of c["Environment"]) {
|
|
4280
4310
|
if (!entry || typeof entry !== "object") continue;
|
|
4281
4311
|
const e = entry;
|
|
@@ -4297,10 +4327,13 @@ function parseContainerDefinition(raw, idx, taskLogicalId, resources, stack, con
|
|
|
4297
4327
|
key,
|
|
4298
4328
|
reason: sub.reason
|
|
4299
4329
|
});
|
|
4300
|
-
} else
|
|
4301
|
-
|
|
4302
|
-
|
|
4303
|
-
|
|
4330
|
+
} else {
|
|
4331
|
+
droppedEnvWithoutState = true;
|
|
4332
|
+
droppedEnvKeys.push({
|
|
4333
|
+
key,
|
|
4334
|
+
reason: "intrinsic-valued; pass --from-state to substitute against deployed state"
|
|
4335
|
+
});
|
|
4336
|
+
}
|
|
4304
4337
|
}
|
|
4305
4338
|
const secrets = [];
|
|
4306
4339
|
const droppedSecretKeys = [];
|
|
@@ -4425,6 +4458,7 @@ function parseContainerDefinition(raw, idx, taskLogicalId, resources, stack, con
|
|
|
4425
4458
|
ulimits,
|
|
4426
4459
|
warnings
|
|
4427
4460
|
};
|
|
4461
|
+
if (droppedEnvWithoutState) out.droppedEnvWithoutState = true;
|
|
4428
4462
|
if (droppedSecretKeys.length > 0) out.droppedSecretNames = droppedSecretKeys.map((d) => d.key);
|
|
4429
4463
|
if (command !== void 0) out.command = command;
|
|
4430
4464
|
if (entryPoint !== void 0) out.entryPoint = entryPoint;
|
|
@@ -4687,13 +4721,34 @@ async function applyCrossStackValuesToTask(task, crossStackResolver, opts) {
|
|
|
4687
4721
|
crossStackResolver,
|
|
4688
4722
|
resolveDynamicReferences: crossStackDynamicReferenceHook(dynamicRefs, `Task ${task.taskDefinitionLogicalId} cross-stack env value`)
|
|
4689
4723
|
};
|
|
4724
|
+
const containerState = (name) => {
|
|
4725
|
+
const own = imageContext?.containerStates;
|
|
4726
|
+
if (!own || !Object.hasOwn(own, name)) return void 0;
|
|
4727
|
+
const state = own[name];
|
|
4728
|
+
return {
|
|
4729
|
+
resources: state.stateResources ?? {},
|
|
4730
|
+
parameters: state.stateParameters,
|
|
4731
|
+
sensitiveParameters: state.stateSensitiveParameters?.length ? new Set(state.stateSensitiveParameters) : void 0
|
|
4732
|
+
};
|
|
4733
|
+
};
|
|
4690
4734
|
try {
|
|
4691
|
-
await applyCrossStackResolverToTask(task, subContext);
|
|
4735
|
+
await applyCrossStackResolverToTask(task, subContext, containerState);
|
|
4692
4736
|
} finally {
|
|
4693
4737
|
dynamicRefs.dispose();
|
|
4694
4738
|
}
|
|
4695
4739
|
}
|
|
4696
|
-
|
|
4740
|
+
function withContainerState(context, state) {
|
|
4741
|
+
const out = {
|
|
4742
|
+
...context,
|
|
4743
|
+
resources: state.resources
|
|
4744
|
+
};
|
|
4745
|
+
if (state.parameters) out.parameters = state.parameters;
|
|
4746
|
+
else delete out.parameters;
|
|
4747
|
+
if (state.sensitiveParameters) out.sensitiveParameters = state.sensitiveParameters;
|
|
4748
|
+
else delete out.sensitiveParameters;
|
|
4749
|
+
return out;
|
|
4750
|
+
}
|
|
4751
|
+
async function applyCrossStackResolverToTask(task, context, containerState) {
|
|
4697
4752
|
if (!context.crossStackResolver) return;
|
|
4698
4753
|
const { resolveDynamicReferences: _envOnly, ...secretContext } = context;
|
|
4699
4754
|
const rawContainers = (task.resource.Properties ?? {})["ContainerDefinitions"];
|
|
@@ -4705,10 +4760,12 @@ async function applyCrossStackResolverToTask(task, context) {
|
|
|
4705
4760
|
const c = raw;
|
|
4706
4761
|
const containerName = pickString(c["Name"]) ?? container.name;
|
|
4707
4762
|
const resolveRefs = context.resolveDynamicReferences;
|
|
4763
|
+
const ownState = containerState?.(container.name);
|
|
4764
|
+
const baseContext = ownState ? withContainerState(context, ownState) : context;
|
|
4708
4765
|
const containerContext = resolveRefs ? {
|
|
4709
|
-
...
|
|
4766
|
+
...baseContext,
|
|
4710
4767
|
resolveDynamicReferences: (v, region) => resolveRefs(v, region, { containerName: container.name })
|
|
4711
|
-
} :
|
|
4768
|
+
} : baseContext;
|
|
4712
4769
|
const resolvedEnvKeys = /* @__PURE__ */ new Set();
|
|
4713
4770
|
const resolvedSecretNames = /* @__PURE__ */ new Set();
|
|
4714
4771
|
if (Array.isArray(c["Environment"])) for (const entry of c["Environment"]) {
|
|
@@ -4736,7 +4793,7 @@ async function applyCrossStackResolverToTask(task, context) {
|
|
|
4736
4793
|
if (typeof valueFromRaw === "string" && valueFromRaw.length > 0) continue;
|
|
4737
4794
|
if (container.secrets.some((s) => s.name === sName)) continue;
|
|
4738
4795
|
if (!isCrossStackIntrinsic(valueFromRaw)) continue;
|
|
4739
|
-
const sub = await substituteAgainstStateAsync(valueFromRaw, secretContext);
|
|
4796
|
+
const sub = await substituteAgainstStateAsync(valueFromRaw, ownState ? withContainerState(secretContext, ownState) : secretContext);
|
|
4740
4797
|
if (sub.kind === "literal" && typeof sub.value === "string" && sub.value.length > 0) {
|
|
4741
4798
|
container.secrets.push({
|
|
4742
4799
|
name: sName,
|
|
@@ -10280,9 +10337,9 @@ async function assumeRoleForLayer(roleArn, region, options) {
|
|
|
10280
10337
|
async function defaultLambdaClientFactory() {
|
|
10281
10338
|
const { LambdaClient } = await import("@aws-sdk/client-lambda");
|
|
10282
10339
|
return (region, credentials) => new LambdaClient({
|
|
10283
|
-
...workloadClientConfig(),
|
|
10340
|
+
...deployArtifactsReadEmulator() ? deployArtifactClientConfig() : workloadClientConfig(),
|
|
10284
10341
|
region,
|
|
10285
|
-
...credentials && { credentials: {
|
|
10342
|
+
...credentials && !deployArtifactsReadEmulator() && { credentials: {
|
|
10286
10343
|
accessKeyId: credentials.accessKeyId,
|
|
10287
10344
|
secretAccessKey: credentials.secretAccessKey,
|
|
10288
10345
|
...credentials.sessionToken !== void 0 && { sessionToken: credentials.sessionToken }
|
|
@@ -10823,7 +10880,7 @@ async function localStartApiCommand(targets, options, extraStateProviders) {
|
|
|
10823
10880
|
for (const [k, v] of direct) corsConfigByApiId.set(k, v);
|
|
10824
10881
|
}
|
|
10825
10882
|
assertServedLogicalIdsUnambiguous(servedStacks, servedRoutes, routesWithAuth, webSocketApis);
|
|
10826
|
-
const stateByStack = isCfnFlagPresent(options) || hasExtraStateProviderActive(options, extraStateProviders) ? await loadStateForRoutedStacks(servedStacks, servedRoutes, routesWithAuth, options, extraStateProviders) : /* @__PURE__ */ new Map();
|
|
10883
|
+
const stateByStack = isCfnFlagPresent(options) || hasExtraStateProviderActive(options, extraStateProviders) ? await loadStateForRoutedStacks(servedStacks, servedRoutes, routesWithAuth, options, extraStateProviders, webSocketApis) : /* @__PURE__ */ new Map();
|
|
10827
10884
|
const profileCredentials = options.profile ? await resolveProfileCredentials(options.profile) : void 0;
|
|
10828
10885
|
if (options.profile && profileCredentials && !profileCredsFile) profileCredsFile = await writeProfileCredentialsFile(options.profile, profileCredentials);
|
|
10829
10886
|
const lambdaIds = uniqueLambdaIds(servedRoutes, routesWithAuth, webSocketApis);
|
|
@@ -11396,7 +11453,8 @@ async function buildContainerSpec(args) {
|
|
|
11396
11453
|
platform = architectureToPlatform(lambda.architecture);
|
|
11397
11454
|
}
|
|
11398
11455
|
let templateEnv = getTemplateEnv$1(lambda.resource);
|
|
11399
|
-
const
|
|
11456
|
+
const stackBundle = stateByStack.get(lambda.stack.stackName);
|
|
11457
|
+
const stateBundle = stackBundle?.byLambda?.get(logicalId) ?? (stackBundle?.withoutSharedState ? void 0 : stackBundle);
|
|
11400
11458
|
let stateAudit;
|
|
11401
11459
|
const plaintextKeys = /* @__PURE__ */ new Set();
|
|
11402
11460
|
const deployedSecretKeys = [];
|
|
@@ -11436,6 +11494,10 @@ async function buildContainerSpec(args) {
|
|
|
11436
11494
|
const overrideKeyExample = lambdaCdkPath?.replace(/\/Resource$/, "") ?? logicalId;
|
|
11437
11495
|
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 a state-source flag (e.g. --from-cfn-stack or a host-provided extension) to recover deployed values.`);
|
|
11438
11496
|
}
|
|
11497
|
+
if (envResult.unresolved.length > 0 && !stateBundle) {
|
|
11498
|
+
const hint = takeAwsEmulatorStateSourceHint();
|
|
11499
|
+
if (hint) getLogger().warn(hint);
|
|
11500
|
+
}
|
|
11439
11501
|
for (const key of stateAudit?.sensitiveKeys ?? []) plaintextKeys.add(key);
|
|
11440
11502
|
for (const key of keysNotFromTemplate(templateEnv, envResult.resolved)) plaintextKeys.add(key);
|
|
11441
11503
|
const dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
|
|
@@ -11461,7 +11523,7 @@ async function buildContainerSpec(args) {
|
|
|
11461
11523
|
logicalId,
|
|
11462
11524
|
assumeRole,
|
|
11463
11525
|
lambdaResource: lambda.resource,
|
|
11464
|
-
stateBundle
|
|
11526
|
+
stateBundle: stackBundle?.withoutSharedState ? void 0 : stackBundle
|
|
11465
11527
|
});
|
|
11466
11528
|
if (roleArn) {
|
|
11467
11529
|
const creds = await assumeLambdaExecutionRole(roleArn, stsRegion, profile);
|
|
@@ -11893,10 +11955,9 @@ function envHasIntrinsicValue$1(templateEnv) {
|
|
|
11893
11955
|
}
|
|
11894
11956
|
return false;
|
|
11895
11957
|
}
|
|
11896
|
-
async function loadStateForRoutedStacks(stacks, routes, routesWithAuth, options, extraStateProviders) {
|
|
11897
|
-
const logger = getLogger();
|
|
11958
|
+
async function loadStateForRoutedStacks(stacks, routes, routesWithAuth, options, extraStateProviders, webSocketApis = []) {
|
|
11898
11959
|
const out = /* @__PURE__ */ new Map();
|
|
11899
|
-
const lambdaIds = uniqueLambdaIds(routes, routesWithAuth);
|
|
11960
|
+
const lambdaIds = uniqueLambdaIds(routes, routesWithAuth, webSocketApis);
|
|
11900
11961
|
const reachableStackNames = /* @__PURE__ */ new Set();
|
|
11901
11962
|
for (const logicalId of lambdaIds) for (const stack of stacks) {
|
|
11902
11963
|
const resource = stack.template.Resources?.[logicalId];
|
|
@@ -11918,51 +11979,88 @@ async function loadStateForRoutedStacks(stacks, routes, routesWithAuth, options,
|
|
|
11918
11979
|
for (const stackName of reachableStackNames) {
|
|
11919
11980
|
const stack = stacks.find((s) => s.stackName === stackName);
|
|
11920
11981
|
if (!stack) continue;
|
|
11921
|
-
const
|
|
11922
|
-
|
|
11923
|
-
|
|
11924
|
-
|
|
11925
|
-
|
|
11926
|
-
|
|
11927
|
-
|
|
11928
|
-
|
|
11929
|
-
|
|
11930
|
-
|
|
11931
|
-
|
|
11932
|
-
|
|
11933
|
-
|
|
11934
|
-
|
|
11935
|
-
|
|
11936
|
-
|
|
11937
|
-
|
|
11938
|
-
|
|
11939
|
-
|
|
11940
|
-
|
|
11941
|
-
|
|
11942
|
-
|
|
11943
|
-
const resource = stack.template.Resources?.[logicalId];
|
|
11944
|
-
if (!resource || resource.Type !== "AWS::Lambda::Function") continue;
|
|
11945
|
-
if (!envHasIntrinsicValue$1(getTemplateEnv$1(resource))) continue;
|
|
11946
|
-
const physicalId = loaded.resources[logicalId]?.physicalId;
|
|
11947
|
-
if (!physicalId) continue;
|
|
11948
|
-
const deployedEnv = await provider.resolveDeployedFunctionEnv(physicalId);
|
|
11949
|
-
if (deployedEnv) deployedEnvByLambda.set(logicalId, deployedEnv);
|
|
11950
|
-
}
|
|
11951
|
-
if (deployedEnvByLambda.size > 0) bundle.deployedEnvByLambda = deployedEnvByLambda;
|
|
11952
|
-
}
|
|
11953
|
-
if (stackHasIntrinsicEnv(stackName) && provider.resolveTemplateSsmParameters) {
|
|
11954
|
-
const ssmParameters = await provider.resolveTemplateSsmParameters(stack.template);
|
|
11955
|
-
if (Object.keys(ssmParameters.values).length > 0) bundle.ssmParameters = ssmParameters.values;
|
|
11956
|
-
if (ssmParameters.secureStringLogicalIds.length > 0) bundle.ssmSecureStringLogicalIds = ssmParameters.secureStringLogicalIds;
|
|
11957
|
-
}
|
|
11958
|
-
out.set(stackName, bundle);
|
|
11959
|
-
logger.debug(`${provider.label}: loaded state for ${displayStackName(stackName)} (${loaded.region})`);
|
|
11960
|
-
} finally {
|
|
11961
|
-
provider.dispose();
|
|
11982
|
+
const region = await resolveCfnFallbackRegion(options, stack.region);
|
|
11983
|
+
const providerFor = (workload) => createLocalStateProvider(options, stack.stackName, region, extraStateProviders, { workload });
|
|
11984
|
+
const stackLambdaIds = lambdaIds.filter((id) => stack.template.Resources?.[id]?.Type === "AWS::Lambda::Function");
|
|
11985
|
+
const groups = groupWorkloadsRoutedApart(stackLambdaIds, (logicalId) => ({
|
|
11986
|
+
logicalId,
|
|
11987
|
+
cdkPath: readCdkPathOrUndefined(stack.template.Resources[logicalId])
|
|
11988
|
+
}));
|
|
11989
|
+
const grouped = new Set(groups.flatMap((g) => g.items));
|
|
11990
|
+
const shared = await loadStackStateBundle(stack, providerFor(UNNAMED_WORKLOAD), {
|
|
11991
|
+
lambdaIds: stackLambdaIds.filter((id) => !grouped.has(id)),
|
|
11992
|
+
intrinsicEnv: stackHasIntrinsicEnv(stackName),
|
|
11993
|
+
options
|
|
11994
|
+
});
|
|
11995
|
+
const byLambda = /* @__PURE__ */ new Map();
|
|
11996
|
+
for (const group of groups) {
|
|
11997
|
+
const own = await loadStackStateBundle(stack, providerFor(group.workload), {
|
|
11998
|
+
lambdaIds: group.items,
|
|
11999
|
+
intrinsicEnv: stackHasIntrinsicEnv(stackName),
|
|
12000
|
+
options,
|
|
12001
|
+
...shared?.pseudoParameters && { pseudoParameters: shared.pseudoParameters }
|
|
12002
|
+
});
|
|
12003
|
+
if (own) for (const logicalId of group.items) byLambda.set(logicalId, own);
|
|
11962
12004
|
}
|
|
12005
|
+
const bundle = shared ?? (byLambda.size > 0 ? {
|
|
12006
|
+
state: {
|
|
12007
|
+
version: 1,
|
|
12008
|
+
stackName: stack.stackName,
|
|
12009
|
+
resources: {},
|
|
12010
|
+
outputs: {},
|
|
12011
|
+
lastModified: 0
|
|
12012
|
+
},
|
|
12013
|
+
withoutSharedState: true
|
|
12014
|
+
} : void 0);
|
|
12015
|
+
if (!bundle) continue;
|
|
12016
|
+
if (byLambda.size > 0) bundle.byLambda = byLambda;
|
|
12017
|
+
out.set(stackName, bundle);
|
|
11963
12018
|
}
|
|
11964
12019
|
return out;
|
|
11965
12020
|
}
|
|
12021
|
+
async function loadStackStateBundle(stack, provider, args) {
|
|
12022
|
+
if (!provider) return void 0;
|
|
12023
|
+
try {
|
|
12024
|
+
const loaded = await provider.load(stack.stackName, stack.region);
|
|
12025
|
+
if (!loaded) return void 0;
|
|
12026
|
+
const bundle = {
|
|
12027
|
+
state: {
|
|
12028
|
+
version: 1,
|
|
12029
|
+
stackName: stack.stackName,
|
|
12030
|
+
resources: loaded.resources,
|
|
12031
|
+
outputs: loaded.outputs,
|
|
12032
|
+
lastModified: 0
|
|
12033
|
+
},
|
|
12034
|
+
region: loaded.region
|
|
12035
|
+
};
|
|
12036
|
+
if (args.intrinsicEnv) {
|
|
12037
|
+
const pseudo = args.pseudoParameters ?? await resolvePseudoParametersForStartApi(loaded.region, args.options);
|
|
12038
|
+
if (pseudo) bundle.pseudoParameters = pseudo;
|
|
12039
|
+
}
|
|
12040
|
+
if (provider.resolveDeployedFunctionEnv) {
|
|
12041
|
+
const deployedEnvByLambda = /* @__PURE__ */ new Map();
|
|
12042
|
+
for (const logicalId of args.lambdaIds) {
|
|
12043
|
+
const resource = stack.template.Resources?.[logicalId];
|
|
12044
|
+
if (!resource || resource.Type !== "AWS::Lambda::Function") continue;
|
|
12045
|
+
if (!envHasIntrinsicValue$1(getTemplateEnv$1(resource))) continue;
|
|
12046
|
+
const physicalId = loaded.resources[logicalId]?.physicalId;
|
|
12047
|
+
if (!physicalId) continue;
|
|
12048
|
+
const deployedEnv = await provider.resolveDeployedFunctionEnv(physicalId);
|
|
12049
|
+
if (deployedEnv) deployedEnvByLambda.set(logicalId, deployedEnv);
|
|
12050
|
+
}
|
|
12051
|
+
if (deployedEnvByLambda.size > 0) bundle.deployedEnvByLambda = deployedEnvByLambda;
|
|
12052
|
+
}
|
|
12053
|
+
if (args.intrinsicEnv && provider.resolveTemplateSsmParameters) {
|
|
12054
|
+
const ssmParameters = await provider.resolveTemplateSsmParameters(stack.template);
|
|
12055
|
+
if (Object.keys(ssmParameters.values).length > 0) bundle.ssmParameters = ssmParameters.values;
|
|
12056
|
+
if (ssmParameters.secureStringLogicalIds.length > 0) bundle.ssmSecureStringLogicalIds = ssmParameters.secureStringLogicalIds;
|
|
12057
|
+
}
|
|
12058
|
+
getLogger().debug(`${provider.label}: loaded state for ${displayStackName(stack.stackName)} (${loaded.region})`);
|
|
12059
|
+
return bundle;
|
|
12060
|
+
} finally {
|
|
12061
|
+
provider.dispose();
|
|
12062
|
+
}
|
|
12063
|
+
}
|
|
11966
12064
|
async function resolvePseudoParametersForStartApi(stateRegion, options) {
|
|
11967
12065
|
const logger = getLogger();
|
|
11968
12066
|
const region = options.region ?? process.env["AWS_REGION"] ?? process.env["AWS_DEFAULT_REGION"] ?? stateRegion;
|
|
@@ -12552,6 +12650,10 @@ async function resolveLambdaContainerEnvWith(lambda, options, profileCredentials
|
|
|
12552
12650
|
const overrideKeyExample = lambdaCdkPath?.replace(/\/Resource$/, "") ?? lambda.logicalId;
|
|
12553
12651
|
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 or a host-provided extension) to recover deployed values.`);
|
|
12554
12652
|
}
|
|
12653
|
+
if (envResult.unresolved.length > 0 && !stateProvider) {
|
|
12654
|
+
const hint = takeAwsEmulatorStateSourceHint();
|
|
12655
|
+
if (hint) logger.warn(hint);
|
|
12656
|
+
}
|
|
12555
12657
|
for (const key of stateAudit?.sensitiveKeys ?? []) plaintextKeys.add(key);
|
|
12556
12658
|
for (const key of keysNotFromTemplate(templateEnv, envResult.resolved)) plaintextKeys.add(key);
|
|
12557
12659
|
const dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
|
|
@@ -12981,10 +13083,10 @@ function defaultFetchObject$1(options) {
|
|
|
12981
13083
|
return async (location) => {
|
|
12982
13084
|
const { S3Client, GetObjectCommand } = await import("@aws-sdk/client-s3");
|
|
12983
13085
|
const client = new S3Client({
|
|
12984
|
-
...
|
|
13086
|
+
...deployArtifactClientConfig({ profile: options.profile }),
|
|
12985
13087
|
...options.region && { region: options.region },
|
|
12986
|
-
...options.profile && !options.credentials && { profile: options.profile },
|
|
12987
|
-
...options.credentials && { credentials: {
|
|
13088
|
+
...options.profile && !options.credentials && !deployArtifactsReadEmulator() && { profile: options.profile },
|
|
13089
|
+
...options.credentials && !deployArtifactsReadEmulator() && { credentials: {
|
|
12988
13090
|
accessKeyId: options.credentials.accessKeyId,
|
|
12989
13091
|
secretAccessKey: options.credentials.secretAccessKey,
|
|
12990
13092
|
...options.credentials.sessionToken && { sessionToken: options.credentials.sessionToken }
|
|
@@ -14022,6 +14124,10 @@ async function buildContainerEnvWith(resolved, options, profileCredentials, prof
|
|
|
14022
14124
|
const overrideKeyExample = cdkPath?.replace(/\/Resource$/, "") ?? resolved.logicalId;
|
|
14023
14125
|
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.`);
|
|
14024
14126
|
}
|
|
14127
|
+
if (envResult.unresolved.length > 0 && !stateProvider) {
|
|
14128
|
+
const hint = takeAwsEmulatorStateSourceHint();
|
|
14129
|
+
if (hint) logger.warn(hint);
|
|
14130
|
+
}
|
|
14025
14131
|
const skipKeys = keysNotFromTemplate(templateEnv, envResult.resolved);
|
|
14026
14132
|
for (const key of sensitiveEnvKeys) skipKeys.add(key);
|
|
14027
14133
|
const dynamic = await resolveDynamicReferencesInEnv(envResult.resolved, {
|
|
@@ -15327,6 +15433,7 @@ async function runEcsTask(task, options, state) {
|
|
|
15327
15433
|
platformOverride: options.platformOverride,
|
|
15328
15434
|
region: options.region,
|
|
15329
15435
|
sidecarIp: state.network.sidecarIp,
|
|
15436
|
+
...options.mixedModeRoleCredentials && { mixedModeRoleCredentials: options.mixedModeRoleCredentials },
|
|
15330
15437
|
...options.skipHostPortPublish ? { skipHostPortPublish: true } : {},
|
|
15331
15438
|
...effectiveHostPortOverrides ? { hostPortOverrides: effectiveHostPortOverrides } : {},
|
|
15332
15439
|
...autoRemappedContainerPorts ? { autoRemappedContainerPorts } : {},
|
|
@@ -15755,7 +15862,13 @@ function buildDockerRunArgs(opts) {
|
|
|
15755
15862
|
}
|
|
15756
15863
|
}
|
|
15757
15864
|
const wiring = getActiveWorkloadAwsWiring();
|
|
15758
|
-
const
|
|
15865
|
+
const previewEnv = {};
|
|
15866
|
+
for (const [k, v] of Object.entries(container.environment)) defineOwnKey(previewEnv, k, v);
|
|
15867
|
+
if (opts.envOverrides) {
|
|
15868
|
+
applyEnvOverrideMap(previewEnv, opts.envOverrides["Parameters"]);
|
|
15869
|
+
applyEnvOverrideMap(previewEnv, opts.envOverrides[container.name]);
|
|
15870
|
+
}
|
|
15871
|
+
const profileCredentialsFile = workloadGetsEmulatorKeysOnly(previewEnv, wiring) ? void 0 : opts.profileCredentialsFile;
|
|
15759
15872
|
if (profileCredentialsFile) both("-v", `${profileCredentialsFile.hostPath}:${profileCredentialsFile.containerPath}:ro`);
|
|
15760
15873
|
for (const m of wiring?.mounts ?? []) if (!container.mountPoints.some((mp) => mp.containerPath === m.containerPath)) both("-v", `${m.hostPath}:${m.containerPath}:ro`);
|
|
15761
15874
|
for (const mp of container.mountPoints) {
|
|
@@ -15779,6 +15892,12 @@ function buildDockerRunArgs(opts) {
|
|
|
15779
15892
|
...opts.sidecarIp !== void 0 && { sidecarIp: opts.sidecarIp }
|
|
15780
15893
|
});
|
|
15781
15894
|
Object.assign(finalEnv, metaEnv);
|
|
15895
|
+
if (opts.mixedModeRoleCredentials && wiring?.mixed && !workloadGetsEmulatorKeysOnly(previewEnv, wiring)) {
|
|
15896
|
+
delete finalEnv["AWS_CONTAINER_CREDENTIALS_RELATIVE_URI"];
|
|
15897
|
+
finalEnv["AWS_ACCESS_KEY_ID"] = opts.mixedModeRoleCredentials.accessKeyId;
|
|
15898
|
+
finalEnv["AWS_SECRET_ACCESS_KEY"] = opts.mixedModeRoleCredentials.secretAccessKey;
|
|
15899
|
+
if (opts.mixedModeRoleCredentials.sessionToken) finalEnv["AWS_SESSION_TOKEN"] = opts.mixedModeRoleCredentials.sessionToken;
|
|
15900
|
+
}
|
|
15782
15901
|
if (profileCredentialsFile) {
|
|
15783
15902
|
finalEnv["AWS_SHARED_CREDENTIALS_FILE"] = profileCredentialsFile.containerPath;
|
|
15784
15903
|
finalEnv["AWS_PROFILE"] = profileCredentialsFile.profileName;
|
|
@@ -16704,10 +16823,10 @@ const defaultDockerStartImpl = async (containerId, opts = {}) => {
|
|
|
16704
16823
|
const { getDockerCmd } = await import("./docker-cmd-Cjg3jGYF.js").then((n) => n.t);
|
|
16705
16824
|
await promisify(execFile)(getDockerCmd(), ["start", containerId]);
|
|
16706
16825
|
if (opts.joinedForwarder) return;
|
|
16707
|
-
const { getActiveWorkloadAwsWiring } = await import("./workload-identity-
|
|
16826
|
+
const { getActiveWorkloadAwsWiring } = await import("./workload-identity-CCXbr0KK.js").then((n) => n.B);
|
|
16708
16827
|
const wiring = getActiveWorkloadAwsWiring();
|
|
16709
16828
|
if (wiring) {
|
|
16710
|
-
const { attachLoopbackForwarder } = await import("./docker-runner-
|
|
16829
|
+
const { attachLoopbackForwarder } = await import("./docker-runner-D6K15jJP.js").then((n) => n.o);
|
|
16711
16830
|
await attachLoopbackForwarder(containerId, wiring);
|
|
16712
16831
|
}
|
|
16713
16832
|
};
|
|
@@ -19588,13 +19707,13 @@ async function loadAssetContextForTarget(args) {
|
|
|
19588
19707
|
}
|
|
19589
19708
|
async function rollOneTarget(args) {
|
|
19590
19709
|
const { signal, controller, newBoot, stacks, options, discovery, skipPull, extraStateProviders, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, verdict, imageOverrideTag, logger } = args;
|
|
19591
|
-
const
|
|
19592
|
-
const stateProvider = createLocalStateProvider(options, candidate?.stackName ?? "", await resolveCfnFallbackRegion(options, candidate?.region), extraStateProviders);
|
|
19710
|
+
const { stateProvider, stateProviderFor } = await createTargetStateProviders(newBoot.target, stacks, options, extraStateProviders);
|
|
19593
19711
|
try {
|
|
19594
19712
|
let resolved;
|
|
19595
19713
|
try {
|
|
19596
19714
|
resolved = await resolveServiceAndRunnerOpts(newBoot, stacks, options, discovery, skipPull, stateProvider, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, {
|
|
19597
19715
|
quiet: true,
|
|
19716
|
+
stateProviderFor,
|
|
19598
19717
|
...imageOverrideTag !== void 0 && { imageOverrideTag }
|
|
19599
19718
|
});
|
|
19600
19719
|
} catch (err) {
|
|
@@ -19641,23 +19760,28 @@ async function rollOneTarget(args) {
|
|
|
19641
19760
|
}
|
|
19642
19761
|
}
|
|
19643
19762
|
async function bootOneTarget(boot, runState, stacks, options, discovery, skipPull, extraStateProviders, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, imageOverrideTag) {
|
|
19644
|
-
const
|
|
19645
|
-
const stateProvider = createLocalStateProvider(options, candidate?.stackName ?? "", await resolveCfnFallbackRegion(options, candidate?.region), extraStateProviders);
|
|
19763
|
+
const { stateProvider, stateProviderFor } = await createTargetStateProviders(boot.target, stacks, options, extraStateProviders);
|
|
19646
19764
|
try {
|
|
19647
|
-
return await runOneTarget(boot, runState, stacks, options, discovery, skipPull, stateProvider, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, imageOverrideTag);
|
|
19765
|
+
return await runOneTarget(boot, runState, stacks, options, discovery, skipPull, stateProvider, stateProviderFor, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, imageOverrideTag);
|
|
19648
19766
|
} finally {
|
|
19649
19767
|
if (stateProvider) stateProvider.dispose();
|
|
19650
19768
|
}
|
|
19651
19769
|
}
|
|
19652
|
-
async function runOneTarget(boot, runState, stacks, options, discovery, skipPull, stateProvider, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, imageOverrideTag) {
|
|
19653
|
-
const { service, runnerOpts } = await resolveServiceAndRunnerOpts(boot, stacks, options, discovery, skipPull, stateProvider, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning,
|
|
19770
|
+
async function runOneTarget(boot, runState, stacks, options, discovery, skipPull, stateProvider, stateProviderFor, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, imageOverrideTag) {
|
|
19771
|
+
const { service, runnerOpts } = await resolveServiceAndRunnerOpts(boot, stacks, options, discovery, skipPull, stateProvider, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, {
|
|
19772
|
+
stateProviderFor,
|
|
19773
|
+
...imageOverrideTag !== void 0 && { imageOverrideTag }
|
|
19774
|
+
});
|
|
19654
19775
|
return startEcsService(service, runnerOpts, runState);
|
|
19655
19776
|
}
|
|
19656
19777
|
async function resolveServiceAndRunnerOpts(boot, stacks, options, discovery, skipPull, stateProvider, profileCredsFile, frontDoorPools, suppressLoadBalancerWarning, opts = {}) {
|
|
19657
19778
|
const logger = getLogger();
|
|
19658
19779
|
const target = boot.target;
|
|
19659
19780
|
const quiet = opts.quiet === true;
|
|
19660
|
-
const imageContext = await buildEcsImageResolutionContext$1(target, stacks, options, stateProvider,
|
|
19781
|
+
const imageContext = await buildEcsImageResolutionContext$1(target, stacks, options, stateProvider, {
|
|
19782
|
+
...opts.imageOverrideTag !== void 0 && { imageOverridden: true },
|
|
19783
|
+
...opts.stateProviderFor && { stateProviderFor: opts.stateProviderFor }
|
|
19784
|
+
});
|
|
19661
19785
|
const service = resolveEcsServiceTarget(target, stacks, imageContext, { suppressLoadBalancerWarning });
|
|
19662
19786
|
const representative = service.task.containers.find((c) => c.essential) ?? service.task.containers[0];
|
|
19663
19787
|
assertEcsTaskImagesResolvable(service.task, new Set(opts.imageOverrideTag !== void 0 && representative ? [representative.name] : []));
|
|
@@ -19685,7 +19809,8 @@ async function resolveServiceAndRunnerOpts(boot, stacks, options, discovery, ski
|
|
|
19685
19809
|
resolvedRoleArn = effectiveAssumeRole;
|
|
19686
19810
|
assumedCredentials = await assumeTaskRole$1(resolvedRoleArn, options.region, options.profile);
|
|
19687
19811
|
}
|
|
19688
|
-
|
|
19812
|
+
const mixedWiring = getActiveWorkloadAwsWiring()?.mixed;
|
|
19813
|
+
if (!mixedWiring && discovery.sharedNetwork && resolvedRoleArn !== void 0 && assumedCredentials) try {
|
|
19689
19814
|
await serveTaskRoleFromSharedSidecar(discovery.sharedNetwork, {
|
|
19690
19815
|
roleArn: resolvedRoleArn,
|
|
19691
19816
|
credentials: assumedCredentials,
|
|
@@ -19705,7 +19830,10 @@ async function resolveServiceAndRunnerOpts(boot, stacks, options, discovery, ski
|
|
|
19705
19830
|
};
|
|
19706
19831
|
if (envOverrides) taskOpts.envOverrides = envOverrides;
|
|
19707
19832
|
if (options.stackRegion) taskOpts.stackRegion = options.stackRegion;
|
|
19708
|
-
if (assumedCredentials
|
|
19833
|
+
if (assumedCredentials && mixedWiring) {
|
|
19834
|
+
taskOpts.taskCredentials = mixedWiring.emulatorCredentials;
|
|
19835
|
+
taskOpts.mixedModeRoleCredentials = assumedCredentials;
|
|
19836
|
+
} else if (assumedCredentials) taskOpts.taskCredentials = assumedCredentials;
|
|
19709
19837
|
if (resolvedRoleArn) taskOpts.taskRoleArn = resolvedRoleArn;
|
|
19710
19838
|
if (options.platform) taskOpts.platformOverride = options.platform;
|
|
19711
19839
|
if (options.region) taskOpts.region = options.region;
|
|
@@ -20044,6 +20172,63 @@ async function assumeTaskRole$1(roleArn, region, profile) {
|
|
|
20044
20172
|
makeError: (message) => new LocalStartServiceError(message)
|
|
20045
20173
|
});
|
|
20046
20174
|
}
|
|
20175
|
+
async function createTargetStateProviders(target, stacks, options, extraStateProviders) {
|
|
20176
|
+
const candidate = pickCandidateStack$1(target, stacks);
|
|
20177
|
+
const region = await resolveCfnFallbackRegion(options, candidate?.region);
|
|
20178
|
+
const stateProviderFor = (workload) => createLocalStateProvider(options, candidate?.stackName ?? "", region, extraStateProviders, { workload });
|
|
20179
|
+
return {
|
|
20180
|
+
stateProvider: stateProviderFor(UNNAMED_WORKLOAD),
|
|
20181
|
+
stateProviderFor
|
|
20182
|
+
};
|
|
20183
|
+
}
|
|
20184
|
+
function ecsContainerNamesOf(stack) {
|
|
20185
|
+
const names = /* @__PURE__ */ new Set();
|
|
20186
|
+
for (const resource of Object.values(stack.template.Resources ?? {})) {
|
|
20187
|
+
if (resource?.Type !== "AWS::ECS::TaskDefinition") continue;
|
|
20188
|
+
const defs = resource.Properties?.["ContainerDefinitions"];
|
|
20189
|
+
if (!Array.isArray(defs)) continue;
|
|
20190
|
+
for (const def of defs) {
|
|
20191
|
+
const name = def?.["Name"];
|
|
20192
|
+
if (typeof name === "string" && name !== "") names.add(name);
|
|
20193
|
+
}
|
|
20194
|
+
}
|
|
20195
|
+
return [...names];
|
|
20196
|
+
}
|
|
20197
|
+
async function loadMixedModeContainerStates(ctx, stack, stateProviderFor) {
|
|
20198
|
+
const groups = groupWorkloadsRoutedApart(ecsContainerNamesOf(stack), (containerName) => ({ containerName }));
|
|
20199
|
+
if (groups.length === 0) return;
|
|
20200
|
+
const containerStates = {};
|
|
20201
|
+
for (const group of groups) {
|
|
20202
|
+
const provider = stateProviderFor(group.workload);
|
|
20203
|
+
if (!provider) continue;
|
|
20204
|
+
try {
|
|
20205
|
+
const state = {};
|
|
20206
|
+
const loaded = await provider.load(stack.stackName, stack.region);
|
|
20207
|
+
if (loaded) state.stateResources = loaded.resources;
|
|
20208
|
+
else {
|
|
20209
|
+
const loadError = provider.getLastLoadError?.();
|
|
20210
|
+
if (loadError) state.stateLoadFailureMessage = loadError;
|
|
20211
|
+
}
|
|
20212
|
+
if (provider.resolveTemplateSsmParameters) {
|
|
20213
|
+
const ssm = await provider.resolveTemplateSsmParameters(stack.template);
|
|
20214
|
+
if (Object.keys(ssm.values).length > 0) state.stateParameters = ssm.values;
|
|
20215
|
+
if (ssm.secureStringLogicalIds.length > 0) state.stateSensitiveParameters = ssm.secureStringLogicalIds;
|
|
20216
|
+
}
|
|
20217
|
+
for (const name of group.items) defineOwnState(containerStates, name, state);
|
|
20218
|
+
} finally {
|
|
20219
|
+
provider.dispose();
|
|
20220
|
+
}
|
|
20221
|
+
}
|
|
20222
|
+
ctx.containerStates = containerStates;
|
|
20223
|
+
}
|
|
20224
|
+
function defineOwnState(map, key, value) {
|
|
20225
|
+
Object.defineProperty(map, key, {
|
|
20226
|
+
value,
|
|
20227
|
+
enumerable: true,
|
|
20228
|
+
writable: true,
|
|
20229
|
+
configurable: true
|
|
20230
|
+
});
|
|
20231
|
+
}
|
|
20047
20232
|
async function buildEcsImageResolutionContext$1(target, stacks, options, stateProvider, opts = {}) {
|
|
20048
20233
|
const logger = getLogger();
|
|
20049
20234
|
const candidate = pickCandidateStack$1(target, stacks);
|
|
@@ -20084,6 +20269,7 @@ async function buildEcsImageResolutionContext$1(target, stacks, options, statePr
|
|
|
20084
20269
|
if (Object.keys(ssmParameters.values).length > 0) ctx.stateParameters = ssmParameters.values;
|
|
20085
20270
|
if (ssmParameters.secureStringLogicalIds.length > 0) ctx.stateSensitiveParameters = ssmParameters.secureStringLogicalIds;
|
|
20086
20271
|
}
|
|
20272
|
+
if (needs.needsEnvOrSecretSubstitution && opts.stateProviderFor) await loadMixedModeContainerStates(ctx, candidate, opts.stateProviderFor);
|
|
20087
20273
|
} else if (!stateProvider && needs.needsStateResources) {
|
|
20088
20274
|
if (!opts.suppressStateWarning && !opts.imageOverridden) 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, or --image-override to build it from a local Dockerfile.");
|
|
20089
20275
|
} else if (!stateProvider && needs.needsEnvOrSecretSubstitution) {
|
|
@@ -20191,6 +20377,7 @@ async function resolveServiceDefaultCredentials(options, assumedCredentials) {
|
|
|
20191
20377
|
async function resolveSharedSidecarCredentials(options) {
|
|
20192
20378
|
const wiring = getActiveWorkloadAwsWiring();
|
|
20193
20379
|
if (wiring?.mode === "emulator") return wiring.emulatorCredentials;
|
|
20380
|
+
if (wiring?.mixed) return wiring.mixed.emulatorCredentials;
|
|
20194
20381
|
if (options.profile) return resolveProfileCredentials(options.profile);
|
|
20195
20382
|
return resolveHostDefaultCredentials();
|
|
20196
20383
|
}
|
|
@@ -20199,7 +20386,7 @@ async function resolveAndBuildImageOverrides(args) {
|
|
|
20199
20386
|
const resolvedForPeek = [];
|
|
20200
20387
|
for (const target of perTarget) {
|
|
20201
20388
|
const candidate = pickCandidateStack$1(target, stacks);
|
|
20202
|
-
const stateProvider = createLocalStateProvider(options, candidate?.stackName ?? "", await resolveCfnFallbackRegion(options, candidate?.region), extraStateProviders);
|
|
20389
|
+
const stateProvider = createLocalStateProvider(options, candidate?.stackName ?? "", await resolveCfnFallbackRegion(options, candidate?.region), extraStateProviders, { workload: UNNAMED_WORKLOAD });
|
|
20203
20390
|
let imageContext;
|
|
20204
20391
|
let service;
|
|
20205
20392
|
try {
|
|
@@ -20352,8 +20539,10 @@ async function localRunTaskCommand(target, options, extraStateProviders) {
|
|
|
20352
20539
|
onMissing: () => new CdkLocalError(`${getEmbedConfig().cliName} run-task requires a <target> (an ECS task definition display path or logical ID). Run \`${getEmbedConfig().cliName} list\` to see them, or run it in a TTY to pick interactively.`, "LOCAL_RUN_TASK_TARGET_REQUIRED")
|
|
20353
20540
|
});
|
|
20354
20541
|
const candidate = pickCandidateStack(resolvedTarget, stacks);
|
|
20355
|
-
|
|
20356
|
-
const
|
|
20542
|
+
const stateRegion = await resolveCfnFallbackRegion(options, candidate?.region);
|
|
20543
|
+
const stateProviderFor = (workload) => createLocalStateProvider(options, candidate?.stackName ?? "", stateRegion, extraStateProviders, { workload });
|
|
20544
|
+
stateProvider = stateProviderFor(UNNAMED_WORKLOAD);
|
|
20545
|
+
const imageContext = await buildEcsImageResolutionContext(candidate, stateProvider, options, stateProviderFor);
|
|
20357
20546
|
const task = resolveEcsTaskTarget(resolvedTarget, stacks, imageContext);
|
|
20358
20547
|
logger.info(`Target: ${displayStackName(`${task.stack.stackName}/${task.taskDefinitionLogicalId}`)} (family=${displayIdent(task.family)}, containers=${task.containers.length})`);
|
|
20359
20548
|
const taskNeeds = detectEcsImageResolutionNeeds(stacks.find((s) => s.stackName === task.stack.stackName) ?? task.stack);
|
|
@@ -20400,7 +20589,11 @@ async function localRunTaskCommand(target, options, extraStateProviders) {
|
|
|
20400
20589
|
detach: options.detach
|
|
20401
20590
|
};
|
|
20402
20591
|
if (envOverrides) runOpts.envOverrides = envOverrides;
|
|
20403
|
-
|
|
20592
|
+
const mixed = getActiveWorkloadAwsWiring()?.mixed;
|
|
20593
|
+
if (mixed) {
|
|
20594
|
+
runOpts.taskCredentials = mixed.emulatorCredentials;
|
|
20595
|
+
if (assumedCredentials) runOpts.mixedModeRoleCredentials = assumedCredentials;
|
|
20596
|
+
} else if (sidecarCredentials) runOpts.taskCredentials = sidecarCredentials;
|
|
20404
20597
|
if (resolvedRoleArn) runOpts.taskRoleArn = resolvedRoleArn;
|
|
20405
20598
|
if (options.platform) runOpts.platformOverride = options.platform;
|
|
20406
20599
|
if (options.region) runOpts.region = options.region;
|
|
@@ -20495,7 +20688,7 @@ async function assumeTaskRole(roleArn, region, profile) {
|
|
|
20495
20688
|
sessionNameSuffix: "run-task"
|
|
20496
20689
|
});
|
|
20497
20690
|
}
|
|
20498
|
-
async function buildEcsImageResolutionContext(candidate, stateProvider, options) {
|
|
20691
|
+
async function buildEcsImageResolutionContext(candidate, stateProvider, options, stateProviderFor) {
|
|
20499
20692
|
const logger = getLogger();
|
|
20500
20693
|
if (!candidate) return void 0;
|
|
20501
20694
|
const needs = detectEcsImageResolutionNeeds(candidate);
|
|
@@ -20534,6 +20727,7 @@ async function buildEcsImageResolutionContext(candidate, stateProvider, options)
|
|
|
20534
20727
|
if (Object.keys(ssmParameters.values).length > 0) ctx.stateParameters = ssmParameters.values;
|
|
20535
20728
|
if (ssmParameters.secureStringLogicalIds.length > 0) ctx.stateSensitiveParameters = ssmParameters.secureStringLogicalIds;
|
|
20536
20729
|
}
|
|
20730
|
+
if (needs.needsEnvOrSecretSubstitution && stateProviderFor) await loadMixedModeContainerStates(ctx, candidate, stateProviderFor);
|
|
20537
20731
|
} else if (!stateProvider && needs.needsStateResources) {
|
|
20538
20732
|
if (!options.imageOverride?.length) 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, or --image-override to build it from a local Dockerfile. Otherwise the resolver will surface its existing error.");
|
|
20539
20733
|
} else if (!stateProvider && needs.needsEnvOrSecretSubstitution) logger.warn("Container Environment / Secrets entries contain CloudFormation intrinsics (Ref / Fn::GetAtt / Fn::Sub / Fn::Join). Pass a state-source flag (e.g. --from-cfn-stack or a host-provided extension) to substitute them against deployed state. Without a state source these entries are dropped (per-key warnings will follow).");
|
|
@@ -23436,9 +23630,9 @@ function defaultFetchObject(bucketName, options) {
|
|
|
23436
23630
|
const { S3Client, GetObjectCommand } = await import("@aws-sdk/client-s3");
|
|
23437
23631
|
return {
|
|
23438
23632
|
client: new S3Client({
|
|
23439
|
-
...workloadClientConfig(),
|
|
23633
|
+
...workloadClientConfig({ service: "S3" }),
|
|
23440
23634
|
...options.region && { region: options.region },
|
|
23441
|
-
...options.credentials && { credentials: {
|
|
23635
|
+
...options.credentials && !isAwsServiceRoutedToEmulator("S3") && { credentials: {
|
|
23442
23636
|
accessKeyId: options.credentials.accessKeyId,
|
|
23443
23637
|
secretAccessKey: options.credentials.secretAccessKey,
|
|
23444
23638
|
...options.credentials.sessionToken && { sessionToken: options.credentials.sessionToken }
|
|
@@ -23503,9 +23697,9 @@ async function resolveDeployedOriginBucket(options) {
|
|
|
23503
23697
|
async function defaultGetOrigins(options) {
|
|
23504
23698
|
const { CloudFrontClient, GetDistributionConfigCommand } = await import("@aws-sdk/client-cloudfront");
|
|
23505
23699
|
const client = new CloudFrontClient({
|
|
23506
|
-
...workloadClientConfig(),
|
|
23700
|
+
...workloadClientConfig({ service: "CLOUDFRONT" }),
|
|
23507
23701
|
region: "us-east-1",
|
|
23508
|
-
...options.credentials && { credentials: {
|
|
23702
|
+
...options.credentials && !isAwsServiceRoutedToEmulator("CLOUDFRONT") && { credentials: {
|
|
23509
23703
|
accessKeyId: options.credentials.accessKeyId,
|
|
23510
23704
|
secretAccessKey: options.credentials.secretAccessKey,
|
|
23511
23705
|
...options.credentials.sessionToken && { sessionToken: options.credentials.sessionToken }
|
|
@@ -23522,9 +23716,9 @@ async function defaultGetOrigins(options) {
|
|
|
23522
23716
|
//#region src/local/cloudfront-kvs-client.ts
|
|
23523
23717
|
function createDeployedKvsDataSource(options) {
|
|
23524
23718
|
const client = new CloudFrontKeyValueStoreClient({
|
|
23525
|
-
...workloadClientConfig(),
|
|
23719
|
+
...workloadClientConfig({ service: "CLOUDFRONT_KEYVALUESTORE" }),
|
|
23526
23720
|
region: options.region ?? "us-east-1",
|
|
23527
|
-
...options.credentials !== void 0 && { credentials: options.credentials }
|
|
23721
|
+
...options.credentials !== void 0 && !isAwsServiceRoutedToEmulator("CLOUDFRONT_KEYVALUESTORE") && { credentials: options.credentials }
|
|
23528
23722
|
});
|
|
23529
23723
|
return {
|
|
23530
23724
|
label: `deployed:${options.kvsArn}`,
|
|
@@ -23544,9 +23738,9 @@ function createDeployedKvsDataSource(options) {
|
|
|
23544
23738
|
}
|
|
23545
23739
|
async function resolveDeployedKvsArnByName(name, options = {}) {
|
|
23546
23740
|
const client = new CloudFrontClient({
|
|
23547
|
-
...workloadClientConfig(),
|
|
23741
|
+
...workloadClientConfig({ service: "CLOUDFRONT" }),
|
|
23548
23742
|
region: options.region ?? "us-east-1",
|
|
23549
|
-
...options.credentials !== void 0 && { credentials: options.credentials }
|
|
23743
|
+
...options.credentials !== void 0 && !isAwsServiceRoutedToEmulator("CLOUDFRONT") && { credentials: options.credentials }
|
|
23550
23744
|
});
|
|
23551
23745
|
try {
|
|
23552
23746
|
for await (const page of paginateListKeyValueStores({ client }, {})) for (const item of page.KeyValueStoreList?.Items ?? []) if (item.Name === name && item.ARN) return {
|
|
@@ -24468,7 +24662,7 @@ async function resolveDeployedS3Origins(distribution, stacks, options, profileCr
|
|
|
24468
24662
|
buckets
|
|
24469
24663
|
};
|
|
24470
24664
|
const synthRegion = stacks.find((s) => s.stackName === distribution.stackName)?.region;
|
|
24471
|
-
const provider = createLocalStateProvider(options, distribution.stackName, synthRegion, extraStateProviders
|
|
24665
|
+
const provider = createLocalStateProvider(options, distribution.stackName, synthRegion, extraStateProviders);
|
|
24472
24666
|
let record;
|
|
24473
24667
|
try {
|
|
24474
24668
|
record = provider ? await provider.load(distribution.stackName, synthRegion) : void 0;
|
|
@@ -31621,7 +31815,7 @@ async function prepareEcsImageContexts(args) {
|
|
|
31621
31815
|
}
|
|
31622
31816
|
rejectExplicitCfnStackWithMultipleStacks(options, owningStacks.length);
|
|
31623
31817
|
for (const stack of owningStacks) {
|
|
31624
|
-
const stateProvider = createLocalStateProvider(options, stack.stackName, await resolveCfnFallbackRegion(options, stack.region));
|
|
31818
|
+
const stateProvider = createLocalStateProvider(options, stack.stackName, await resolveCfnFallbackRegion(options, stack.region), void 0, { workload: UNNAMED_WORKLOAD });
|
|
31625
31819
|
try {
|
|
31626
31820
|
const ctx = await buildEcsImageResolutionContext(stack, stateProvider, options);
|
|
31627
31821
|
contextByStack.set(stack.stackName, ctx);
|
|
@@ -31998,5 +32192,5 @@ function addStudioSpecificOptions(cmd) {
|
|
|
31998
32192
|
}
|
|
31999
32193
|
|
|
32000
32194
|
//#endregion
|
|
32001
|
-
export { postHook as $,
|
|
32002
|
-
//# sourceMappingURL=local-studio-
|
|
32195
|
+
export { postHook as $, withoutKeys as $a, buildConnectEvent as $i, addImageOverrideOptions as $n, addStartApiSpecificOptions as $r, classifyS3Error as $t, microvmFidelityWarnings as A, filterWebSocketApisByIdentifiers as Aa, buildCorsConfigByApiId as Ai, stripCloudFrontImport as An, A2A_CONTAINER_PORT as Ar, readContainerLogTail as At, MICROVM_WS_BASE_PROTOCOL as B, AGENTCORE_RUNTIME_TYPE as Ba, pickResponseTemplate as Bi, createLocalStartAlbCommand as Bn, AGENTCORE_SESSION_ID_HEADER as Br, parseWebFunctionBuildConfig as Bt, addListSpecificOptions as C, resolveWatchConfig as Ca, buildMethodArn as Ci, WEB_FUNCTION_REVISION_TYPE as Cn, setShadowReadyTimeoutMs as Cr, parseKvsFileOverrides as Ct, buildMicrovmLambdaView as D, availableWebSocketApiIdentifiers as Da, invokeTokenAuthorizer as Di, compileCloudFrontFunction as Dn, createLocalInvokeAgentCoreCommand as Dr, WEB_FUNCTION_CONTAINER_PORT as Dt, addStartMicrovmSpecificOptions as E, listTargets as Ea, invokeRequestAuthorizer as Ei, resolveWebFunctionTarget as En, addInvokeAgentCoreSpecificOptions as Er, RecentOutput as Et, microvmImageTag as F, resolveLambdaArnIntrinsic as Fa, translateLambdaResponse as Fi, findFileAssetForObjectKey as Fn, MCP_PROTOCOL_VERSION as Fr, buildNodeEntryFileStart as Ft, startMicrovmFrontDoor as G, DynamicReferenceResolver as Ga, HOST_GATEWAY_MIN_VERSION as Gi, addStartServiceSpecificOptions as Gn, SUPPORTED_CODE_RUNTIMES as Gr, readWebFunctionServiceConfig as Gt, PROXY_PORT_HEADER as H, pickAgentCoreCandidateStack as Ha, tryParseStatus as Hi, resolveAlbTarget as Hn, waitForAgentCoreHttpReady as Hr, WEB_FUNCTION_HTTP_ENDPOINT_ENV as Ht, planMicrovmPorts as I, AGENTCORE_A2A_PROTOCOL as Ia, applyAuthorizerOverlay as Ii, isBucketDeploymentResource as In, mcpInvokeOnce as Ir, defaultWebFunctionPlatform as It, MICROVM_HOOK_PATH_PREFIX as J, firstUsableRegion as Ja, bufferToBody as Ji, addRunTaskSpecificOptions as Jn, renderCodeDockerfile as Jr, idFromArn as Jt, stripMicrovmProxyHeaders as K, containsDynamicReference as Ka, probeHostGatewaySupport as Ki, createLocalStartServiceCommand as Kn, buildAgentCoreCodeImage as Kr, webFunctionAssumeRole as Kt, readExposedPorts as L, AGENTCORE_AGUI_PROTOCOL as La, buildHttpApiV2Event as Li, resolveBucketDeploymentObjectKey as Ln, parseSseForJsonRpc as Lr, resolveWebFunctionRuntime as Lt, DEFAULT_TERMINATE_HOOK_TIMEOUT_MS as M, webSocketApiMatchesIdentifier as Ma, isFunctionUrlOacFronted as Mi, createLocalFileKvsDataSource as Mn, a2aInvokeOnce as Mr, waitForWebFunctionReady as Mt, LocalMicrovm as N, discoverRoutes as Na, matchPreflight as Ni, createUnboundCloudFrontModule as Nn, MCP_CONTAINER_PORT as Nr, watchContainerExit as Nt, createLocalStartMicrovmCommand as O, discoverWebSocketApis as Oa, attachAuthorizers as Oi, runViewerRequest as On, bridgeAgentCoreWs as Or, containerFailure as Ot, buildMicrovmImage as P, pickRefLogicalId as Pa, matchRoute as Pi, bucketDeploymentSourceObjectKeys as Pn, MCP_PATH as Pr, WEB_FUNCTION_RUNTIMES as Pt, pollBuildHook as Q, resolveDynamicReferencesInEnv as Qa, parseConnectionsPath as Qi, addEcsAssumeRoleOptions as Qn, createLocalInvokeCommand as Qr, resolveDeployedOriginBucket as Qt, setContainerPaused as R, AGENTCORE_HTTP_PROTOCOL as Ra, buildRestV1Event as Ri, addAlbSpecificOptions as Rn, AGENTCORE_SIGV4_SERVICE as Rr, supportedWebFunctionRuntimes as Rt, StudioEventBus as S, resolveSsmParameters as Sa, verifyJwtViaDiscovery as Si, WEB_FUNCTION_ENDPOINT_TYPE as Sn, SOFT_RELOAD_COMPLETION_LOG_SUFFIX as Sr, normalizeKvsFileKeys as St, formatTargetListing as T, countTargets as Ta, evaluateCachedLambdaPolicy as Ti, WebFunctionResolutionError as Tn, attachContainerLogStreamer as Tr, resolveCloudFrontTarget as Tt, rewriteUpgradeResponseHead as U, resolveAgentCoreTarget as Ua, VtlEvaluationError as Ui, isApplicationLoadBalancer as Un, waitForAgentCorePing as Ur, buildWebFunctionLambdaView as Ut, MicrovmStateError as V, AgentCoreResolutionError as Va, selectIntegrationResponse as Vi, parseLbPortOverrides as Vn, invokeAgentCore as Vr, resolveWebFunctionArtifact as Vt, selectTargetPort as W, DynamicReferenceResolutionError as Wa, HOST_DOCKER_INTERNAL_GATEWAY as Wi, resolveAlbFrontDoor as Wn, downloadAndExtractS3Bundle as Wr, finalizeWebFunctionEnv as Wt, callRuntimeHook as X, keysOverriddenBy as Xa, buildMgmtEndpointEnvUrl as Xi, MAX_TASKS_SUBNET_RANGE_CAP as Xn, classifySourceChange as Xr, createDeployedKvsDataSource as Xt, MicrovmHookError as Y, keysNotFromTemplate as Ya, ConnectionRegistry as Yi, createLocalRunTaskCommand as Yn, toCmdArgv as Yr, resolveKvsModulesForDistribution as Yt, generateMicrovmId as Z, parseDynamicReference as Za, handleConnectionsRequest as Zi, addCommonEcsServiceOptions as Zn, addInvokeSpecificOptions as Zr, resolveDeployedKvsArnByName as Zt, filterStudioTargetGroups as _, resolveCfnFallbackRegion as _a, buildCognitoJwksUrl as _i, pickKvsLogicalIdFromArn as _n, isLocalCdkAssetImage as _r, attachAgentCoreWsBridge as _t, createLocalStudioCommand as a, EcsTaskResolutionError as aa, attachStageContext as ai, serveLambdaUrlOrigin as an, resolveSharedSidecarCredentials as ar, disposeMicrovmCodeArtifact as at, renderStudioHtml as b, CfnLocalStateProvider as ba, verifyCognitoJwt as bi, pickWebFunctionEndpointLogicalIdFromOrigin as bn, CloudMapRegistry as br, addStartCloudFrontSpecificOptions as bt, startStudioProxy as c, substituteAgainstStateAsync as ca, availableApiIdentifiers as ci, buildEdgeRequestEvent as cn, buildImageOverrideTag as cr, resolveMicrovmImageTarget as ct, createStudioDispatcher as d, LocalStateSourceError as da, groupRoutesByServer as di, httpHeadersToEdge as dn, mergeForService as dr, createLocalStartWebFunctionCommand as dt, buildDisconnectEvent as ea, createLocalStartApiCommand as ei, createS3OriginReader as en, addAwsEndpointOptions as eo, buildEcsImageResolutionContext$1 as er, runHookBody as et, filterStudioCustomResources as f, UNNAMED_WORKLOAD as fa, readMtlsMaterialsFromDisk as fi, CLOUDFRONT_DISTRIBUTION_TYPE as fn, parseImageOverrideFlags as fr, addStartAgentCoreSpecificOptions as ft, annotatePinnedEcsTargets as g, rejectExplicitCfnStackWithMultipleStacks as ga, defaultCredentialsLoader as gi, pickFunctionUrlLogicalIdFromOrigin as gn, imageOverrideKeyAliases as gr, startAgentCoreHttpServer as gt, annotateEcsTaskPinnedTargets as h, isCfnFlagPresent as ha, resolveServiceIntegrationParameters as hi, isCloudFrontDistribution as hn, describePinnedImageUri as hr, selectServeInboundAuth as ht, coerceStopRequest as i, resolveRuntimeImage as ia, createFileWatcher as ii, serveFromStaticOrigin as in, resolveEcsAssumeRoleOption as ir, MicrovmResolutionError as it, readRunHookPayload as j, parseSelectionExpressionPath as ja, buildCorsConfigFromCloudFrontChain as ji, createCloudFrontModule as jn, A2A_PATH as jr, startWebFunctionContainer as jt, finalizeMicrovmEnv as k, discoverWebSocketApisOrThrow as ka, applyCorsResponseHeaders as ki, runViewerResponse as kn, invokeAgentCoreWs as kr, planWebFunctionContainer as kt, relayServeRequest as l, substituteEnvVarsFromState as la, filterRoutesByApiIdentifier as li, buildEdgeResponseEvent as ln, canonicalizeImageOverrideKeys as lr, s3KeyOfUri as lt, annotateAlbPinnedBackingServices as m, groupWorkloadsRoutedApart as ma, resolveSelectionExpression as mi, extractKvsAssociations as mn, runImageOverrideBuilds as mr, buildAgentCoreServeAuthCheck as mt, coerceRunRequest as n, resolveRuntimeCodeMountPath as na, resolveApiTargetSubset as ni, startCloudFrontServer as nn, parseMaxTasks as nr, MICROVM_DEFAULT_INGRESS_PORT as nt, resolveServeBaseUrl as o, assertEcsTaskImagesResolvable as oa, buildStageMap as oi, applyEdgeRequestResult as on, runEcsServiceEmulator as or, readMicrovmImageConfig as ot, isCustomResourceLambdaTarget as p, createLocalStateProvider as pa, startApiServer as pi, describeS3OriginDomain as pn, resolveImageOverrides as pr, createLocalStartAgentCoreCommand as pt, MAX_RUN_HOOK_PAYLOAD_BYTES as q, deployedFillMayBeSecret as qa, resolveHostGatewayExtraHosts as qi, serviceStrategy as qn, computeCodeImageTag as qr, webFunctionFidelityWarnings as qt, coerceServeRequest as r, resolveRuntimeFileExtension as ra, createAuthorizerCache as ri, resolveErrorResponseCandidates as rn, parseRestartPolicy as rr, MICROVM_IMAGE_TYPE as rt, createStudioServeManager as s, substituteAgainstState as sa, materializeLayerFromArn as si, applyEdgeResponseResult as sn, ImageOverrideError as sr, resolveMicrovmCodeArtifact as st, addStudioSpecificOptions as t, buildMessageEvent as ta, createWatchPredicates as ti, matchBehavior as tn, awsEndpointOptions as to, ecsClusterOption as tr, waitForAppAnswer as tt, reinvoke as u, substituteEnvVarsFromStateAsync as ua, filterRoutesByApiIdentifiers as ui, edgeHeadersToHttp as un, enforceImageOverrideOrphans as ur, addStartWebFunctionSpecificOptions as ut, startStudioServer as v, resolveCfnRegion as va, buildJwksUrlFromIssuer as vi, pickLambdaEdgeFunctionLogicalId as vn, listPinnedTargets as vr, startAgentCoreWsBridge as vt, createLocalListCommand as w, resolveSingleTarget as wa, computeRequestIdentityHash as wi, WEB_FUNCTION_TYPE as wn, getContainerNetworkIp as wr, parseOriginOverrides as wt, createStudioStore as x, collectSsmParameterRefs as xa, verifyJwtAuthorizer as xi, resolveCloudFrontDistribution as xn, DEFAULT_SHADOW_READY_TIMEOUT_MS as xr, createLocalStartCloudFrontCommand as xt, toStudioTargetGroups as y, resolveCfnStackName as ya, createJwksCache as yi, pickTargetFunctionLogicalId as yn, buildCloudMapIndex as yr, LocalStartCloudFrontError as yt, MICROVM_CONTROL_PATH as z, AGENTCORE_MCP_PROTOCOL as za, evaluateResponseParameters as zi, albStrategy as zn, signAgentCoreInvocation as zr, disposeWebFunctionArtifact as zt };
|
|
32196
|
+
//# sourceMappingURL=local-studio-C78UofCN.js.map
|