cdk-local 0.6.0 → 0.7.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/dist/cli.js CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
- import { i as createLocalInvokeCommand, n as createLocalRunTaskCommand, r as createLocalStartApiCommand, t as createLocalStartServiceCommand } from "./local-start-service-irdy6U57.js";
2
+ import { i as createLocalInvokeCommand, n as createLocalRunTaskCommand, r as createLocalStartApiCommand, t as createLocalStartServiceCommand } from "./local-start-service-DDjMUt0E.js";
3
3
  import { Command } from "commander";
4
4
 
5
5
  //#region src/cli/index.ts
6
6
  const program = new Command();
7
- program.name("cdkl").description("Run AWS CDK stacks locally with Docker.").version("0.6.0");
7
+ program.name("cdkl").description("Run AWS CDK stacks locally with Docker.").version("0.7.0");
8
8
  program.addCommand(createLocalInvokeCommand());
9
9
  program.addCommand(createLocalStartApiCommand());
10
10
  program.addCommand(createLocalRunTaskCommand());
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types/state.ts","../src/local/state-resolver.ts","../src/local/local-state-provider.ts","../src/cli/commands/local-state-source.ts","../src/local/embed-config.ts","../src/cli/commands/local-invoke.ts","../src/cli/commands/local-start-api.ts","../src/cli/commands/local-run-task.ts","../src/cli/commands/local-start-service.ts","../src/local/cfn-local-state-provider.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types/state.ts","../src/local/state-resolver.ts","../src/local/local-state-provider.ts","../src/cli/commands/local-state-source.ts","../src/local/embed-config.ts","../src/cli/commands/local-invoke.ts","../src/cli/commands/local-start-api.ts","../src/cli/commands/local-run-task.ts","../src/cli/commands/local-start-service.ts","../src/local/cfn-local-state-provider.ts"],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import { a as LocalStateSourceError, c as rejectExplicitCfnStackWithMultipleStacks, d as CfnLocalStateProvider, i as createLocalInvokeCommand, l as resolveCfnRegion, n as createLocalRunTaskCommand, o as createLocalStateProvider, r as createLocalStartApiCommand, s as isCfnFlagPresent, t as createLocalStartServiceCommand, u as resolveCfnStackName } from "./local-start-service-irdy6U57.js";
1
+ import { a as LocalStateSourceError, c as rejectExplicitCfnStackWithMultipleStacks, d as CfnLocalStateProvider, i as createLocalInvokeCommand, l as resolveCfnRegion, n as createLocalRunTaskCommand, o as createLocalStateProvider, r as createLocalStartApiCommand, s as isCfnFlagPresent, t as createLocalStartServiceCommand, u as resolveCfnStackName } from "./local-start-service-DDjMUt0E.js";
2
2
 
3
3
  export { CfnLocalStateProvider, LocalStateSourceError, createLocalInvokeCommand, createLocalRunTaskCommand, createLocalStartApiCommand, createLocalStartServiceCommand, createLocalStateProvider, isCfnFlagPresent, rejectExplicitCfnStackWithMultipleStacks, resolveCfnRegion, resolveCfnStackName };
@@ -14312,7 +14312,9 @@ async function localStartApiCommand(target, options, extraStateProviders) {
14312
14312
  skipPull: options.pull === false,
14313
14313
  ...options.layerRoleArn !== void 0 && { layerRoleArn: options.layerRoleArn },
14314
14314
  ...profileCredentials && { profileCredentials },
14315
- ...profileCredsFile && { profileCredsFile }
14315
+ ...profileCredsFile && { profileCredsFile },
14316
+ ...profileCredentials?.region && { profileRegion: profileCredentials.region },
14317
+ ...options.stackRegion && { stackRegionOverride: options.stackRegion }
14316
14318
  });
14317
14319
  specs.set(logicalId, spec);
14318
14320
  }
@@ -14834,7 +14836,7 @@ function warnIamRoutes(routesWithAuth) {
14834
14836
  * missing, runtime not supported).
14835
14837
  */
14836
14838
  async function buildContainerSpec(args) {
14837
- const { logicalId, stacks, overrides, assumeRole, containerHost, debugPort, stsRegion, inlineTmpDirs, layerTmpDirs, stateByStack, skipPull, layerRoleArn, profileCredentials, profileCredsFile } = args;
14839
+ const { logicalId, stacks, overrides, assumeRole, containerHost, debugPort, stsRegion, inlineTmpDirs, layerTmpDirs, stateByStack, skipPull, layerRoleArn, profileCredentials, profileCredsFile, profileRegion, stackRegionOverride } = args;
14838
14840
  const lambda = resolveLambdaByLogicalId(logicalId, stacks);
14839
14841
  let codeDir;
14840
14842
  let optDir;
@@ -14895,6 +14897,14 @@ async function buildContainerSpec(args) {
14895
14897
  dockerEnv["AWS_PROFILE"] = profileCredsFile.profileName;
14896
14898
  }
14897
14899
  }
14900
+ if (!dockerEnv["AWS_REGION"]) {
14901
+ const fallbackRegion = resolveContainerFallbackRegion({
14902
+ stackRegionOverride,
14903
+ synthRegion: lambda.stack.region,
14904
+ profileRegion
14905
+ });
14906
+ if (fallbackRegion) dockerEnv["AWS_REGION"] = fallbackRegion;
14907
+ }
14898
14908
  if (debugPort !== void 0) dockerEnv["NODE_OPTIONS"] = `--inspect-brk=0.0.0.0:${debugPort}`;
