@jaypie/constructs 1.1.29 → 1.1.31

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.
@@ -25,6 +25,7 @@ export interface JaypieLambdaProps {
25
25
  parameterStoreTtl?: number;
26
26
  secretsManagerTtl?: number;
27
27
  };
28
+ provisionedConcurrentExecutions?: number;
28
29
  reservedConcurrentExecutions?: number;
29
30
  roleTag?: string;
30
31
  runtime?: lambda.Runtime;
package/dist/esm/index.js CHANGED
@@ -6,7 +6,7 @@ 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
- import { CDK as CDK$2, isValidSubdomain, ConfigurationError, isValidHostname, mergeDomain } from '@jaypie/cdk';
9
+ import { CDK as CDK$2, mergeDomain, isValidSubdomain, ConfigurationError, isValidHostname } from '@jaypie/cdk';
10
10
  import * as s3 from 'aws-cdk-lib/aws-s3';
11
11
  import * as s3n from 'aws-cdk-lib/aws-s3-notifications';
12
12
  import * as lambda from 'aws-cdk-lib/aws-lambda';
@@ -109,7 +109,23 @@ function stackTagger(stack, { name } = {}) {
109
109
  class JaypieApiGateway extends Construct {
110
110
  constructor(scope, id, props) {
111
111
  super(scope, id);
112
- const { certificate = true, handler, host, name, roleTag = CDK$2.ROLE.API, zone, } = props;
112
+ const { certificate = true, handler, host: propsHost, name, roleTag = CDK$2.ROLE.API, zone: propsZone, } = props;
113
+ // Determine zone from props or environment
114
+ let zone = propsZone;
115
+ if (!zone && process.env.CDK_ENV_API_HOSTED_ZONE) {
116
+ zone = process.env.CDK_ENV_API_HOSTED_ZONE;
117
+ }
118
+ // Determine host from props or environment
119
+ let host = propsHost;
120
+ if (!host) {
121
+ if (process.env.CDK_ENV_API_HOST_NAME) {
122
+ host = process.env.CDK_ENV_API_HOST_NAME;
123
+ }
124
+ else if (process.env.CDK_ENV_API_SUBDOMAIN &&
125
+ process.env.CDK_ENV_API_HOSTED_ZONE) {
126
+ host = mergeDomain(process.env.CDK_ENV_API_SUBDOMAIN, process.env.CDK_ENV_API_HOSTED_ZONE);
127
+ }
128
+ }
113
129
  const apiGatewayName = name || constructEnvName("ApiGateway");
114
130
  const certificateName = constructEnvName("Certificate");
115
131
  const apiDomainName = constructEnvName("ApiDomainName");
@@ -273,7 +289,7 @@ class JaypieAppStack extends JaypieStack {
273
289
  class JaypieLambda extends Construct {
274
290
  constructor(scope, id, props) {
275
291
  super(scope, id);
276
- const { code, datadogApiKeyArn, environment: initialEnvironment = {}, envSecrets = {}, handler = "index.handler", layers = [], logRetention = CDK$2.LAMBDA.LOG_RETENTION, memorySize = CDK$2.LAMBDA.MEMORY_SIZE, paramsAndSecrets, paramsAndSecretsOptions, reservedConcurrentExecutions, roleTag = CDK$2.ROLE.PROCESSING, runtime = lambda.Runtime.NODEJS_22_X, secrets = [], timeout = Duration.seconds(CDK$2.DURATION.LAMBDA_WORKER), vendorTag, } = props;
292
+ const { code, datadogApiKeyArn, environment: initialEnvironment = {}, envSecrets = {}, handler = "index.handler", layers = [], logRetention = CDK$2.LAMBDA.LOG_RETENTION, memorySize = CDK$2.LAMBDA.MEMORY_SIZE, paramsAndSecrets, paramsAndSecretsOptions, provisionedConcurrentExecutions, reservedConcurrentExecutions, roleTag = CDK$2.ROLE.PROCESSING, runtime = lambda.Runtime.NODEJS_22_X, secrets = [], timeout = Duration.seconds(CDK$2.DURATION.LAMBDA_WORKER), vendorTag, } = props;
277
293
  // Create a mutable copy of the environment variables
278
294
  let environment = { ...initialEnvironment };
279
295
  // Default environment variables from process.env if present
@@ -389,6 +405,14 @@ class JaypieLambda extends Construct {
389
405
  const datadogApiKey = secretsmanager.Secret.fromSecretCompleteArn(this, "DatadogApiKeyGrant", resolvedDatadogApiKeyArn);
390
406
  datadogApiKey.grantRead(this._lambda);
391
407
  }
408
+ // Configure provisioned concurrency if specified
409
+ if (provisionedConcurrentExecutions !== undefined) {
410
+ new lambda.Alias(this, "ProvisionedAlias", {
411
+ aliasName: "provisioned",
412
+ version: this._lambda.currentVersion,
413
+ provisionedConcurrentExecutions,
414
+ });
415
+ }
392
416
  if (roleTag) {
393
417
  Tags.of(this._lambda).add(CDK$2.TAG.ROLE, roleTag);
394
418
  }