@jaypie/constructs 1.1.42 → 1.1.44

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.
@@ -38,8 +38,8 @@ export interface JaypieLambdaProps {
38
38
  paramsAndSecretsOptions?: {
39
39
  cacheSize?: number;
40
40
  logLevel?: lambda.ParamsAndSecretsLogLevel;
41
- parameterStoreTtl?: number;
42
- secretsManagerTtl?: number;
41
+ parameterStoreTtl?: Duration;
42
+ secretsManagerTtl?: Duration;
43
43
  };
44
44
  profiling?: boolean;
45
45
  profilingGroup?: import("aws-cdk-lib/aws-codeguruprofiler").IProfilingGroup;
@@ -97,4 +97,5 @@ export declare class JaypieLambda extends Construct implements lambda.IFunction
97
97
  };
98
98
  get stack(): Stack;
99
99
  applyRemovalPolicy(policy: RemovalPolicy): void;
100
+ addEnvironment(key: string, value: string): void;
100
101
  }
@@ -17,7 +17,6 @@ export declare class JaypieQueuedLambda extends Construct implements lambda.IFun
17
17
  constructor(scope: Construct, id: string, props: JaypieQueuedLambdaProps);
18
18
  get queue(): sqs.Queue;
19
19
  get lambda(): lambda.Function;
20
- get code(): lambda.Code;
21
20
  get functionArn(): string;
22
21
  get functionName(): string;
23
22
  get grantPrincipal(): import("aws-cdk-lib/aws-iam").IPrincipal;