14899
14909
  const tmpfs = lambda.ephemeralStorageMb !== void 0 ? {
14900
14910
  target: "/tmp",
@@ -15296,6 +15306,18 @@ function forwardAwsEnv(env) {
15296
15306
  * common dev session; long-running `--watch` sessions that outlive
15297
15307
  * the creds need a cdk-local restart (deferred refresh out of scope for
15298
15308
  * v1, see issue #654).
15309
+ *
15310
+ * Also resolves the profile's configured `region` (from `~/.aws/config`'s
15311
+ * `region = ...` for this profile) off the same client config. The
15312
+ * synthesized credentials file we mount into the container carries only
15313
+ * the credential triple — no `region =` — so without this the container
15314
+ * boots with creds but no region, and a handler's ambient-region SDK call
15315
+ * (`new XxxClient({})`) fails with "Region is missing". The caller seeds
15316
+ * the container's `AWS_REGION` fallback with it (see
15317
+ * {@link resolveContainerFallbackRegion}). Region resolution is
15318
+ * best-effort: a profile with no region (or any resolution failure)
15319
+ * yields `region: undefined` rather than throwing — a missing region is
15320
+ * not a missing-credentials error.
15299
15321
  */
15300
15322
  async function resolveProfileCredentials(profile) {
15301
15323
  const { STSClient } = await import("@aws-sdk/client-sts");
@@ -15304,16 +15326,52 @@ async function resolveProfileCredentials(profile) {
15304
15326
  const credsProvider = sts.config.credentials;
15305
15327
  const creds = typeof credsProvider === "function" ? await credsProvider() : credsProvider;
15306
15328
  if (!creds || !creds.accessKeyId || !creds.secretAccessKey) throw new Error(`--profile '${profile}': credential provider chain resolved without usable credentials. Check \`aws sso login --profile ` + profile + "` for SSO profiles, or `~/.aws/credentials` / `~/.aws/config` for regular profiles.");
15329
+ let region;
15330
+ try {
15331
+ const regionProvider = sts.config.region;
15332
+ const resolved = typeof regionProvider === "function" ? await regionProvider() : regionProvider;
15333
+ if (typeof resolved === "string" && resolved.length > 0) region = resolved;
15334
+ } catch {
15335
+ region = void 0;
15336
+ }
15307
15337
  return {
15308
15338
  accessKeyId: creds.accessKeyId,
15309
15339
  secretAccessKey: creds.secretAccessKey,
15310
- ...creds.sessionToken && { sessionToken: creds.sessionToken }
15340
+ ...creds.sessionToken && { sessionToken: creds.sessionToken },
15341
+ ...region && { region }
15311
15342
  };
15312
15343
  } finally {
15313
15344
  sts.destroy();
15314
15345
  }
15315
15346
  }
15316
15347
  /**
15348
+ * Resolve the fallback `AWS_REGION` for a Lambda container when neither
15349
+ * the assume-role STS region nor a forwarded `AWS_REGION` /
15350
+ * `AWS_DEFAULT_REGION` env var already set one.
15351
+ *
15352
+ * Precedence mirrors where the deployed function would actually run, so a
15353
+ * handler's ambient-region SDK call (`new XxxClient({})`) reaches the same
15354
+ * region locally as the resources it is bound to:
15355
+ *
15356
+ * 1. `--stack-region` — explicit; also drives the `--from-cfn-stack` CFn
15357
+ * client, so the container matches the region the bound stack was read
15358
+ * from.
15359
+ * 2. the synth-derived stack region — `env.region` on the CDK stack, read
15360
+ * from the cloud assembly manifest (`StackInfo.region`). Previously
15361
+ * used only host-side for the `--from-cfn-stack` CFn client; never
15362
+ * injected into the container.
15363
+ * 3. the `--profile`'s configured region — `~/.aws/config`'s `region =`
15364
+ * for the profile. `--profile` injected credentials but not this.
15365
+ *
15366
+ * Returns `undefined` when none is known; the caller leaves `AWS_REGION`
15367
+ * unset so the SDK's own "Region is missing" surfaces (the correct signal
15368
+ * for a region-agnostic stack with no profile region and no `AWS_REGION`
15369
+ * env).
15370
+ */
15371
+ function resolveContainerFallbackRegion(args) {
15372
+ return args.stackRegionOverride ?? args.synthRegion ?? args.profileRegion;
15373
+ }
15374
+ /**
15317
15375
  * Issue an STS AssumeRole and return temporary credentials. Mirrors
15318
15376
  * `cdkl invoke`'s helper byte-for-byte; lifted here so the
15319
15377
  * start-api command stays self-contained.
@@ -18226,4 +18284,4 @@ function createLocalStartServiceCommand(opts = {}) {
18226
18284
 
18227
18285
  //#endregion
18228
18286
  export { LocalStateSourceError as a, rejectExplicitCfnStackWithMultipleStacks as c, CfnLocalStateProvider as d, createLocalInvokeCommand as i, resolveCfnRegion as l, createLocalRunTaskCommand as n, createLocalStateProvider as o, createLocalStartApiCommand as r, isCfnFlagPresent as s, createLocalStartServiceCommand as t, resolveCfnStackName as u };
18229
- //# sourceMappingURL=local-start-service-irdy6U57.js.map
18287
+ //# sourceMappingURL=local-start-service-DDjMUt0E.js.map