@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.
- package/dist/cjs/JaypieLambda.d.ts +3 -2
- package/dist/cjs/JaypieQueuedLambda.d.ts +1 -1
- package/dist/cjs/helpers/{addDatadogLayer.d.ts → addDatadogLayers.d.ts} +1 -1
- package/dist/cjs/helpers/index.d.ts +3 -2
- package/dist/cjs/helpers/resolveDatadogLayers.d.ts +7 -0
- package/dist/cjs/helpers/resolveParamsAndSecrets.d.ts +10 -0
- package/dist/cjs/index.cjs +211 -194
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/esm/JaypieLambda.d.ts +3 -2
- package/dist/esm/JaypieQueuedLambda.d.ts +1 -1
- package/dist/esm/helpers/{addDatadogLayer.d.ts → addDatadogLayers.d.ts} +1 -1
- package/dist/esm/helpers/index.d.ts +3 -2
- package/dist/esm/helpers/resolveDatadogLayers.d.ts +7 -0
- package/dist/esm/helpers/resolveParamsAndSecrets.d.ts +10 -0
- package/dist/esm/index.js +99 -83
- package/dist/esm/index.js.map +1 -1
- package/package.json +4 -3
- package/dist/cjs/helpers/addParamsAndSecrets.d.ts +0 -11
- package/dist/esm/helpers/addParamsAndSecrets.d.ts +0 -11
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var constructs = require('constructs');
|
|
4
|
-
var cdk = require('aws-cdk-lib');
|
|
4
|
+
var cdk$1 = require('aws-cdk-lib');
|
|
5
5
|
var acm = require('aws-cdk-lib/aws-certificatemanager');
|
|
6
6
|
var apiGateway = require('aws-cdk-lib/aws-apigateway');
|
|
7
7
|
var route53 = require('aws-cdk-lib/aws-route53');
|
|
8
8
|
var route53Targets = require('aws-cdk-lib/aws-route53-targets');
|
|
9
|
-
var cdk
|
|
10
|
-
var lambda = require('aws-cdk-lib/aws-lambda');
|
|
9
|
+
var cdk = require('@jaypie/cdk');
|
|
11
10
|
var secretsmanager = require('aws-cdk-lib/aws-secretsmanager');
|
|
11
|
+
var datadogCdkConstructsV2 = require('datadog-cdk-constructs-v2');
|
|
12
|
+
var lambda = require('aws-cdk-lib/aws-lambda');
|
|
12
13
|
var s3 = require('aws-cdk-lib/aws-s3');
|
|
13
14
|
var s3n = require('aws-cdk-lib/aws-s3-notifications');
|
|
14
15
|
var sqs = require('aws-cdk-lib/aws-sqs');
|
|
@@ -36,13 +37,13 @@ function _interopNamespaceDefault(e) {
|
|
|
36
37
|
return Object.freeze(n);
|
|
37
38
|
}
|
|
38
39
|
|
|
39
|
-
var cdk__namespace = /*#__PURE__*/_interopNamespaceDefault(cdk);
|
|
40
|
+
var cdk__namespace = /*#__PURE__*/_interopNamespaceDefault(cdk$1);
|
|
40
41
|
var acm__namespace = /*#__PURE__*/_interopNamespaceDefault(acm);
|
|
41
42
|
var apiGateway__namespace = /*#__PURE__*/_interopNamespaceDefault(apiGateway);
|
|
42
43
|
var route53__namespace = /*#__PURE__*/_interopNamespaceDefault(route53);
|
|
43
44
|
var route53Targets__namespace = /*#__PURE__*/_interopNamespaceDefault(route53Targets);
|
|
44
|
-
var lambda__namespace = /*#__PURE__*/_interopNamespaceDefault(lambda);
|
|
45
45
|
var secretsmanager__namespace = /*#__PURE__*/_interopNamespaceDefault(secretsmanager);
|
|
46
|
+
var lambda__namespace = /*#__PURE__*/_interopNamespaceDefault(lambda);
|
|
46
47
|
var s3__namespace = /*#__PURE__*/_interopNamespaceDefault(s3);
|
|
47
48
|
var s3n__namespace = /*#__PURE__*/_interopNamespaceDefault(s3n);
|
|
48
49
|
var sqs__namespace = /*#__PURE__*/_interopNamespaceDefault(sqs);
|
|
@@ -51,23 +52,14 @@ var sso__namespace = /*#__PURE__*/_interopNamespaceDefault(sso);
|
|
|
51
52
|
var cloudfront__namespace = /*#__PURE__*/_interopNamespaceDefault(cloudfront);
|
|
52
53
|
var origins__namespace = /*#__PURE__*/_interopNamespaceDefault(origins);
|
|
53
54
|
|
|
54
|
-
function
|
|
55
|
-
const
|
|
56
|
-
// Resolve the Datadog API key ARN from multiple sources
|
|
55
|
+
function addDatadogLayers(lambdaFunction, options = {}) {
|
|
56
|
+
const datadogApiKeyArn = options?.datadogApiKeyArn;
|
|
57
57
|
const resolvedDatadogApiKeyArn = datadogApiKeyArn ||
|
|
58
58
|
process.env.DATADOG_API_KEY_ARN ||
|
|
59
59
|
process.env.CDK_ENV_DATADOG_API_KEY_ARN;
|
|
60
|
-
// Return false if no API key is found
|
|
61
60
|
if (!resolvedDatadogApiKeyArn) {
|
|
62
61
|
return false;
|
|
63
62
|
}
|
|
64
|
-
const stack = cdk.Stack.of(lambdaFunction);
|
|
65
|
-
// Create Datadog Node.js layer
|
|
66
|
-
const datadogNodeLayer = lambda__namespace.LayerVersion.fromLayerVersionArn(stack, `DatadogNodeLayer-${lambdaFunction.node.id}`, `arn:aws:lambda:${stack.region}:464622532012:layer:Datadog-Node20-x:${cdk$1.CDK.DATADOG.LAYER.NODE}`);
|
|
67
|
-
// Create Datadog Extension layer
|
|
68
|
-
const datadogExtensionLayer = lambda__namespace.LayerVersion.fromLayerVersionArn(stack, `DatadogExtensionLayer-${lambdaFunction.node.id}`, `arn:aws:lambda:${stack.region}:464622532012:layer:Datadog-Extension:${cdk$1.CDK.DATADOG.LAYER.EXTENSION}`);
|
|
69
|
-
// Add layers to the lambda function
|
|
70
|
-
lambdaFunction.addLayers(datadogNodeLayer, datadogExtensionLayer);
|
|
71
63
|
// Define Datadog environment variables
|
|
72
64
|
const datadogEnvVars = {
|
|
73
65
|
DD_API_KEY_SECRET_ARN: resolvedDatadogApiKeyArn,
|
|
@@ -76,74 +68,27 @@ function addDatadogLayer(lambdaFunction, options = {}) {
|
|
|
76
68
|
DD_PROFILING_ENABLED: "false",
|
|
77
69
|
DD_SERVERLESS_APPSEC_ENABLED: "false",
|
|
78
70
|
DD_SERVICE: process.env.PROJECT_SERVICE || "",
|
|
79
|
-
DD_SITE: cdk
|
|
80
|
-
DD_TAGS: `${cdk
|
|
71
|
+
DD_SITE: cdk.CDK.DATADOG.SITE,
|
|
72
|
+
DD_TAGS: `${cdk.CDK.TAG.SPONSOR}:${process.env.PROJECT_SPONSOR || ""}`,
|
|
81
73
|
DD_TRACE_OTEL_ENABLED: "false",
|
|
82
74
|
};
|
|
83
75
|
// Add environment variables only if they don't already exist
|
|
84
76
|
Object.entries(datadogEnvVars).forEach(([key, value]) => {
|
|
85
|
-
|
|
86
|
-
lambdaFunction.addEnvironment(key, value);
|
|
87
|
-
}
|
|
77
|
+
lambdaFunction.addEnvironment(key, value);
|
|
88
78
|
});
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
|
|
79
|
+
const datadogApiKeySecret = secretsmanager__namespace.Secret.fromSecretNameV2(lambdaFunction.stack, "DatadogApiKey", resolvedDatadogApiKeyArn);
|
|
80
|
+
const datadogLambda = new datadogCdkConstructsV2.DatadogLambda(lambdaFunction.stack, "DatadogLambda", {
|
|
81
|
+
apiKeySecret: datadogApiKeySecret, // apiKeySecret auto-grants secret access to the added lambdas
|
|
82
|
+
nodeLayerVersion: cdk.CDK.DATADOG.LAYER.NODE,
|
|
83
|
+
extensionLayerVersion: cdk.CDK.DATADOG.LAYER.EXTENSION,
|
|
84
|
+
env: process.env.PROJECT_ENV,
|
|
85
|
+
service: process.env.PROJECT_SERVICE,
|
|
86
|
+
version: process.env.PROJECT_VERSION,
|
|
87
|
+
});
|
|
88
|
+
datadogLambda.addLambdaFunctions([lambdaFunction]);
|
|
92
89
|
return true;
|
|
93
90
|
}
|
|
94
91
|
|
|
95
|
-
function addParamsAndSecrets(lambdaFunction, options = {}) {
|
|
96
|
-
const { paramsAndSecrets, paramsAndSecretsOptions } = options;
|
|
97
|
-
// Return false if explicitly disabled
|
|
98
|
-
if (paramsAndSecrets === false) {
|
|
99
|
-
return false;
|
|
100
|
-
}
|
|
101
|
-
const stack = cdk.Stack.of(lambdaFunction);
|
|
102
|
-
let resolvedLayer = undefined;
|
|
103
|
-
if (paramsAndSecrets instanceof lambda__namespace.ParamsAndSecretsLayerVersion) {
|
|
104
|
-
// For custom ParamsAndSecretsLayerVersion, we need to extract the ARN
|
|
105
|
-
// This is a workaround since ParamsAndSecretsLayerVersion doesn't implement ILayerVersion
|
|
106
|
-
const layerArn = `arn:aws:lambda:${stack.region}:017000801446:layer:AWSLambdaParametersAndSecrets:${lambda__namespace.ParamsAndSecretsVersions.V1_0_103}`;
|
|
107
|
-
resolvedLayer = lambda__namespace.LayerVersion.fromLayerVersionArn(stack, `ParamsAndSecretsLayer-${lambdaFunction.node.id}`, layerArn);
|
|
108
|
-
// Set environment variables for configuration
|
|
109
|
-
if (paramsAndSecretsOptions?.cacheSize) {
|
|
110
|
-
lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE", paramsAndSecretsOptions.cacheSize.toString());
|
|
111
|
-
}
|
|
112
|
-
if (paramsAndSecretsOptions?.logLevel) {
|
|
113
|
-
lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL", paramsAndSecretsOptions.logLevel);
|
|
114
|
-
}
|
|
115
|
-
if (paramsAndSecretsOptions?.parameterStoreTtl) {
|
|
116
|
-
lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_PARAMETER_STORE_TTL", paramsAndSecretsOptions.parameterStoreTtl.toString());
|
|
117
|
-
}
|
|
118
|
-
if (paramsAndSecretsOptions?.secretsManagerTtl) {
|
|
119
|
-
lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_SECRETS_MANAGER_TTL", paramsAndSecretsOptions.secretsManagerTtl.toString());
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
// Create default ParamsAndSecrets layer using LayerVersion.fromLayerVersionArn
|
|
124
|
-
const layerArn = `arn:aws:lambda:${stack.region}:017000801446:layer:AWSLambdaParametersAndSecrets:${lambda__namespace.ParamsAndSecretsVersions.V1_0_103}`;
|
|
125
|
-
resolvedLayer = lambda__namespace.LayerVersion.fromLayerVersionArn(stack, `ParamsAndSecretsLayer-${lambdaFunction.node.id}`, layerArn);
|
|
126
|
-
// Set default environment variables
|
|
127
|
-
if (paramsAndSecretsOptions?.cacheSize) {
|
|
128
|
-
lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_CACHE_SIZE", paramsAndSecretsOptions.cacheSize.toString());
|
|
129
|
-
}
|
|
130
|
-
const logLevel = paramsAndSecretsOptions?.logLevel || lambda__namespace.ParamsAndSecretsLogLevel.WARN;
|
|
131
|
-
lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL", logLevel);
|
|
132
|
-
if (paramsAndSecretsOptions?.parameterStoreTtl) {
|
|
133
|
-
lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_PARAMETER_STORE_TTL", paramsAndSecretsOptions.parameterStoreTtl.toString());
|
|
134
|
-
}
|
|
135
|
-
if (paramsAndSecretsOptions?.secretsManagerTtl) {
|
|
136
|
-
lambdaFunction.addEnvironment("PARAMETERS_SECRETS_EXTENSION_SECRETS_MANAGER_TTL", paramsAndSecretsOptions.secretsManagerTtl.toString());
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
// Add the layer to the lambda function
|
|
140
|
-
if (resolvedLayer) {
|
|
141
|
-
lambdaFunction.addLayers(resolvedLayer);
|
|
142
|
-
return true;
|
|
143
|
-
}
|
|
144
|
-
return false;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
92
|
function constructEnvName(name, opts) {
|
|
148
93
|
const env = opts?.env ?? process.env.PROJECT_ENV ?? "build";
|
|
149
94
|
const key = opts?.key ?? process.env.PROJECT_KEY ?? "project";
|
|
@@ -187,35 +132,35 @@ function constructTagger(construct, { name } = {}) {
|
|
|
187
132
|
const stackName = name || constructStackName();
|
|
188
133
|
const version = process.env.npm_package_version || process.env.PROJECT_VERSION || null;
|
|
189
134
|
if (process.env.PROJECT_COMMIT && process.env.PROJECT_COMMIT.length > 8) {
|
|
190
|
-
cdk.Tags.of(construct).add(CDK$1.TAG.BUILD_HEX, process.env.PROJECT_COMMIT.slice(0, 8));
|
|
135
|
+
cdk$1.Tags.of(construct).add(CDK$1.TAG.BUILD_HEX, process.env.PROJECT_COMMIT.slice(0, 8));
|
|
191
136
|
}
|
|
192
|
-
cdk.Tags.of(construct).add(CDK$1.TAG.BUILD_DATE, new Date().toISOString());
|
|
193
|
-
cdk.Tags.of(construct).add(CDK$1.TAG.BUILD_TIME, Date.now().toString());
|
|
137
|
+
cdk$1.Tags.of(construct).add(CDK$1.TAG.BUILD_DATE, new Date().toISOString());
|
|
138
|
+
cdk$1.Tags.of(construct).add(CDK$1.TAG.BUILD_TIME, Date.now().toString());
|
|
194
139
|
if (process.env.PROJECT_COMMIT)
|
|
195
|
-
cdk.Tags.of(construct).add(CDK$1.TAG.COMMIT, process.env.PROJECT_COMMIT);
|
|
196
|
-
cdk.Tags.of(construct).add(CDK$1.TAG.CREATION, CDK$1.CREATION.CDK);
|
|
140
|
+
cdk$1.Tags.of(construct).add(CDK$1.TAG.COMMIT, process.env.PROJECT_COMMIT);
|
|
141
|
+
cdk$1.Tags.of(construct).add(CDK$1.TAG.CREATION, CDK$1.CREATION.CDK);
|
|
197
142
|
if (process.env.PROJECT_ENV)
|
|
198
|
-
cdk.Tags.of(construct).add(CDK$1.TAG.ENV, process.env.PROJECT_ENV);
|
|
143
|
+
cdk$1.Tags.of(construct).add(CDK$1.TAG.ENV, process.env.PROJECT_ENV);
|
|
199
144
|
if (process.env.PROJECT_NONCE)
|
|
200
|
-
cdk.Tags.of(construct).add(CDK$1.TAG.NONCE, process.env.PROJECT_NONCE);
|
|
145
|
+
cdk$1.Tags.of(construct).add(CDK$1.TAG.NONCE, process.env.PROJECT_NONCE);
|
|
201
146
|
if (process.env.PROJECT_KEY)
|
|
202
|
-
cdk.Tags.of(construct).add(CDK$1.TAG.PROJECT, process.env.PROJECT_KEY);
|
|
203
|
-
cdk.Tags.of(construct).add(CDK$1.TAG.ROLE, CDK$1.ROLE.STACK);
|
|
147
|
+
cdk$1.Tags.of(construct).add(CDK$1.TAG.PROJECT, process.env.PROJECT_KEY);
|
|
148
|
+
cdk$1.Tags.of(construct).add(CDK$1.TAG.ROLE, CDK$1.ROLE.STACK);
|
|
204
149
|
if (process.env.PROJECT_SERVICE)
|
|
205
|
-
cdk.Tags.of(construct).add(CDK$1.TAG.SERVICE, process.env.PROJECT_SERVICE);
|
|
150
|
+
cdk$1.Tags.of(construct).add(CDK$1.TAG.SERVICE, process.env.PROJECT_SERVICE);
|
|
206
151
|
if (process.env.PROJECT_SPONSOR)
|
|
207
|
-
cdk.Tags.of(construct).add(CDK$1.TAG.SPONSOR, process.env.PROJECT_SPONSOR);
|
|
152
|
+
cdk$1.Tags.of(construct).add(CDK$1.TAG.SPONSOR, process.env.PROJECT_SPONSOR);
|
|
208
153
|
if (stackName)
|
|
209
|
-
cdk.Tags.of(construct).add(CDK$1.TAG.STACK, stackName);
|
|
154
|
+
cdk$1.Tags.of(construct).add(CDK$1.TAG.STACK, stackName);
|
|
210
155
|
if (version)
|
|
211
|
-
cdk.Tags.of(construct).add(CDK$1.TAG.VERSION, version);
|
|
156
|
+
cdk$1.Tags.of(construct).add(CDK$1.TAG.VERSION, version);
|
|
212
157
|
return true;
|
|
213
158
|
}
|
|
214
159
|
|
|
215
160
|
function envHostname({ component, domain, env, subdomain, } = {}) {
|
|
216
161
|
const resolvedDomain = domain || process.env.CDK_ENV_DOMAIN || process.env.CDK_ENV_HOSTED_ZONE;
|
|
217
162
|
if (!resolvedDomain) {
|
|
218
|
-
throw new cdk
|
|
163
|
+
throw new cdk.ConfigurationError("No hostname `domain` provided. Set CDK_ENV_DOMAIN or CDK_ENV_HOSTED_ZONE to use environment domain");
|
|
219
164
|
}
|
|
220
165
|
const resolvedComponent = component === "@" || component === "" ? undefined : component;
|
|
221
166
|
const resolvedSubdomain = subdomain || process.env.CDK_ENV_SUBDOMAIN;
|
|
@@ -239,13 +184,13 @@ function isEnv(env) {
|
|
|
239
184
|
* Check if the current environment is production
|
|
240
185
|
*/
|
|
241
186
|
function isProductionEnv() {
|
|
242
|
-
return isEnv(cdk
|
|
187
|
+
return isEnv(cdk.CDK.ENV.PRODUCTION);
|
|
243
188
|
}
|
|
244
189
|
/**
|
|
245
190
|
* Check if the current environment is sandbox
|
|
246
191
|
*/
|
|
247
192
|
function isSandboxEnv() {
|
|
248
|
-
return isEnv(cdk
|
|
193
|
+
return isEnv(cdk.CDK.ENV.SANDBOX);
|
|
249
194
|
}
|
|
250
195
|
|
|
251
196
|
function jaypieLambdaEnv(options = {}) {
|
|
@@ -302,9 +247,28 @@ function jaypieLambdaEnv(options = {}) {
|
|
|
302
247
|
return environment;
|
|
303
248
|
}
|
|
304
249
|
|
|
250
|
+
function resolveDatadogLayers(scope, options = {}) {
|
|
251
|
+
const { datadogApiKeyArn, uniqueId } = options;
|
|
252
|
+
let resolvedRegion = cdk$1.Stack.of(scope).region || "us-east-1";
|
|
253
|
+
// Resolve the Datadog API key ARN from multiple sources
|
|
254
|
+
const resolvedDatadogApiKeyArn = datadogApiKeyArn ||
|
|
255
|
+
process.env.DATADOG_API_KEY_ARN ||
|
|
256
|
+
process.env.CDK_ENV_DATADOG_API_KEY_ARN;
|
|
257
|
+
// Return null if no API key is found
|
|
258
|
+
if (!resolvedDatadogApiKeyArn) {
|
|
259
|
+
return undefined;
|
|
260
|
+
}
|
|
261
|
+
const layerIdSuffix = uniqueId || process.env.PROJECT_NONCE || Date.now().toString();
|
|
262
|
+
// Create Datadog Node.js layer
|
|
263
|
+
const datadogNodeLayer = lambda__namespace.LayerVersion.fromLayerVersionArn(scope, `DatadogNodeLayer-${layerIdSuffix}`, `arn:aws:lambda:${resolvedRegion}:464622532012:layer:Datadog-Node20-x:${cdk.CDK.DATADOG.LAYER.NODE}`);
|
|
264
|
+
// Create Datadog Extension layer
|
|
265
|
+
const datadogExtensionLayer = lambda__namespace.LayerVersion.fromLayerVersionArn(scope, `DatadogExtensionLayer-${layerIdSuffix}`, `arn:aws:lambda:${resolvedRegion}:464622532012:layer:Datadog-Extension:${cdk.CDK.DATADOG.LAYER.EXTENSION}`);
|
|
266
|
+
return [datadogNodeLayer, datadogExtensionLayer];
|
|
267
|
+
}
|
|
268
|
+
|
|
305
269
|
function resolveHostedZone(scope, { name = "HostedZone", zone = process.env.CDK_ENV_HOSTED_ZONE, } = {}) {
|
|
306
270
|
if (!zone) {
|
|
307
|
-
throw new cdk
|
|
271
|
+
throw new cdk.ConfigurationError("No `zone` provided. Set CDK_ENV_HOSTED_ZONE to use environment zone");
|
|
308
272
|
}
|
|
309
273
|
if (typeof zone === "string") {
|
|
310
274
|
return route53__namespace.HostedZone.fromLookup(scope, name, {
|
|
@@ -314,10 +278,34 @@ function resolveHostedZone(scope, { name = "HostedZone", zone = process.env.CDK_
|
|
|
314
278
|
return zone;
|
|
315
279
|
}
|
|
316
280
|
|
|
281
|
+
const resolveParamsAndSecrets = (paramsAndSecretsOptions) => {
|
|
282
|
+
if (paramsAndSecretsOptions === false) {
|
|
283
|
+
return;
|
|
284
|
+
}
|
|
285
|
+
let resolvedParamsAndSecrets;
|
|
286
|
+
if (paramsAndSecretsOptions instanceof lambda__namespace.ParamsAndSecretsLayerVersion) {
|
|
287
|
+
resolvedParamsAndSecrets = paramsAndSecretsOptions;
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
if (paramsAndSecretsOptions === true ||
|
|
291
|
+
paramsAndSecretsOptions === undefined) {
|
|
292
|
+
paramsAndSecretsOptions = {};
|
|
293
|
+
}
|
|
294
|
+
resolvedParamsAndSecrets = lambda__namespace.ParamsAndSecretsLayerVersion.fromVersion(lambda__namespace.ParamsAndSecretsVersions.V1_0_103, {
|
|
295
|
+
cacheSize: paramsAndSecretsOptions?.cacheSize,
|
|
296
|
+
logLevel: paramsAndSecretsOptions?.logLevel ||
|
|
297
|
+
lambda__namespace.ParamsAndSecretsLogLevel.WARN,
|
|
298
|
+
parameterStoreTtl: paramsAndSecretsOptions?.parameterStoreTtl,
|
|
299
|
+
secretsManagerTtl: paramsAndSecretsOptions?.secretsManagerTtl,
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
return resolvedParamsAndSecrets;
|
|
303
|
+
};
|
|
304
|
+
|
|
317
305
|
class JaypieApiGateway extends constructs.Construct {
|
|
318
306
|
constructor(scope, id, props) {
|
|
319
307
|
super(scope, id);
|
|
320
|
-
const { certificate = true, handler, host: propsHost, name, roleTag = cdk
|
|
308
|
+
const { certificate = true, handler, host: propsHost, name, roleTag = cdk.CDK.ROLE.API, zone: propsZone, } = props;
|
|
321
309
|
// Determine zone from props or environment
|
|
322
310
|
let zone = propsZone;
|
|
323
311
|
if (!zone && process.env.CDK_ENV_API_HOSTED_ZONE) {
|
|
@@ -331,7 +319,7 @@ class JaypieApiGateway extends constructs.Construct {
|
|
|
331
319
|
}
|
|
332
320
|
else if (process.env.CDK_ENV_API_SUBDOMAIN &&
|
|
333
321
|
process.env.CDK_ENV_API_HOSTED_ZONE) {
|
|
334
|
-
host = cdk
|
|
322
|
+
host = cdk.mergeDomain(process.env.CDK_ENV_API_SUBDOMAIN, process.env.CDK_ENV_API_HOSTED_ZONE);
|
|
335
323
|
}
|
|
336
324
|
}
|
|
337
325
|
const apiGatewayName = name || constructEnvName("ApiGateway");
|
|
@@ -346,7 +334,7 @@ class JaypieApiGateway extends constructs.Construct {
|
|
|
346
334
|
domainName: host,
|
|
347
335
|
validation: acm__namespace.CertificateValidation.fromDns(hostedZone),
|
|
348
336
|
});
|
|
349
|
-
cdk.Tags.of(certificateToUse).add(cdk
|
|
337
|
+
cdk$1.Tags.of(certificateToUse).add(cdk.CDK.TAG.ROLE, cdk.CDK.ROLE.HOSTING);
|
|
350
338
|
}
|
|
351
339
|
else if (typeof certificate === "object") {
|
|
352
340
|
certificateToUse = certificate;
|
|
@@ -365,19 +353,19 @@ class JaypieApiGateway extends constructs.Construct {
|
|
|
365
353
|
handler,
|
|
366
354
|
...lambdaRestApiProps,
|
|
367
355
|
});
|
|
368
|
-
cdk.Tags.of(this._api).add(cdk
|
|
356
|
+
cdk$1.Tags.of(this._api).add(cdk.CDK.TAG.ROLE, roleTag);
|
|
369
357
|
if (host && certificateToUse && hostedZone) {
|
|
370
358
|
this._domainName = this._api.addDomainName(apiDomainName, {
|
|
371
359
|
domainName: host,
|
|
372
360
|
certificate: certificateToUse,
|
|
373
361
|
});
|
|
374
|
-
cdk.Tags.of(this._domainName).add(cdk
|
|
362
|
+
cdk$1.Tags.of(this._domainName).add(cdk.CDK.TAG.ROLE, roleTag);
|
|
375
363
|
const record = new route53__namespace.ARecord(this, "AliasRecord", {
|
|
376
364
|
recordName: host,
|
|
377
365
|
target: route53__namespace.RecordTarget.fromAlias(new route53Targets__namespace.ApiGatewayDomain(this._domainName)),
|
|
378
366
|
zone: hostedZone,
|
|
379
367
|
});
|
|
380
|
-
cdk.Tags.of(record).add(cdk
|
|
368
|
+
cdk$1.Tags.of(record).add(cdk.CDK.TAG.ROLE, cdk.CDK.ROLE.NETWORKING);
|
|
381
369
|
}
|
|
382
370
|
}
|
|
383
371
|
get api() {
|
|
@@ -418,8 +406,8 @@ class JaypieApiGateway extends constructs.Construct {
|
|
|
418
406
|
}
|
|
419
407
|
get env() {
|
|
420
408
|
return {
|
|
421
|
-
account: cdk.Stack.of(this).account,
|
|
422
|
-
region: cdk.Stack.of(this).region,
|
|
409
|
+
account: cdk$1.Stack.of(this).account,
|
|
410
|
+
region: cdk$1.Stack.of(this).region,
|
|
423
411
|
};
|
|
424
412
|
}
|
|
425
413
|
get stack() {
|
|
@@ -457,7 +445,7 @@ class JaypieApiGateway extends constructs.Construct {
|
|
|
457
445
|
}
|
|
458
446
|
}
|
|
459
447
|
|
|
460
|
-
class JaypieStack extends cdk.Stack {
|
|
448
|
+
class JaypieStack extends cdk$1.Stack {
|
|
461
449
|
constructor(scope, id, props = {}) {
|
|
462
450
|
const { key, ...stackProps } = props;
|
|
463
451
|
// Handle stackName
|
|
@@ -490,7 +478,7 @@ class JaypieAppStack extends JaypieStack {
|
|
|
490
478
|
class JaypieLambda extends constructs.Construct {
|
|
491
479
|
constructor(scope, id, props) {
|
|
492
480
|
super(scope, id);
|
|
493
|
-
const { allowAllOutbound, allowPublicSubnet, architecture = lambda__namespace.Architecture.X86_64, code, codeSigningConfig, datadogApiKeyArn, deadLetterQueue, deadLetterQueueEnabled, deadLetterTopic, description, environment: initialEnvironment = {}, environmentEncryption, envSecrets = {}, ephemeralStorageSize, filesystem, handler = "index.handler", initialPolicy, layers = [], logRetention = cdk
|
|
481
|
+
const { allowAllOutbound, allowPublicSubnet, architecture = lambda__namespace.Architecture.X86_64, code, codeSigningConfig, datadogApiKeyArn, deadLetterQueue, deadLetterQueueEnabled, deadLetterTopic, description, environment: initialEnvironment = {}, environmentEncryption, envSecrets = {}, ephemeralStorageSize, filesystem, handler = "index.handler", initialPolicy, layers = [], logRetention = cdk.CDK.LAMBDA.LOG_RETENTION, logRetentionRole, logRetentionRetryOptions, maxEventAge, memorySize = cdk.CDK.LAMBDA.MEMORY_SIZE, paramsAndSecrets, paramsAndSecretsOptions, profiling, profilingGroup, provisionedConcurrentExecutions, reservedConcurrentExecutions, retryAttempts, roleTag = cdk.CDK.ROLE.PROCESSING, runtime = lambda__namespace.Runtime.NODEJS_22_X, runtimeManagementMode, secrets = [], securityGroups, timeout = cdk$1.Duration.seconds(cdk.CDK.DURATION.LAMBDA_WORKER), tracing, vendorTag, vpc, vpcSubnets, } = props;
|
|
494
482
|
// Get base environment with defaults
|
|
495
483
|
const environment = jaypieLambdaEnv({ initialEnvironment });
|
|
496
484
|
const codeAsset = typeof code === "string" ? lambda__namespace.Code.fromAsset(code) : code;
|
|
@@ -511,6 +499,10 @@ class JaypieLambda extends constructs.Construct {
|
|
|
511
499
|
}
|
|
512
500
|
return acc;
|
|
513
501
|
}, {});
|
|
502
|
+
// Add ParamsAndSecrets layer if configured
|
|
503
|
+
const resolvedParamsAndSecrets = paramsAndSecrets
|
|
504
|
+
? resolveParamsAndSecrets(paramsAndSecretsOptions)
|
|
505
|
+
: undefined;
|
|
514
506
|
// Create Lambda Function
|
|
515
507
|
this._lambda = new lambda__namespace.Function(this, "Function", {
|
|
516
508
|
allowAllOutbound,
|
|
@@ -538,6 +530,7 @@ class JaypieLambda extends constructs.Construct {
|
|
|
538
530
|
logRetentionRetryOptions,
|
|
539
531
|
maxEventAge,
|
|
540
532
|
memorySize,
|
|
533
|
+
paramsAndSecrets: resolvedParamsAndSecrets,
|
|
541
534
|
profiling,
|
|
542
535
|
profilingGroup,
|
|
543
536
|
reservedConcurrentExecutions,
|
|
@@ -545,26 +538,20 @@ class JaypieLambda extends constructs.Construct {
|
|
|
545
538
|
runtime,
|
|
546
539
|
runtimeManagementMode,
|
|
547
540
|
securityGroups,
|
|
548
|
-
timeout: typeof timeout === "number" ? cdk.Duration.seconds(timeout) : timeout,
|
|
541
|
+
timeout: typeof timeout === "number" ? cdk$1.Duration.seconds(timeout) : timeout,
|
|
549
542
|
tracing,
|
|
550
543
|
vpc,
|
|
551
544
|
vpcSubnets,
|
|
552
545
|
// Enable auto-publishing of versions when using provisioned concurrency
|
|
553
546
|
currentVersionOptions: provisionedConcurrentExecutions !== undefined
|
|
554
547
|
? {
|
|
555
|
-
removalPolicy: cdk.RemovalPolicy.RETAIN,
|
|
548
|
+
removalPolicy: cdk$1.RemovalPolicy.RETAIN,
|
|
556
549
|
description: "Auto-published version for provisioned concurrency",
|
|
557
550
|
// Don't set provisioned concurrency here - it will be set on the alias
|
|
558
551
|
}
|
|
559
552
|
: undefined,
|
|
560
553
|
});
|
|
561
|
-
|
|
562
|
-
addParamsAndSecrets(this._lambda, {
|
|
563
|
-
paramsAndSecrets,
|
|
564
|
-
paramsAndSecretsOptions,
|
|
565
|
-
});
|
|
566
|
-
// Add Datadog layers and environment variables if configured
|
|
567
|
-
addDatadogLayer(this._lambda, { datadogApiKeyArn });
|
|
554
|
+
addDatadogLayers(this._lambda, { datadogApiKeyArn });
|
|
568
555
|
// Grant secret read permissions
|
|
569
556
|
Object.values(envSecrets).forEach((secret) => {
|
|
570
557
|
secret.grantRead(this._lambda);
|
|
@@ -587,10 +574,10 @@ class JaypieLambda extends constructs.Construct {
|
|
|
587
574
|
this._provisioned.node.addDependency(version);
|
|
588
575
|
}
|
|
589
576
|
if (roleTag) {
|
|
590
|
-
cdk.Tags.of(this._lambda).add(cdk
|
|
577
|
+
cdk$1.Tags.of(this._lambda).add(cdk.CDK.TAG.ROLE, roleTag);
|
|
591
578
|
}
|
|
592
579
|
if (vendorTag) {
|
|
593
|
-
cdk.Tags.of(this._lambda).add(cdk
|
|
580
|
+
cdk$1.Tags.of(this._lambda).add(cdk.CDK.TAG.VENDOR, vendorTag);
|
|
594
581
|
}
|
|
595
582
|
// Assign _reference based on provisioned state
|
|
596
583
|
this._reference =
|
|
@@ -687,8 +674,8 @@ class JaypieLambda extends constructs.Construct {
|
|
|
687
674
|
}
|
|
688
675
|
get env() {
|
|
689
676
|
return {
|
|
690
|
-
account: cdk.Stack.of(this).account,
|
|
691
|
-
region: cdk.Stack.of(this).region,
|
|
677
|
+
account: cdk$1.Stack.of(this).account,
|
|
678
|
+
region: cdk$1.Stack.of(this).region,
|
|
692
679
|
};
|
|
693
680
|
}
|
|
694
681
|
get stack() {
|
|
@@ -697,44 +684,73 @@ class JaypieLambda extends constructs.Construct {
|
|
|
697
684
|
applyRemovalPolicy(policy) {
|
|
698
685
|
this._reference.applyRemovalPolicy(policy);
|
|
699
686
|
}
|
|
687
|
+
addEnvironment(key, value) {
|
|
688
|
+
this._lambda.addEnvironment(key, value);
|
|
689
|
+
}
|
|
700
690
|
}
|
|
701
691
|
|
|
702
692
|
class JaypieQueuedLambda extends constructs.Construct {
|
|
703
693
|
constructor(scope, id, props) {
|
|
704
694
|
super(scope, id);
|
|
705
|
-
const { batchSize = 1, code, environment = {}, envSecrets = {}, fifo = true, handler = "index.handler", layers = [], logRetention = cdk
|
|
695
|
+
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.CDK.LAMBDA.LOG_RETENTION, logRetentionRole, logRetentionRetryOptions, maxEventAge, memorySize = cdk.CDK.LAMBDA.MEMORY_SIZE, paramsAndSecrets, paramsAndSecretsOptions, profiling, profilingGroup, provisionedConcurrentExecutions, reservedConcurrentExecutions, retryAttempts, roleTag, runtime = lambda__namespace.Runtime.NODEJS_22_X, runtimeManagementMode, secrets = [], securityGroups, timeout = cdk$1.Duration.seconds(cdk.CDK.DURATION.LAMBDA_WORKER), tracing, vendorTag, visibilityTimeout = cdk$1.Duration.seconds(cdk.CDK.DURATION.LAMBDA_WORKER), vpc, vpcSubnets, } = props;
|
|
706
696
|
// Create SQS Queue
|
|
707
697
|
this._queue = new sqs__namespace.Queue(this, "Queue", {
|
|
708
698
|
fifo,
|
|
709
699
|
visibilityTimeout: typeof visibilityTimeout === "number"
|
|
710
|
-
? cdk.Duration.seconds(visibilityTimeout)
|
|
700
|
+
? cdk$1.Duration.seconds(visibilityTimeout)
|
|
711
701
|
: visibilityTimeout,
|
|
712
702
|
});
|
|
713
703
|
if (roleTag) {
|
|
714
|
-
cdk.Tags.of(this._queue).add(cdk
|
|
704
|
+
cdk$1.Tags.of(this._queue).add(cdk.CDK.TAG.ROLE, roleTag);
|
|
715
705
|
}
|
|
716
706
|
if (vendorTag) {
|
|
717
|
-
cdk.Tags.of(this._queue).add(cdk
|
|
707
|
+
cdk$1.Tags.of(this._queue).add(cdk.CDK.TAG.VENDOR, vendorTag);
|
|
718
708
|
}
|
|
719
709
|
// Create Lambda with JaypieLambda
|
|
720
710
|
this._lambdaConstruct = new JaypieLambda(this, "Function", {
|
|
711
|
+
allowAllOutbound,
|
|
712
|
+
allowPublicSubnet,
|
|
713
|
+
architecture,
|
|
721
714
|
code,
|
|
715
|
+
codeSigningConfig,
|
|
716
|
+
datadogApiKeyArn,
|
|
717
|
+
deadLetterQueue,
|
|
718
|
+
deadLetterQueueEnabled,
|
|
719
|
+
deadLetterTopic,
|
|
720
|
+
description,
|
|
722
721
|
environment: {
|
|
723
722
|
...environment,
|
|
724
723
|
CDK_ENV_QUEUE_URL: this._queue.queueUrl,
|
|
725
724
|
},
|
|
725
|
+
environmentEncryption,
|
|
726
726
|
envSecrets,
|
|
727
|
+
ephemeralStorageSize,
|
|
728
|
+
filesystem,
|
|
727
729
|
handler,
|
|
730
|
+
initialPolicy,
|
|
728
731
|
layers,
|
|
729
732
|
logRetention,
|
|
733
|
+
logRetentionRole,
|
|
734
|
+
logRetentionRetryOptions,
|
|
735
|
+
maxEventAge,
|
|
730
736
|
memorySize,
|
|
731
737
|
paramsAndSecrets,
|
|
738
|
+
paramsAndSecretsOptions,
|
|
739
|
+
profiling,
|
|
740
|
+
profilingGroup,
|
|
741
|
+
provisionedConcurrentExecutions,
|
|
732
742
|
reservedConcurrentExecutions,
|
|
743
|
+
retryAttempts,
|
|
733
744
|
roleTag,
|
|
734
745
|
runtime,
|
|
746
|
+
runtimeManagementMode,
|
|
735
747
|
secrets,
|
|
748
|
+
securityGroups,
|
|
736
749
|
timeout,
|
|
750
|
+
tracing,
|
|
737
751
|
vendorTag,
|
|
752
|
+
vpc,
|
|
753
|
+
vpcSubnets,
|
|
738
754
|
});
|
|
739
755
|
// Set up queue and lambda integration
|
|
740
756
|
this._queue.grantConsumeMessages(this._lambdaConstruct);
|
|
@@ -750,9 +766,6 @@ class JaypieQueuedLambda extends constructs.Construct {
|
|
|
750
766
|
get lambda() {
|
|
751
767
|
return this._lambdaConstruct.lambda;
|
|
752
768
|
}
|
|
753
|
-
get code() {
|
|
754
|
-
return this._lambdaConstruct.code;
|
|
755
|
-
}
|
|
756
769
|
// IFunction implementation
|
|
757
770
|
get functionArn() {
|
|
758
771
|
return this._lambdaConstruct.functionArn;
|
|
@@ -835,12 +848,12 @@ class JaypieQueuedLambda extends constructs.Construct {
|
|
|
835
848
|
}
|
|
836
849
|
get env() {
|
|
837
850
|
return {
|
|
838
|
-
account: cdk.Stack.of(this).account,
|
|
839
|
-
region: cdk.Stack.of(this).region,
|
|
851
|
+
account: cdk$1.Stack.of(this).account,
|
|
852
|
+
region: cdk$1.Stack.of(this).region,
|
|
840
853
|
};
|
|
841
854
|
}
|
|
842
855
|
get stack() {
|
|
843
|
-
return cdk.Stack.of(this);
|
|
856
|
+
return cdk$1.Stack.of(this);
|
|
844
857
|
}
|
|
845
858
|
applyRemovalPolicy(policy) {
|
|
846
859
|
this._lambdaConstruct.applyRemovalPolicy(policy);
|
|
@@ -905,6 +918,9 @@ class JaypieQueuedLambda extends constructs.Construct {
|
|
|
905
918
|
metricSentMessageSize(props) {
|
|
906
919
|
return this._queue.metricSentMessageSize(props);
|
|
907
920
|
}
|
|
921
|
+
addEnvironment(key, value) {
|
|
922
|
+
this._lambdaConstruct.addEnvironment(key, value);
|
|
923
|
+
}
|
|
908
924
|
}
|
|
909
925
|
|
|
910
926
|
class JaypieBucketQueuedLambda extends JaypieQueuedLambda {
|
|
@@ -915,15 +931,15 @@ class JaypieBucketQueuedLambda extends JaypieQueuedLambda {
|
|
|
915
931
|
// Create S3 Bucket
|
|
916
932
|
this._bucket = new s3__namespace.Bucket(this, "Bucket", {
|
|
917
933
|
bucketName: bucketOptions.bucketName || bucketName,
|
|
918
|
-
removalPolicy: bucketOptions.removalPolicy || cdk.RemovalPolicy.RETAIN,
|
|
934
|
+
removalPolicy: bucketOptions.removalPolicy || cdk$1.RemovalPolicy.RETAIN,
|
|
919
935
|
...bucketOptions,
|
|
920
936
|
});
|
|
921
937
|
// Add tags to bucket
|
|
922
938
|
if (roleTag) {
|
|
923
|
-
cdk.Tags.of(this._bucket).add(cdk
|
|
939
|
+
cdk$1.Tags.of(this._bucket).add(cdk.CDK.TAG.ROLE, roleTag);
|
|
924
940
|
}
|
|
925
941
|
if (vendorTag) {
|
|
926
|
-
cdk.Tags.of(this._bucket).add(cdk
|
|
942
|
+
cdk$1.Tags.of(this._bucket).add(cdk.CDK.TAG.VENDOR, vendorTag);
|
|
927
943
|
}
|
|
928
944
|
// Add an event notification from the bucket to the queue
|
|
929
945
|
this._bucket.addEventNotification(s3__namespace.EventType.OBJECT_CREATED, new s3n__namespace.SqsDestination(this.queue));
|
|
@@ -1088,13 +1104,13 @@ class JaypieBucketQueuedLambda extends JaypieQueuedLambda {
|
|
|
1088
1104
|
|
|
1089
1105
|
// It is a consumer if the environment is ephemeral
|
|
1090
1106
|
function checkEnvIsConsumer(env = process.env) {
|
|
1091
|
-
return (env.PROJECT_ENV === cdk
|
|
1107
|
+
return (env.PROJECT_ENV === cdk.CDK.ENV.PERSONAL ||
|
|
1092
1108
|
!!env.CDK_ENV_PERSONAL ||
|
|
1093
1109
|
/** @deprecated */ env.PROJECT_ENV === "ephemeral" ||
|
|
1094
1110
|
/** @deprecated */ !!env.CDK_ENV_EPHEMERAL);
|
|
1095
1111
|
}
|
|
1096
1112
|
function checkEnvIsProvider(env = process.env) {
|
|
1097
|
-
return env.PROJECT_ENV === cdk
|
|
1113
|
+
return env.PROJECT_ENV === cdk.CDK.ENV.SANDBOX;
|
|
1098
1114
|
}
|
|
1099
1115
|
function cleanName(name) {
|
|
1100
1116
|
return name.replace(/[^a-zA-Z0-9:-]/g, "");
|
|
@@ -1108,7 +1124,7 @@ function exportEnvName(name, env = process.env) {
|
|
|
1108
1124
|
}
|
|
1109
1125
|
else {
|
|
1110
1126
|
if (checkEnvIsConsumer(env)) {
|
|
1111
|
-
rawName = `env-${cdk
|
|
1127
|
+
rawName = `env-${cdk.CDK.ENV.SANDBOX}-${env.PROJECT_KEY}-${name}`;
|
|
1112
1128
|
}
|
|
1113
1129
|
else {
|
|
1114
1130
|
rawName = `env-${env.PROJECT_ENV}-${env.PROJECT_KEY}-${name}`;
|
|
@@ -1129,10 +1145,10 @@ class JaypieEnvSecret extends constructs.Construct {
|
|
|
1129
1145
|
exportName = cleanName(exportParam);
|
|
1130
1146
|
}
|
|
1131
1147
|
if (consumer) {
|
|
1132
|
-
const secretName = cdk.Fn.importValue(exportName);
|
|
1148
|
+
const secretName = cdk$1.Fn.importValue(exportName);
|
|
1133
1149
|
this._secret = secretsmanager__namespace.Secret.fromSecretNameV2(this, id, secretName);
|
|
1134
1150
|
// Add CfnOutput for consumer secrets
|
|
1135
|
-
new cdk.CfnOutput(this, `ConsumedName`, {
|
|
1151
|
+
new cdk$1.CfnOutput(this, `ConsumedName`, {
|
|
1136
1152
|
value: this._secret.secretName,
|
|
1137
1153
|
});
|
|
1138
1154
|
}
|
|
@@ -1141,24 +1157,24 @@ class JaypieEnvSecret extends constructs.Construct {
|
|
|
1141
1157
|
const secretProps = {
|
|
1142
1158
|
generateSecretString,
|
|
1143
1159
|
secretStringValue: !generateSecretString && secretValue
|
|
1144
|
-
? cdk.SecretValue.unsafePlainText(secretValue)
|
|
1160
|
+
? cdk$1.SecretValue.unsafePlainText(secretValue)
|
|
1145
1161
|
: undefined,
|
|
1146
1162
|
};
|
|
1147
1163
|
this._secret = new secretsmanager__namespace.Secret(this, id, secretProps);
|
|
1148
1164
|
if (roleTag) {
|
|
1149
|
-
cdk.Tags.of(this._secret).add(cdk
|
|
1165
|
+
cdk$1.Tags.of(this._secret).add(cdk.CDK.TAG.ROLE, roleTag);
|
|
1150
1166
|
}
|
|
1151
1167
|
if (vendorTag) {
|
|
1152
|
-
cdk.Tags.of(this._secret).add(cdk
|
|
1168
|
+
cdk$1.Tags.of(this._secret).add(cdk.CDK.TAG.VENDOR, vendorTag);
|
|
1153
1169
|
}
|
|
1154
1170
|
if (provider) {
|
|
1155
|
-
new cdk.CfnOutput(this, `ProvidedName`, {
|
|
1171
|
+
new cdk$1.CfnOutput(this, `ProvidedName`, {
|
|
1156
1172
|
value: this._secret.secretName,
|
|
1157
1173
|
exportName,
|
|
1158
1174
|
});
|
|
1159
1175
|
}
|
|
1160
1176
|
else {
|
|
1161
|
-
new cdk.CfnOutput(this, `CreatedName`, {
|
|
1177
|
+
new cdk$1.CfnOutput(this, `CreatedName`, {
|
|
1162
1178
|
value: this._secret.secretName,
|
|
1163
1179
|
});
|
|
1164
1180
|
}
|
|
@@ -1166,12 +1182,12 @@ class JaypieEnvSecret extends constructs.Construct {
|
|
|
1166
1182
|
}
|
|
1167
1183
|
// IResource implementation
|
|
1168
1184
|
get stack() {
|
|
1169
|
-
return cdk.Stack.of(this);
|
|
1185
|
+
return cdk$1.Stack.of(this);
|
|
1170
1186
|
}
|
|
1171
1187
|
get env() {
|
|
1172
1188
|
return {
|
|
1173
|
-
account: cdk.Stack.of(this).account,
|
|
1174
|
-
region: cdk.Stack.of(this).region,
|
|
1189
|
+
account: cdk$1.Stack.of(this).account,
|
|
1190
|
+
region: cdk$1.Stack.of(this).region,
|
|
1175
1191
|
};
|
|
1176
1192
|
}
|
|
1177
1193
|
applyRemovalPolicy(policy) {
|
|
@@ -1223,8 +1239,8 @@ class JaypieDatadogSecret extends JaypieEnvSecret {
|
|
|
1223
1239
|
constructor(scope, id = "MongoConnectionString", props) {
|
|
1224
1240
|
const defaultProps = {
|
|
1225
1241
|
envKey: "DATADOG_API_KEY",
|
|
1226
|
-
roleTag: cdk
|
|
1227
|
-
vendorTag: cdk
|
|
1242
|
+
roleTag: cdk.CDK.ROLE.MONITORING,
|
|
1243
|
+
vendorTag: cdk.CDK.VENDOR.DATADOG,
|
|
1228
1244
|
...props,
|
|
1229
1245
|
};
|
|
1230
1246
|
super(scope, id, defaultProps);
|
|
@@ -1234,8 +1250,8 @@ class JaypieDatadogSecret extends JaypieEnvSecret {
|
|
|
1234
1250
|
class JaypieExpressLambda extends JaypieLambda {
|
|
1235
1251
|
constructor(scope, id, props) {
|
|
1236
1252
|
super(scope, id, {
|
|
1237
|
-
timeout: cdk.Duration.seconds(cdk
|
|
1238
|
-
roleTag: cdk
|
|
1253
|
+
timeout: cdk$1.Duration.seconds(cdk.CDK.DURATION.EXPRESS_API),
|
|
1254
|
+
roleTag: cdk.CDK.ROLE.API,
|
|
1239
1255
|
...props,
|
|
1240
1256
|
});
|
|
1241
1257
|
}
|
|
@@ -1251,7 +1267,7 @@ class JaypieHostedZone extends constructs.Construct {
|
|
|
1251
1267
|
constructor(scope, id, props) {
|
|
1252
1268
|
super(scope, id);
|
|
1253
1269
|
const { destination, zoneName, project } = props;
|
|
1254
|
-
const service = props.service || cdk
|
|
1270
|
+
const service = props.service || cdk.CDK.SERVICE.INFRASTRUCTURE;
|
|
1255
1271
|
// Create the log group
|
|
1256
1272
|
this.logGroup = new awsLogs.LogGroup(this, "LogGroup", {
|
|
1257
1273
|
logGroupName: process.env.PROJECT_NONCE
|
|
@@ -1260,10 +1276,10 @@ class JaypieHostedZone extends constructs.Construct {
|
|
|
1260
1276
|
retention: awsLogs.RetentionDays.ONE_WEEK,
|
|
1261
1277
|
});
|
|
1262
1278
|
// Add tags
|
|
1263
|
-
cdk__namespace.Tags.of(this.logGroup).add(cdk
|
|
1264
|
-
cdk__namespace.Tags.of(this.logGroup).add(cdk
|
|
1279
|
+
cdk__namespace.Tags.of(this.logGroup).add(cdk.CDK.TAG.SERVICE, service);
|
|
1280
|
+
cdk__namespace.Tags.of(this.logGroup).add(cdk.CDK.TAG.ROLE, cdk.CDK.ROLE.NETWORKING);
|
|
1265
1281
|
if (project) {
|
|
1266
|
-
cdk__namespace.Tags.of(this.logGroup).add(cdk
|
|
1282
|
+
cdk__namespace.Tags.of(this.logGroup).add(cdk.CDK.TAG.PROJECT, project);
|
|
1267
1283
|
}
|
|
1268
1284
|
// Grant Route 53 permissions to write to the log group
|
|
1269
1285
|
this.logGroup.grantWrite(new awsIam.ServicePrincipal(SERVICE.ROUTE53));
|
|
@@ -1280,10 +1296,10 @@ class JaypieHostedZone extends constructs.Construct {
|
|
|
1280
1296
|
zoneName,
|
|
1281
1297
|
});
|
|
1282
1298
|
// Add tags
|
|
1283
|
-
cdk__namespace.Tags.of(this.hostedZone).add(cdk
|
|
1284
|
-
cdk__namespace.Tags.of(this.hostedZone).add(cdk
|
|
1299
|
+
cdk__namespace.Tags.of(this.hostedZone).add(cdk.CDK.TAG.SERVICE, service);
|
|
1300
|
+
cdk__namespace.Tags.of(this.hostedZone).add(cdk.CDK.TAG.ROLE, cdk.CDK.ROLE.NETWORKING);
|
|
1285
1301
|
if (project) {
|
|
1286
|
-
cdk__namespace.Tags.of(this.hostedZone).add(cdk
|
|
1302
|
+
cdk__namespace.Tags.of(this.hostedZone).add(cdk.CDK.TAG.PROJECT, project);
|
|
1287
1303
|
}
|
|
1288
1304
|
}
|
|
1289
1305
|
}
|
|
@@ -1303,7 +1319,7 @@ class JaypieInfrastructureStack extends JaypieStack {
|
|
|
1303
1319
|
super(scope, id, { key, ...stackProps });
|
|
1304
1320
|
// Add infrastructure-specific tag
|
|
1305
1321
|
if (process.env.CDK_ENV_INFRASTRUCTURE_STACK_SHA) {
|
|
1306
|
-
cdk.Tags.of(this).add(CDK.TAG.STACK_SHA, process.env.CDK_ENV_INFRASTRUCTURE_STACK_SHA);
|
|
1322
|
+
cdk$1.Tags.of(this).add(CDK.TAG.STACK_SHA, process.env.CDK_ENV_INFRASTRUCTURE_STACK_SHA);
|
|
1307
1323
|
}
|
|
1308
1324
|
}
|
|
1309
1325
|
}
|
|
@@ -1312,8 +1328,8 @@ class JaypieMongoDbSecret extends JaypieEnvSecret {
|
|
|
1312
1328
|
constructor(scope, id = "MongoConnectionString", props) {
|
|
1313
1329
|
const defaultProps = {
|
|
1314
1330
|
envKey: "MONGODB_URI",
|
|
1315
|
-
roleTag: cdk
|
|
1316
|
-
vendorTag: cdk
|
|
1331
|
+
roleTag: cdk.CDK.ROLE.STORAGE,
|
|
1332
|
+
vendorTag: cdk.CDK.VENDOR.MONGODB,
|
|
1317
1333
|
...props,
|
|
1318
1334
|
};
|
|
1319
1335
|
super(scope, id, defaultProps);
|
|
@@ -1324,8 +1340,8 @@ class JaypieOpenAiSecret extends JaypieEnvSecret {
|
|
|
1324
1340
|
constructor(scope, id = "OpenAiApiKey", props) {
|
|
1325
1341
|
const defaultProps = {
|
|
1326
1342
|
envKey: "OPENAI_API_KEY",
|
|
1327
|
-
roleTag: cdk
|
|
1328
|
-
vendorTag: cdk
|
|
1343
|
+
roleTag: cdk.CDK.ROLE.PROCESSING,
|
|
1344
|
+
vendorTag: cdk.CDK.VENDOR.OPENAI,
|
|
1329
1345
|
...props,
|
|
1330
1346
|
};
|
|
1331
1347
|
super(scope, id, defaultProps);
|
|
@@ -1385,11 +1401,11 @@ class JaypieSsoGroups extends constructs.Construct {
|
|
|
1385
1401
|
instanceArn: this.instanceArn,
|
|
1386
1402
|
name: exports.PermissionSetType.ADMINISTRATOR,
|
|
1387
1403
|
description: "Full administrative access to all AWS services and resources",
|
|
1388
|
-
sessionDuration: cdk.Duration.hours(8).toIsoString(),
|
|
1404
|
+
sessionDuration: cdk$1.Duration.hours(8).toIsoString(),
|
|
1389
1405
|
managedPolicies: ["arn:aws:iam::aws:policy/AdministratorAccess"],
|
|
1390
1406
|
inlinePolicy: mergedPolicy,
|
|
1391
1407
|
});
|
|
1392
|
-
cdk.Tags.of(permissionSet).add(cdk
|
|
1408
|
+
cdk$1.Tags.of(permissionSet).add(cdk.CDK.TAG.SERVICE, cdk.CDK.SERVICE.SSO);
|
|
1393
1409
|
this.permissionSets[exports.PermissionSetType.ADMINISTRATOR] = permissionSet;
|
|
1394
1410
|
}
|
|
1395
1411
|
/**
|
|
@@ -1422,11 +1438,11 @@ class JaypieSsoGroups extends constructs.Construct {
|
|
|
1422
1438
|
instanceArn: this.instanceArn,
|
|
1423
1439
|
name: exports.PermissionSetType.ANALYST,
|
|
1424
1440
|
description: "Read-only access with billing visibility and limited write access",
|
|
1425
|
-
sessionDuration: cdk.Duration.hours(4).toIsoString(),
|
|
1441
|
+
sessionDuration: cdk$1.Duration.hours(4).toIsoString(),
|
|
1426
1442
|
managedPolicies: ["arn:aws:iam::aws:policy/ReadOnlyAccess"],
|
|
1427
1443
|
inlinePolicy: mergedPolicy,
|
|
1428
1444
|
});
|
|
1429
|
-
cdk.Tags.of(permissionSet).add(cdk
|
|
1445
|
+
cdk$1.Tags.of(permissionSet).add(cdk.CDK.TAG.SERVICE, cdk.CDK.SERVICE.SSO);
|
|
1430
1446
|
this.permissionSets[exports.PermissionSetType.ANALYST] = permissionSet;
|
|
1431
1447
|
}
|
|
1432
1448
|
/**
|
|
@@ -1474,13 +1490,13 @@ class JaypieSsoGroups extends constructs.Construct {
|
|
|
1474
1490
|
instanceArn: this.instanceArn,
|
|
1475
1491
|
name: exports.PermissionSetType.DEVELOPER,
|
|
1476
1492
|
description: "System administrator access with expanded write permissions",
|
|
1477
|
-
sessionDuration: cdk.Duration.hours(8).toIsoString(),
|
|
1493
|
+
sessionDuration: cdk$1.Duration.hours(8).toIsoString(),
|
|
1478
1494
|
managedPolicies: [
|
|
1479
1495
|
"arn:aws:iam::aws:policy/job-function/SystemAdministrator",
|
|
1480
1496
|
],
|
|
1481
1497
|
inlinePolicy: mergedPolicy,
|
|
1482
1498
|
});
|
|
1483
|
-
cdk.Tags.of(permissionSet).add(cdk
|
|
1499
|
+
cdk$1.Tags.of(permissionSet).add(cdk.CDK.TAG.SERVICE, cdk.CDK.SERVICE.SSO);
|
|
1484
1500
|
this.permissionSets[exports.PermissionSetType.DEVELOPER] = permissionSet;
|
|
1485
1501
|
}
|
|
1486
1502
|
/**
|
|
@@ -1547,8 +1563,8 @@ class JaypieSsoGroups extends constructs.Construct {
|
|
|
1547
1563
|
targetId: accountId,
|
|
1548
1564
|
targetType: "AWS_ACCOUNT",
|
|
1549
1565
|
});
|
|
1550
|
-
cdk.Tags.of(assignment).add(cdk
|
|
1551
|
-
cdk.Tags.of(assignment).add("Group", "administrators");
|
|
1566
|
+
cdk$1.Tags.of(assignment).add(cdk.CDK.TAG.SERVICE, cdk.CDK.SERVICE.SSO);
|
|
1567
|
+
cdk$1.Tags.of(assignment).add("Group", "administrators");
|
|
1552
1568
|
});
|
|
1553
1569
|
}
|
|
1554
1570
|
/**
|
|
@@ -1574,8 +1590,8 @@ class JaypieSsoGroups extends constructs.Construct {
|
|
|
1574
1590
|
targetId: accountId,
|
|
1575
1591
|
targetType: "AWS_ACCOUNT",
|
|
1576
1592
|
});
|
|
1577
|
-
cdk.Tags.of(assignment).add(cdk
|
|
1578
|
-
cdk.Tags.of(assignment).add("Group", "analysts");
|
|
1593
|
+
cdk$1.Tags.of(assignment).add(cdk.CDK.TAG.SERVICE, cdk.CDK.SERVICE.SSO);
|
|
1594
|
+
cdk$1.Tags.of(assignment).add("Group", "analysts");
|
|
1579
1595
|
});
|
|
1580
1596
|
}
|
|
1581
1597
|
/**
|
|
@@ -1600,8 +1616,8 @@ class JaypieSsoGroups extends constructs.Construct {
|
|
|
1600
1616
|
targetId: accountId,
|
|
1601
1617
|
targetType: "AWS_ACCOUNT",
|
|
1602
1618
|
});
|
|
1603
|
-
cdk.Tags.of(assignment).add(cdk
|
|
1604
|
-
cdk.Tags.of(assignment).add("Group", "developers");
|
|
1619
|
+
cdk$1.Tags.of(assignment).add(cdk.CDK.TAG.SERVICE, cdk.CDK.SERVICE.SSO);
|
|
1620
|
+
cdk$1.Tags.of(assignment).add("Group", "developers");
|
|
1605
1621
|
});
|
|
1606
1622
|
}
|
|
1607
1623
|
}
|
|
@@ -1610,8 +1626,8 @@ class JaypieTraceSigningKeySecret extends JaypieEnvSecret {
|
|
|
1610
1626
|
constructor(scope, id = "TraceSigningKey", props) {
|
|
1611
1627
|
const defaultProps = {
|
|
1612
1628
|
envKey: "TRACE_SIGNING_KEY",
|
|
1613
|
-
roleTag: cdk
|
|
1614
|
-
vendorTag: cdk
|
|
1629
|
+
roleTag: cdk.CDK.ROLE.API,
|
|
1630
|
+
vendorTag: cdk.CDK.VENDOR.KNOWTRACE,
|
|
1615
1631
|
...props,
|
|
1616
1632
|
};
|
|
1617
1633
|
super(scope, id, defaultProps);
|
|
@@ -1621,19 +1637,19 @@ class JaypieTraceSigningKeySecret extends JaypieEnvSecret {
|
|
|
1621
1637
|
class JaypieWebDeploymentBucket extends constructs.Construct {
|
|
1622
1638
|
constructor(scope, id, props = {}) {
|
|
1623
1639
|
super(scope, id);
|
|
1624
|
-
const roleTag = props.roleTag || cdk
|
|
1640
|
+
const roleTag = props.roleTag || cdk.CDK.ROLE.HOSTING;
|
|
1625
1641
|
// Environment variable validation
|
|
1626
1642
|
if (process.env.CDK_ENV_WEB_SUBDOMAIN &&
|
|
1627
|
-
!cdk
|
|
1628
|
-
throw new cdk
|
|
1643
|
+
!cdk.isValidSubdomain(process.env.CDK_ENV_WEB_SUBDOMAIN)) {
|
|
1644
|
+
throw new cdk.ConfigurationError("CDK_ENV_WEB_SUBDOMAIN is not a valid subdomain");
|
|
1629
1645
|
}
|
|
1630
1646
|
if (process.env.CDK_ENV_WEB_HOSTED_ZONE &&
|
|
1631
|
-
!cdk
|
|
1632
|
-
throw new cdk
|
|
1647
|
+
!cdk.isValidHostname(process.env.CDK_ENV_WEB_HOSTED_ZONE)) {
|
|
1648
|
+
throw new cdk.ConfigurationError("CDK_ENV_WEB_HOSTED_ZONE is not a valid hostname");
|
|
1633
1649
|
}
|
|
1634
1650
|
if (process.env.CDK_ENV_HOSTED_ZONE &&
|
|
1635
|
-
!cdk
|
|
1636
|
-
throw new cdk
|
|
1651
|
+
!cdk.isValidHostname(process.env.CDK_ENV_HOSTED_ZONE)) {
|
|
1652
|
+
throw new cdk.ConfigurationError("CDK_ENV_HOSTED_ZONE is not a valid hostname");
|
|
1637
1653
|
}
|
|
1638
1654
|
// Determine host from props or environment
|
|
1639
1655
|
let host = props.host;
|
|
@@ -1641,7 +1657,7 @@ class JaypieWebDeploymentBucket extends constructs.Construct {
|
|
|
1641
1657
|
try {
|
|
1642
1658
|
host =
|
|
1643
1659
|
process.env.CDK_ENV_WEB_HOST ||
|
|
1644
|
-
cdk
|
|
1660
|
+
cdk.mergeDomain(process.env.CDK_ENV_WEB_SUBDOMAIN || "", process.env.CDK_ENV_WEB_HOSTED_ZONE ||
|
|
1645
1661
|
process.env.CDK_ENV_HOSTED_ZONE ||
|
|
1646
1662
|
"");
|
|
1647
1663
|
}
|
|
@@ -1649,8 +1665,8 @@ class JaypieWebDeploymentBucket extends constructs.Construct {
|
|
|
1649
1665
|
host = undefined;
|
|
1650
1666
|
}
|
|
1651
1667
|
}
|
|
1652
|
-
if (host && !cdk
|
|
1653
|
-
throw new cdk
|
|
1668
|
+
if (host && !cdk.isValidHostname(host)) {
|
|
1669
|
+
throw new cdk.ConfigurationError("Host is not a valid hostname");
|
|
1654
1670
|
}
|
|
1655
1671
|
// Determine zone from props or environment
|
|
1656
1672
|
const zone = props.zone ||
|
|
@@ -1663,7 +1679,7 @@ class JaypieWebDeploymentBucket extends constructs.Construct {
|
|
|
1663
1679
|
blockPublicAccess: s3__namespace.BlockPublicAccess.BLOCK_ACLS,
|
|
1664
1680
|
bucketName: props.name || constructEnvName("web"),
|
|
1665
1681
|
publicReadAccess: true,
|
|
1666
|
-
removalPolicy: cdk.RemovalPolicy.DESTROY,
|
|
1682
|
+
removalPolicy: cdk$1.RemovalPolicy.DESTROY,
|
|
1667
1683
|
versioned: false,
|
|
1668
1684
|
websiteErrorDocument: "index.html",
|
|
1669
1685
|
websiteIndexDocument: "index.html",
|
|
@@ -1681,7 +1697,7 @@ class JaypieWebDeploymentBucket extends constructs.Construct {
|
|
|
1681
1697
|
this.isWebsite = this.bucket.isWebsite;
|
|
1682
1698
|
this.notificationsHandlerRole = undefined;
|
|
1683
1699
|
this.policy = this.bucket.policy;
|
|
1684
|
-
cdk.Tags.of(this.bucket).add(cdk
|
|
1700
|
+
cdk$1.Tags.of(this.bucket).add(cdk.CDK.TAG.ROLE, roleTag);
|
|
1685
1701
|
// Create deployment role if repository is configured
|
|
1686
1702
|
let repo;
|
|
1687
1703
|
if (process.env.CDK_ENV_REPO) {
|
|
@@ -1689,14 +1705,14 @@ class JaypieWebDeploymentBucket extends constructs.Construct {
|
|
|
1689
1705
|
}
|
|
1690
1706
|
if (repo) {
|
|
1691
1707
|
const bucketDeployRole = new awsIam.Role(this, "DestinationBucketDeployRole", {
|
|
1692
|
-
assumedBy: new awsIam.FederatedPrincipal(cdk.Fn.importValue(cdk
|
|
1708
|
+
assumedBy: new awsIam.FederatedPrincipal(cdk$1.Fn.importValue(cdk.CDK.IMPORT.OIDC_PROVIDER), {
|
|
1693
1709
|
StringLike: {
|
|
1694
1710
|
"token.actions.githubusercontent.com:sub": repo,
|
|
1695
1711
|
},
|
|
1696
1712
|
}, "sts:AssumeRoleWithWebIdentity"),
|
|
1697
|
-
maxSessionDuration: cdk.Duration.hours(1),
|
|
1713
|
+
maxSessionDuration: cdk$1.Duration.hours(1),
|
|
1698
1714
|
});
|
|
1699
|
-
cdk.Tags.of(bucketDeployRole).add(cdk
|
|
1715
|
+
cdk$1.Tags.of(bucketDeployRole).add(cdk.CDK.TAG.ROLE, cdk.CDK.ROLE.DEPLOY);
|
|
1700
1716
|
// Allow the role to write to the bucket
|
|
1701
1717
|
bucketDeployRole.addToPolicy(new awsIam.PolicyStatement({
|
|
1702
1718
|
effect: awsIam.Effect.ALLOW,
|
|
@@ -1721,7 +1737,7 @@ class JaypieWebDeploymentBucket extends constructs.Construct {
|
|
|
1721
1737
|
}));
|
|
1722
1738
|
this.deployRoleArn = bucketDeployRole.roleArn;
|
|
1723
1739
|
// Output the deploy role ARN
|
|
1724
|
-
new cdk.CfnOutput(this, "DestinationBucketDeployRoleArn", {
|
|
1740
|
+
new cdk$1.CfnOutput(this, "DestinationBucketDeployRoleArn", {
|
|
1725
1741
|
value: bucketDeployRole.roleArn,
|
|
1726
1742
|
});
|
|
1727
1743
|
}
|
|
@@ -1741,10 +1757,10 @@ class JaypieWebDeploymentBucket extends constructs.Construct {
|
|
|
1741
1757
|
domainName: host,
|
|
1742
1758
|
validation: acm__namespace.CertificateValidation.fromDns(hostedZone),
|
|
1743
1759
|
});
|
|
1744
|
-
new cdk.CfnOutput(this, "CertificateArn", {
|
|
1760
|
+
new cdk$1.CfnOutput(this, "CertificateArn", {
|
|
1745
1761
|
value: this.certificate.certificateArn,
|
|
1746
1762
|
});
|
|
1747
|
-
cdk.Tags.of(this.certificate).add(cdk
|
|
1763
|
+
cdk$1.Tags.of(this.certificate).add(cdk.CDK.TAG.ROLE, roleTag);
|
|
1748
1764
|
}
|
|
1749
1765
|
// Create CloudFront distribution
|
|
1750
1766
|
this.distribution = new cloudfront__namespace.Distribution(this, "Distribution", {
|
|
@@ -1756,7 +1772,7 @@ class JaypieWebDeploymentBucket extends constructs.Construct {
|
|
|
1756
1772
|
certificate: this.certificate,
|
|
1757
1773
|
domainNames: [host],
|
|
1758
1774
|
});
|
|
1759
|
-
cdk.Tags.of(this.distribution).add(cdk
|
|
1775
|
+
cdk$1.Tags.of(this.distribution).add(cdk.CDK.TAG.ROLE, roleTag);
|
|
1760
1776
|
// If this is production, enable caching on everything but index.html
|
|
1761
1777
|
if (isProductionEnv()) {
|
|
1762
1778
|
this.distribution.addBehavior("/*", new origins__namespace.S3Origin(this.bucket), {
|
|
@@ -1770,7 +1786,7 @@ class JaypieWebDeploymentBucket extends constructs.Construct {
|
|
|
1770
1786
|
target: route53__namespace.RecordTarget.fromAlias(new route53Targets__namespace.CloudFrontTarget(this.distribution)),
|
|
1771
1787
|
zone: hostedZone,
|
|
1772
1788
|
});
|
|
1773
|
-
cdk.Tags.of(record).add(cdk
|
|
1789
|
+
cdk$1.Tags.of(record).add(cdk.CDK.TAG.ROLE, cdk.CDK.ROLE.NETWORKING);
|
|
1774
1790
|
this.distributionDomainName = this.distribution.distributionDomainName;
|
|
1775
1791
|
}
|
|
1776
1792
|
}
|
|
@@ -1882,8 +1898,7 @@ exports.JaypieSsoGroups = JaypieSsoGroups;
|
|
|
1882
1898
|
exports.JaypieStack = JaypieStack;
|
|
1883
1899
|
exports.JaypieTraceSigningKeySecret = JaypieTraceSigningKeySecret;
|
|
1884
1900
|
exports.JaypieWebDeploymentBucket = JaypieWebDeploymentBucket;
|
|
1885
|
-
exports.
|
|
1886
|
-
exports.addParamsAndSecrets = addParamsAndSecrets;
|
|
1901
|
+
exports.addDatadogLayers = addDatadogLayers;
|
|
1887
1902
|
exports.constructEnvName = constructEnvName;
|
|
1888
1903
|
exports.constructStackName = constructStackName;
|
|
1889
1904
|
exports.constructTagger = constructTagger;
|
|
@@ -1892,5 +1907,7 @@ exports.isEnv = isEnv;
|
|
|
1892
1907
|
exports.isProductionEnv = isProductionEnv;
|
|
1893
1908
|
exports.isSandboxEnv = isSandboxEnv;
|
|
1894
1909
|
exports.jaypieLambdaEnv = jaypieLambdaEnv;
|
|
1910
|
+
exports.resolveDatadogLayers = resolveDatadogLayers;
|
|
1895
1911
|
exports.resolveHostedZone = resolveHostedZone;
|
|
1912
|
+
exports.resolveParamsAndSecrets = resolveParamsAndSecrets;
|
|
1896
1913
|
//# sourceMappingURL=index.cjs.map
|