@@ -69,4 +68,5 @@ export declare class JaypieQueuedLambda extends Construct implements lambda.IFun
69
68
  metricNumberOfMessagesReceived(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
70
69
  metricNumberOfMessagesSent(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
71
70
  metricSentMessageSize(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
71
+ addEnvironment(key: string, value: string): void;
72
72
  }
@@ -2,4 +2,4 @@ import * as lambda from "aws-cdk-lib/aws-lambda";
2
2
  export interface AddDatadogLayerOptions {
3
3
  datadogApiKeyArn?: string;
4
4
  }
5
- export declare function addDatadogLayer(lambdaFunction: lambda.Function, options?: AddDatadogLayerOptions): boolean;
5
+ export declare function addDatadogLayers(lambdaFunction: lambda.Function, options?: AddDatadogLayerOptions): boolean;
@@ -1,9 +1,10 @@
1
- export { addDatadogLayer } from "./addDatadogLayer";
2
- export { addParamsAndSecrets } from "./addParamsAndSecrets";
1
+ export { addDatadogLayers } from "./addDatadogLayers";
3
2
  export { constructEnvName } from "./constructEnvName";
4
3
  export { constructStackName } from "./constructStackName";
5
4
  export { constructTagger } from "./constructTagger";
6
5
  export { envHostname } from "./envHostname";
7
6
  export { isEnv, isProductionEnv, isSandboxEnv } from "./isEnv";
8
7
  export { jaypieLambdaEnv } from "./jaypieLambdaEnv";
8
+ export { resolveDatadogLayers } from "./resolveDatadogLayers";
9
9
  export { resolveHostedZone } from "./resolveHostedZone";
10
+ export { resolveParamsAndSecrets } from "./resolveParamsAndSecrets";
@@ -0,0 +1,7 @@
1
+ import * as lambda from "aws-cdk-lib/aws-lambda";
2
+ import { Construct } from "constructs";
3
+ export interface ResolveDatadogLayerOptions {
4
+ datadogApiKeyArn?: string;
5
+ uniqueId?: string;
6
+ }
7
+ export declare function resolveDatadogLayers(scope: Construct, options?: ResolveDatadogLayerOptions): lambda.ILayerVersion[] | undefined;
@@ -0,0 +1,10 @@
1
+ import { Duration } from "aws-cdk-lib";
2
+ import * as lambda from "aws-cdk-lib/aws-lambda";
3
+ export interface ResolveParamsAndSecretsOptions {
4
+ cacheSize?: number;
5
+ logLevel?: lambda.ParamsAndSecretsLogLevel;
6
+ parameterStoreTtl?: Duration;
7
+ secretsManagerTtl?: Duration;
8
+ }
9
+ export declare const resolveParamsAndSecrets: (paramsAndSecretsOptions?: lambda.ParamsAndSecretsLayerVersion | boolean | ResolveParamsAndSecretsOptions) => lambda.ParamsAndSecretsLayerVersion | undefined;
10
+ export default resolveParamsAndSecrets;
package/dist/esm/index.js CHANGED
@@ -1,14 +1,15 @@
1
1
  import { Construct } from 'constructs';
2
2
  import * as cdk from 'aws-cdk-lib';
3
- import { Stack, Tags, Duration, RemovalPolicy, Fn, CfnOutput, SecretValue } from 'aws-cdk-lib';
3
+ import { Tags, Stack, Duration, RemovalPolicy, Fn, CfnOutput, SecretValue } from 'aws-cdk-lib';
4
4
  import * as acm from 'aws-cdk-lib/aws-certificatemanager';
5
5
  import * as apiGateway from 'aws-cdk-lib/aws-apigateway';
6
6
  import * as route53 from 'aws-cdk-lib/aws-route53';
7
7
  import { HostedZone } from 'aws-cdk-lib/aws-route53';
8
8
  import * as route53Targets from 'aws-cdk-lib/aws-route53-targets';
9
9
  import { CDK as CDK$2, ConfigurationError, mergeDomain, isValidSubdomain, isValidHostname } from '@jaypie/cdk';
10
- import * as lambda from 'aws-cdk-lib/aws-lambda';
11
10
  import * as secretsmanager from 'aws-cdk-lib/aws-secretsmanager';
11
+ import { DatadogLambda } from 'datadog-cdk-constructs-v2';
12
+ import * as lambda from 'aws-cdk-lib/aws-lambda';
12
13
  import * as s3 from 'aws-cdk-lib/aws-s3';
13
14
  import * as s3n from 'aws-cdk-lib/aws-s3-notifications';
14
15
  import * as sqs from 'aws-cdk-lib/aws-sqs';
@@ -19,23 +20,14 @@ import * as sso from 'aws-cdk-lib/aws-sso';
19
20
  import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';
20
21
  import * as origins from 'aws-cdk-lib/aws-cloudfront-origins';
21
22
 
22
- function addDatadogLayer(lambdaFunction, options = {}) {
23
- const { datadogApiKeyArn } = options;
24
- // Resolve the Datadog API key ARN from multiple sources
23
+ function addDatadogLayers(lambdaFunction, options = {}) {
24
+ const datadogApiKeyArn = options?.datadogApiKeyArn;
25
25
  const resolvedDatadogApiKeyArn = datadogApiKeyArn ||
26
26
  process.env.DATADOG_API_KEY_ARN ||
27
27
  process.env.CDK_ENV_DATADOG_API_KEY_ARN;
28
- // Return false if no API key is found
29
28
  if (!resolvedDatadogApiKeyArn) {
30
29
  return false;
31
30
  }
32
- const stack = Stack.of(lambdaFunction);
33
- // Create Datadog Node.js layer
34
- const datadogNodeLayer = lambda.LayerVersion.fromLayerVersionArn(stack, `DatadogNodeLayer-${lambdaFunction.node.id}`, `arn:aws:lambda:${stack.region}:464622532012:layer:Datadog-Node20-x:${CDK$2.DATADOG.LAYER.NODE}`);
35
- // Create Datadog Extension layer
36
- const datadogExtensionLayer = lambda.LayerVersion.fromLayerVersionArn(stack, `DatadogExtensionLayer-${lambdaFunction.node.id}`, `arn:aws:lambda:${stack.region}:464622532012:layer:Datadog-Extension:${CDK$2.DATADOG.LAYER.EXTENSION}`);
37
- // Add layers to the lambda function
38
- lambdaFunction.addLayers(datadogNodeLayer, datadogExtensionLayer);
39
31
  // Define Datadog environment variables
40
32
  const datadogEnvVars = {
41
33
  DD_API_KEY_SECRET_ARN: resolvedDatadogApiKeyArn,
@@ -50,68 +42,21 @@ function addDatadogLayer(lambdaFunction, options = {}) {
50
42
  };
51
43
  // Add environment variables only if they don't already exist
52
44
  Object.entries(datadogEnvVars).forEach(([key, value]) => {
53
- if (lambdaFunction.environment[key] === undefined) {
54
- lambdaFunction.addEnvironment(key, value);
55
- }
45
+ lambdaFunction.addEnvironment(key, value);
46
+ });
47
+ const datadogApiKeySecret = secretsmanager.Secret.fromSecretNameV2(lambdaFunction.stack, "DatadogApiKey", resolvedDatadogApiKeyArn);
48
+ const datadogLambda = new DatadogLambda(lambdaFunction.stack, "DatadogLambda", {
49
+ apiKeySecret: datadogApiKeySecret, // apiKeySecret auto-grants secret access to the added lambdas
50
+ nodeLayerVersion: CDK$2.DATADOG.LAYER.NODE,
51
+ extensionLayerVersion: CDK$2.DATADOG.LAYER.EXTENSION,
52
+ env: process.env.PROJECT_ENV,
53
+ service: process.env.PROJECT_SERVICE,
54
+ version: process.env.PROJECT_VERSION,
56
55
  });
57
- // Grant Datadog API key read permission
58
- const datadogApiKey = secretsmanager.Secret.fromSecretCompleteArn(stack, `DatadogApiKeyGrant-${lambdaFunction.node.id}`, resolvedDatadogApiKeyArn);
59
- datadogApiKey.grantRead(lambdaFunction);
56
+ datadogLambda.addLambdaFunctions([lambdaFunction]);
60
57
  return true;
61
58
  }
62
59
 
63
- function addParamsAndSecrets(lambdaFunction, options = {}) {
64
- const { paramsAndSecrets, paramsAndSecretsOptions } = options;
65
- // Return false if explicitly disabled
66
- if (paramsAndSecrets === false) {
67
- return false;
68
- }
69
- const stack = Stack.of(lambdaFunction);
70
- let resolvedLayer = undefined;
71
- if (paramsAndSecrets instanceof lambda.ParamsAndSecretsLayerVersion) {
72
- // For custom ParamsAndSecretsLayerVersion, we need to extract the ARN
73
- // This is a workaround since ParamsAndSecretsLayerVersion doesn't implement ILayerVersion
74
- const layerArn = `arn:aws:lambda:${stack.region}:017000801446:layer:AWSLambdaParametersAndSecrets:${lambda.ParamsAndSecretsVersions.V1_0_103}`;
75
- resolvedLayer = lambda.LayerVersion.fromLayerVersionArn(stack, `ParamsAndSecretsLayer-${lambdaFunction.node.id}`, layerArn);
76
- // Set environment variables for configuration
77
- if (paramsAndSecretsOptions?.cacheSize) {
78
- lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE", paramsAndSecretsOptions.cacheSize.toString());
79
- }
80
- if (paramsAndSecretsOptions?.logLevel) {
81
- lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL", paramsAndSecretsOptions.logLevel);
82
- }
83
- if (paramsAndSecretsOptions?.parameterStoreTtl) {
84
- lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_PARAMETER_STORE_TTL", paramsAndSecretsOptions.parameterStoreTtl.toString());
85
- }
86
- if (paramsAndSecretsOptions?.secretsManagerTtl) {
87
- lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_SECRETS_MANAGER_TTL", paramsAndSecretsOptions.secretsManagerTtl.toString());
88
- }
89
- }
90
- else {
91
- // Create default ParamsAndSecrets layer using LayerVersion.fromLayerVersionArn
92
- const layerArn = `arn:aws:lambda:${stack.region}:017000801446:layer:AWSLambdaParametersAndSecrets:${lambda.ParamsAndSecretsVersions.V1_0_103}`;
93
- resolvedLayer = lambda.LayerVersion.fromLayerVersionArn(stack, `ParamsAndSecretsLayer-${lambdaFunction.node.id}`, layerArn);
94
- // Set default environment variables
95
- if (paramsAndSecretsOptions?.cacheSize) {
96
- lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE", paramsAndSecretsOptions.cacheSize.toString());
97
- }
98
- const logLevel = paramsAndSecretsOptions?.logLevel || lambda.ParamsAndSecretsLogLevel.WARN;
99
- lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL", logLevel);
100
- if (paramsAndSecretsOptions?.parameterStoreTtl) {
101
- lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_PARAMETER_STORE_TTL", paramsAndSecretsOptions.parameterStoreTtl.toString());
102
- }
103
- if (paramsAndSecretsOptions?.secretsManagerTtl) {
104
- lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_SECRETS_MANAGER_TTL", paramsAndSecretsOptions.secretsManagerTtl.toString());
105
- }
106
- }
107
- // Add the layer to the lambda function
108
- if (resolvedLayer) {
109
- lambdaFunction.addLayers(resolvedLayer);
110
- return true;
111
- }
112
- return false;
113
- }
114
-
115
60
  function constructEnvName(name, opts) {
116
61
  const env = opts?.env ?? process.env.PROJECT_ENV ?? "build";
117
62
  const key = opts?.key ?? process.env.PROJECT_KEY ?? "project";
@@ -270,6 +215,25 @@ function jaypieLambdaEnv(options = {}) {
270
215
  return environment;
271
216
  }
272
217
 
218
+ function resolveDatadogLayers(scope, options = {}) {
219
+ const { datadogApiKeyArn, uniqueId } = options;
220
+ let resolvedRegion = Stack.of(scope).region || "us-east-1";
221
+ // Resolve the Datadog API key ARN from multiple sources
222
+ const resolvedDatadogApiKeyArn = datadogApiKeyArn ||
223
+ process.env.DATADOG_API_KEY_ARN ||
224
+ process.env.CDK_ENV_DATADOG_API_KEY_ARN;
225
+ // Return null if no API key is found
226
+ if (!resolvedDatadogApiKeyArn) {
227
+ return undefined;
228
+ }
229
+ const layerIdSuffix = uniqueId || process.env.PROJECT_NONCE || Date.now().toString();
230
+ // Create Datadog Node.js layer
231
+ const datadogNodeLayer = lambda.LayerVersion.fromLayerVersionArn(scope, `DatadogNodeLayer-${layerIdSuffix}`, `arn:aws:lambda:${resolvedRegion}:464622532012:layer:Datadog-Node20-x:${CDK$2.DATADOG.LAYER.NODE}`);
232
+ // Create Datadog Extension layer
233
+ const datadogExtensionLayer = lambda.LayerVersion.fromLayerVersionArn(scope, `DatadogExtensionLayer-${layerIdSuffix}`, `arn:aws:lambda:${resolvedRegion}:464622532012:layer:Datadog-Extension:${CDK$2.DATADOG.LAYER.EXTENSION}`);
234
+ return [datadogNodeLayer, datadogExtensionLayer];
235
+ }
236
+
273
237
  function resolveHostedZone(scope, { name = "HostedZone", zone = process.env.CDK_ENV_HOSTED_ZONE, } = {}) {
274
238
  if (!zone) {
275
239
  throw new ConfigurationError("No `zone` provided. Set CDK_ENV_HOSTED_ZONE to use environment zone");
@@ -282,6 +246,30 @@ function resolveHostedZone(scope, { name = "HostedZone", zone = process.env.CDK_
282
246
  return zone;
283
247
  }
284
248
 
249
+ const resolveParamsAndSecrets = (paramsAndSecretsOptions) => {
250
+ if (paramsAndSecretsOptions === false) {
251
+ return;
252
+ }
253
+ let resolvedParamsAndSecrets;
254
+ if (paramsAndSecretsOptions instanceof lambda.ParamsAndSecretsLayerVersion) {
255
+ resolvedParamsAndSecrets = paramsAndSecretsOptions;
256
+ }
257
+ else {
258
+ if (paramsAndSecretsOptions === true ||
259
+ paramsAndSecretsOptions === undefined) {
260
+ paramsAndSecretsOptions = {};
261
+ }
262
+ resolvedParamsAndSecrets = lambda.ParamsAndSecretsLayerVersion.fromVersion(lambda.ParamsAndSecretsVersions.V1_0_103, {
263
+ cacheSize: paramsAndSecretsOptions?.cacheSize,
264
+ logLevel: paramsAndSecretsOptions?.logLevel ||
265
+ lambda.ParamsAndSecretsLogLevel.WARN,
266
+ parameterStoreTtl: paramsAndSecretsOptions?.parameterStoreTtl,
267
+ secretsManagerTtl: paramsAndSecretsOptions?.secretsManagerTtl,
268
+ });
269
+ }
270
+ return resolvedParamsAndSecrets;
271
+ };
272
+
285
273
  class JaypieApiGateway extends Construct {
286
274
  constructor(scope, id, props) {
287
275
  super(scope, id);
@@ -479,6 +467,10 @@ class JaypieLambda extends Construct {
479
467
  }
480
468
  return acc;
481
469
  }, {});
470
+ // Add ParamsAndSecrets layer if configured
471
+ const resolvedParamsAndSecrets = paramsAndSecrets
472
+ ? resolveParamsAndSecrets(paramsAndSecretsOptions)
473
+ : undefined;
482
474
  // Create Lambda Function
483
475
  this._lambda = new lambda.Function(this, "Function", {
484
476
  allowAllOutbound,
@@ -506,6 +498,7 @@ class JaypieLambda extends Construct {
506
498
  logRetentionRetryOptions,
507
499
  maxEventAge,
508
500
  memorySize,
501
+ paramsAndSecrets: resolvedParamsAndSecrets,
509
502
  profiling,
510
503
  profilingGroup,
511
504
  reservedConcurrentExecutions,
@@ -526,13 +519,7 @@ class JaypieLambda extends Construct {
526
519
  }
527
520
  : undefined,
528
521
  });
529
- // Add ParamsAndSecrets layer if configured
530
- addParamsAndSecrets(this._lambda, {
531
- paramsAndSecrets,
532
- paramsAndSecretsOptions,
533
- });
534
- // Add Datadog layers and environment variables if configured
535
- addDatadogLayer(this._lambda, { datadogApiKeyArn });
522
+ addDatadogLayers(this._lambda, { datadogApiKeyArn });
536
523
  // Grant secret read permissions
537
524
  Object.values(envSecrets).forEach((secret) => {
538
525
  secret.grantRead(this._lambda);
@@ -665,12 +652,15 @@ class JaypieLambda extends Construct {
665
652
  applyRemovalPolicy(policy) {
666
653
  this._reference.applyRemovalPolicy(policy);
667
654
  }
655
+ addEnvironment(key, value) {
656
+ this._lambda.addEnvironment(key, value);
657
+ }
668
658
  }
669
659
 
670
660
  class JaypieQueuedLambda extends Construct {
671
661
  constructor(scope, id, props) {
672
662
  super(scope, id);
673
- const { batchSize = 1, code, environment = {}, envSecrets = {}, fifo = true, handler = "index.handler", layers = [], logRetention = CDK$2.LAMBDA.LOG_RETENTION, memorySize = CDK$2.LAMBDA.MEMORY_SIZE, paramsAndSecrets, reservedConcurrentExecutions, roleTag, runtime = lambda.Runtime.NODEJS_22_X, secrets = [], timeout = Duration.seconds(CDK$2.DURATION.LAMBDA_WORKER), vendorTag, visibilityTimeout = Duration.seconds(CDK$2.DURATION.LAMBDA_WORKER), } = props;
663
+ const { allowAllOutbound, allowPublicSubnet, architecture, batchSize = 1, code, codeSigningConfig, datadogApiKeyArn, deadLetterQueue, deadLetterQueueEnabled, deadLetterTopic, description, environment = {}, environmentEncryption, envSecrets = {}, ephemeralStorageSize, fifo = true, filesystem, handler = "index.handler", initialPolicy, layers = [], logRetention = CDK$2.LAMBDA.LOG_RETENTION, logRetentionRole, logRetentionRetryOptions, maxEventAge, memorySize = CDK$2.LAMBDA.MEMORY_SIZE, paramsAndSecrets, paramsAndSecretsOptions, profiling, profilingGroup, provisionedConcurrentExecutions, reservedConcurrentExecutions, retryAttempts, roleTag, runtime = lambda.Runtime.NODEJS_22_X, runtimeManagementMode, secrets = [], securityGroups, timeout = Duration.seconds(CDK$2.DURATION.LAMBDA_WORKER), tracing, vendorTag, visibilityTimeout = Duration.seconds(CDK$2.DURATION.LAMBDA_WORKER), vpc, vpcSubnets, } = props;
674
664
  // Create SQS Queue
675
665
  this._queue = new sqs.Queue(this, "Queue", {
676
666
  fifo,
@@ -686,23 +676,49 @@ class JaypieQueuedLambda extends Construct {
686
676
  }
687
677
  // Create Lambda with JaypieLambda
688
678
  this._lambdaConstruct = new JaypieLambda(this, "Function", {
679
+ allowAllOutbound,
680
+ allowPublicSubnet,
681
+ architecture,
689
682
  code,
683
+ codeSigningConfig,
684
+ datadogApiKeyArn,
685
+ deadLetterQueue,
686
+ deadLetterQueueEnabled,
687
+ deadLetterTopic,
688
+ description,
690
689
  environment: {
691
690
  ...environment,
692
691
  CDK_ENV_QUEUE_URL: this._queue.queueUrl,
693
692
  },
693
+ environmentEncryption,
694
694
  envSecrets,
695
+ ephemeralStorageSize,
696
+ filesystem,
695
697
  handler,
698
+ initialPolicy,
696
699
  layers,
697
700
  logRetention,
701
+ logRetentionRole,
702
+ logRetentionRetryOptions,
703
+ maxEventAge,
698
704
  memorySize,
699
705
  paramsAndSecrets,
706
+ paramsAndSecretsOptions,
707
+ profiling,
708
+ profilingGroup,
709
+ provisionedConcurrentExecutions,
700
710
  reservedConcurrentExecutions,
711
+ retryAttempts,
701
712
  roleTag,
702
713
  runtime,
714
+ runtimeManagementMode,
703
715
  secrets,
716
+ securityGroups,
704
717
  timeout,
718
+ tracing,
705
719
  vendorTag,
720
+ vpc,
721
+ vpcSubnets,
706
722
  });
707
723
  // Set up queue and lambda integration
708
724
  this._queue.grantConsumeMessages(this._lambdaConstruct);
@@ -718,9 +734,6 @@ class JaypieQueuedLambda extends Construct {
718
734
  get lambda() {
719
735
  return this._lambdaConstruct.lambda;
720
736
  }
721
- get code() {
722
- return this._lambdaConstruct.code;
723
- }
724
737
  // IFunction implementation
725
738
  get functionArn() {
726
739
  return this._lambdaConstruct.functionArn;
@@ -873,6 +886,9 @@ class JaypieQueuedLambda extends Construct {
873
886
  metricSentMessageSize(props) {
874
887
  return this._queue.metricSentMessageSize(props);
875
888
  }
889
+ addEnvironment(key, value) {
890
+ this._lambdaConstruct.addEnvironment(key, value);
891
+ }
876
892
  }
877
893
 
878
894
  class JaypieBucketQueuedLambda extends JaypieQueuedLambda {
@@ -1834,5 +1850,5 @@ class JaypieWebDeploymentBucket extends Construct {
1834
1850
  }
1835
1851
  }
1836
1852
 
1837
- export { JaypieApiGateway, JaypieAppStack, JaypieBucketQueuedLambda, JaypieDatadogSecret, JaypieEnvSecret, JaypieExpressLambda, JaypieHostedZone, JaypieInfrastructureStack, JaypieLambda, JaypieMongoDbSecret, JaypieOpenAiSecret, JaypieQueuedLambda, JaypieSsoGroups, JaypieStack, JaypieTraceSigningKeySecret, JaypieWebDeploymentBucket, PermissionSetType, addDatadogLayer, addParamsAndSecrets, constructEnvName, constructStackName, constructTagger, envHostname, isEnv, isProductionEnv, isSandboxEnv, jaypieLambdaEnv, resolveHostedZone };
1853
+ export { JaypieApiGateway, JaypieAppStack, JaypieBucketQueuedLambda, JaypieDatadogSecret, JaypieEnvSecret, JaypieExpressLambda, JaypieHostedZone, JaypieInfrastructureStack, JaypieLambda, JaypieMongoDbSecret, JaypieOpenAiSecret, JaypieQueuedLambda, JaypieSsoGroups, JaypieStack, JaypieTraceSigningKeySecret, JaypieWebDeploymentBucket, PermissionSetType, addDatadogLayers, constructEnvName, constructStackName, constructTagger, envHostname, isEnv, isProductionEnv, isSandboxEnv, jaypieLambdaEnv, resolveDatadogLayers, resolveHostedZone, resolveParamsAndSecrets };
1838
1854
  //# sourceMappingURL=index.js.map