@aligent/cdk-aspects 0.2.0 → 0.3.2
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/CHANGELOG.md +18 -0
- package/README.md +84 -6
- package/index.d.ts +5 -3
- package/index.js +20 -6
- package/lib/defaults/log-group.d.ts +50 -0
- package/lib/defaults/log-group.js +83 -0
- package/lib/defaults/nodejs-function.d.ts +52 -0
- package/lib/defaults/nodejs-function.js +75 -0
- package/lib/defaults/step-functions.d.ts +36 -0
- package/lib/defaults/step-functions.js +74 -0
- package/lib/{defaults/version-functions/version-functions.d.ts → lambda-sfn-versioning.d.ts} +1 -1
- package/lib/lambda-sfn-versioning.js +67 -0
- package/package.json +10 -2
- package/lib/defaults/version-functions/version-functions.js +0 -67
- /package/lib/{defaults/microservice-checks/microservice-checks.d.ts → microservice-checks.d.ts} +0 -0
- /package/lib/{defaults/microservice-checks/microservice-checks.js → microservice-checks.js} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @aligent/cdk-aspects
|
|
2
2
|
|
|
3
|
+
## 0.3.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1606](https://github.com/aligent/cdk-constructs/pull/1606) [`0e35d91`](https://github.com/aligent/cdk-constructs/commit/0e35d91ab5244d90625ebe19d943694af875a422) Thanks [@porhkz](https://github.com/porhkz)! - Update repository URLs in package.json to match npm provenance expectations
|
|
8
|
+
|
|
9
|
+
## 0.3.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#1601](https://github.com/aligent/cdk-constructs/pull/1601) [`1488e90`](https://github.com/aligent/cdk-constructs/commit/1488e90d7f468f7646142a9968a3d4e06389b358) Thanks [@porhkz](https://github.com/porhkz)! - Fix badges on readmes
|
|
14
|
+
|
|
15
|
+
## 0.3.0
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- [#1582](https://github.com/aligent/cdk-constructs/pull/1582) [`e069f79`](https://github.com/aligent/cdk-constructs/commit/e069f794bdbb003510ffb769504bc776839c7500) Thanks [@kai-nguyen-aligent](https://github.com/kai-nguyen-aligent)! - Migrate new Microservices default aspects (log-group, nodejs-function, and step-functions); Re-organies aspects depends on their functionality.
|
|
20
|
+
|
|
3
21
|
## 0.2.0
|
|
4
22
|
|
|
5
23
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -1,21 +1,99 @@
|
|
|
1
1
|
# Aligent CDK Aspects
|
|
2
2
|
|
|
3
|
+
  
|
|
4
|
+
|
|
3
5
|
This package provides a collection of CDK aspects that can be applied to your AWS CDK stacks to enforce best practices and automate common configurations.
|
|
4
6
|
|
|
5
7
|
## Defaults
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
A collection of aspects that automatically apply best-practice defaults to AWS resources in your CDK stacks.
|
|
8
10
|
|
|
9
|
-
|
|
11
|
+
### Log Group Defaults
|
|
12
|
+
|
|
13
|
+
Automatically applies configuration-aware defaults to CloudWatch Log Groups, balancing between cost optimization and data retention needs.
|
|
14
|
+
|
|
15
|
+
#### Features
|
|
16
|
+
|
|
17
|
+
- Automatically configures retention periods based on duration profile
|
|
18
|
+
- Applies appropriate removal policies
|
|
19
|
+
- Duration profiles:
|
|
20
|
+
- **SHORT**: 1 week retention, destroy on stack deletion
|
|
21
|
+
- **MEDIUM**: 6 months retention, destroy on stack deletion
|
|
22
|
+
- **LONG**: 2 years retention, retain on stack deletion
|
|
23
|
+
|
|
24
|
+
#### Usage
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import { Aspects } from "aws-cdk-lib";
|
|
28
|
+
import { LogGroupDefaultsAspect } from "@aligent/cdk-aspects";
|
|
29
|
+
|
|
30
|
+
const app = new App();
|
|
31
|
+
Aspects.of(app).add(new LogGroupDefaultsAspect({ duration: "SHORT" }));
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Node.js Function Defaults
|
|
35
|
+
|
|
36
|
+
Automatically applies configuration-aware defaults to Node.js Lambda functions for consistent runtime configuration and observability.
|
|
37
|
+
|
|
38
|
+
#### Features
|
|
39
|
+
|
|
40
|
+
- Configures Node.js runtime version
|
|
41
|
+
- Enables X-Ray tracing by default
|
|
42
|
+
- Optionally enables source maps for better error stack traces (default: enabled)
|
|
43
|
+
- Configures default memory size (default: 256 MB)
|
|
44
|
+
- Configures default timeout (default: 3 seconds)
|
|
45
|
+
|
|
46
|
+
#### Usage
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
import { Aspects } from "aws-cdk-lib";
|
|
50
|
+
import { Runtime } from "aws-cdk-lib/aws-lambda";
|
|
51
|
+
import { NodeJsFunctionDefaultsAspect } from "@aligent/cdk-aspects";
|
|
52
|
+
|
|
53
|
+
const app = new App();
|
|
54
|
+
Aspects.of(app).add(
|
|
55
|
+
new NodeJsFunctionDefaultsAspect({
|
|
56
|
+
runtime: Runtime.NODEJS_24_X,
|
|
57
|
+
sourceMap: true, // default: true
|
|
58
|
+
memorySize: 256, // default: 256
|
|
59
|
+
timeout: 3, // default: 3
|
|
60
|
+
})
|
|
61
|
+
);
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Step Functions Defaults
|
|
65
|
+
|
|
66
|
+
Automatically applies tracing and logging settings to AWS Step Functions state machines for enhanced observability.
|
|
10
67
|
|
|
11
68
|
#### Features
|
|
12
69
|
|
|
70
|
+
- Enables X-Ray tracing for all state machines
|
|
71
|
+
- Automatically creates log groups for EXPRESS state machines
|
|
72
|
+
- Configures comprehensive logging with full execution data capture
|
|
73
|
+
|
|
74
|
+
#### Usage
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
import { Aspects } from "aws-cdk-lib";
|
|
78
|
+
import { StepFunctionsDefaultsAspect } from "@aligent/cdk-aspects";
|
|
79
|
+
|
|
80
|
+
const app = new App();
|
|
81
|
+
Aspects.of(app).add(new StepFunctionsDefaultsAspect());
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
## Microservice Checks
|
|
86
|
+
|
|
87
|
+
A set of rules that validate your infrastructure against recommended practices using the cdk-nag library.
|
|
88
|
+
|
|
89
|
+
### Features
|
|
90
|
+
|
|
13
91
|
- Validates Lambda function memory configuration
|
|
14
92
|
- Validates Lambda function timeout configuration
|
|
15
93
|
- Validates Lambda function tracing configuration
|
|
16
94
|
- Validates CloudWatch Log Group retention policy
|
|
17
95
|
|
|
18
|
-
|
|
96
|
+
### Usage
|
|
19
97
|
|
|
20
98
|
```typescript
|
|
21
99
|
import { Aspects } from "aws-cdk-lib";
|
|
@@ -27,17 +105,17 @@ const stack = new Stack(app, "MyStack");
|
|
|
27
105
|
Aspects.of(stack).add(new MicroserviceChecks());
|
|
28
106
|
```
|
|
29
107
|
|
|
30
|
-
|
|
108
|
+
## Version Functions
|
|
31
109
|
|
|
32
110
|
An aspect that automatically adds versioning and aliases to Lambda functions and Step Functions.
|
|
33
111
|
|
|
34
|
-
|
|
112
|
+
### Features
|
|
35
113
|
|
|
36
114
|
- Automatically creates function aliases for Lambda functions
|
|
37
115
|
- Creates versions and aliases for Step Functions with 100% traffic routing
|
|
38
116
|
- Supports custom alias names
|
|
39
117
|
|
|
40
|
-
|
|
118
|
+
### Usage
|
|
41
119
|
|
|
42
120
|
```typescript
|
|
43
121
|
import { Aspects } from "aws-cdk-lib";
|
package/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export
|
|
1
|
+
export * from "./lib/defaults/log-group";
|
|
2
|
+
export * from "./lib/defaults/nodejs-function";
|
|
3
|
+
export * from "./lib/defaults/step-functions";
|
|
4
|
+
export * from "./lib/lambda-sfn-versioning";
|
|
5
|
+
export * from "./lib/microservice-checks";
|
package/index.js
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
__exportStar(require("./lib/defaults/log-group"), exports);
|
|
18
|
+
__exportStar(require("./lib/defaults/nodejs-function"), exports);
|
|
19
|
+
__exportStar(require("./lib/defaults/step-functions"), exports);
|
|
20
|
+
__exportStar(require("./lib/lambda-sfn-versioning"), exports);
|
|
21
|
+
__exportStar(require("./lib/microservice-checks"), exports);
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkRBQXlDO0FBQ3pDLGlFQUErQztBQUMvQyxnRUFBOEM7QUFDOUMsOERBQTRDO0FBQzVDLDREQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2xpYi9kZWZhdWx0cy9sb2ctZ3JvdXBcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9kZWZhdWx0cy9ub2RlanMtZnVuY3Rpb25cIjtcbmV4cG9ydCAqIGZyb20gXCIuL2xpYi9kZWZhdWx0cy9zdGVwLWZ1bmN0aW9uc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL2xhbWJkYS1zZm4tdmVyc2lvbmluZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGliL21pY3Jvc2VydmljZS1jaGVja3NcIjtcbiJdfQ==
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type IAspect } from "aws-cdk-lib";
|
|
2
|
+
import { IConstruct } from "constructs";
|
|
3
|
+
interface Config {
|
|
4
|
+
duration: "SHORT" | "MEDIUM" | "LONG";
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Aspect that automatically applies configuration-aware defaults to CloudWatch Log Groups
|
|
8
|
+
*
|
|
9
|
+
* Visits all constructs in the scope and automatically applies configuration-specific to log groups.
|
|
10
|
+
* Different configurations balance between cost optimization and data retention needs.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // Apply configuration-specific defaults to all log groups
|
|
15
|
+
* Aspects.of(app).add(new LogGroupDefaultsAspect({ duration: 'SHORT' }));
|
|
16
|
+
*
|
|
17
|
+
* // Log groups automatically inherit configuration defaults
|
|
18
|
+
* new LogGroup(stack, 'MyLogGroup', {
|
|
19
|
+
* // retention and removal policy applied automatically
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @see https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_logs.LogGroup.html
|
|
24
|
+
*/
|
|
25
|
+
export declare class LogGroupDefaultsAspect implements IAspect {
|
|
26
|
+
private readonly defaultProps;
|
|
27
|
+
/**
|
|
28
|
+
* Creates a new LogGroupDefaultsAspect
|
|
29
|
+
*
|
|
30
|
+
* @param config - Configuration identifier used to select appropriate defaults.
|
|
31
|
+
*/
|
|
32
|
+
constructor(config: Config);
|
|
33
|
+
/**
|
|
34
|
+
* Get duration-specific log group properties
|
|
35
|
+
*
|
|
36
|
+
* @param duration - The duration to get the log group properties for
|
|
37
|
+
* @returns The log group properties for the duration
|
|
38
|
+
*/
|
|
39
|
+
private retentionProperties;
|
|
40
|
+
/**
|
|
41
|
+
* Visits a construct and applies configuration-appropriate defaults
|
|
42
|
+
*
|
|
43
|
+
* Applies configuration-specific retention and removal policies to log groups
|
|
44
|
+
* that don't already have these properties explicitly set.
|
|
45
|
+
*
|
|
46
|
+
* @param node - The construct to potentially modify
|
|
47
|
+
*/
|
|
48
|
+
visit(node: IConstruct): void;
|
|
49
|
+
}
|
|
50
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LogGroupDefaultsAspect = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
6
|
+
/**
|
|
7
|
+
* Aspect that automatically applies configuration-aware defaults to CloudWatch Log Groups
|
|
8
|
+
*
|
|
9
|
+
* Visits all constructs in the scope and automatically applies configuration-specific to log groups.
|
|
10
|
+
* Different configurations balance between cost optimization and data retention needs.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // Apply configuration-specific defaults to all log groups
|
|
15
|
+
* Aspects.of(app).add(new LogGroupDefaultsAspect({ duration: 'SHORT' }));
|
|
16
|
+
*
|
|
17
|
+
* // Log groups automatically inherit configuration defaults
|
|
18
|
+
* new LogGroup(stack, 'MyLogGroup', {
|
|
19
|
+
* // retention and removal policy applied automatically
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @see https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_logs.LogGroup.html
|
|
24
|
+
*/
|
|
25
|
+
class LogGroupDefaultsAspect {
|
|
26
|
+
/**
|
|
27
|
+
* Creates a new LogGroupDefaultsAspect
|
|
28
|
+
*
|
|
29
|
+
* @param config - Configuration identifier used to select appropriate defaults.
|
|
30
|
+
*/
|
|
31
|
+
constructor(config) {
|
|
32
|
+
const props = this.retentionProperties(config.duration);
|
|
33
|
+
this.defaultProps = { ...props };
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get duration-specific log group properties
|
|
37
|
+
*
|
|
38
|
+
* @param duration - The duration to get the log group properties for
|
|
39
|
+
* @returns The log group properties for the duration
|
|
40
|
+
*/
|
|
41
|
+
retentionProperties(duration) {
|
|
42
|
+
switch (duration) {
|
|
43
|
+
case "SHORT":
|
|
44
|
+
return {
|
|
45
|
+
retention: aws_logs_1.RetentionDays.ONE_WEEK,
|
|
46
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
47
|
+
};
|
|
48
|
+
case "MEDIUM":
|
|
49
|
+
return {
|
|
50
|
+
retention: aws_logs_1.RetentionDays.SIX_MONTHS,
|
|
51
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
52
|
+
};
|
|
53
|
+
default:
|
|
54
|
+
return {
|
|
55
|
+
retention: aws_logs_1.RetentionDays.TWO_YEARS,
|
|
56
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.RETAIN,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Visits a construct and applies configuration-appropriate defaults
|
|
62
|
+
*
|
|
63
|
+
* Applies configuration-specific retention and removal policies to log groups
|
|
64
|
+
* that don't already have these properties explicitly set.
|
|
65
|
+
*
|
|
66
|
+
* @param node - The construct to potentially modify
|
|
67
|
+
*/
|
|
68
|
+
visit(node) {
|
|
69
|
+
if (node instanceof aws_logs_1.LogGroup) {
|
|
70
|
+
if (this.defaultProps.removalPolicy) {
|
|
71
|
+
node.applyRemovalPolicy(this.defaultProps.removalPolicy);
|
|
72
|
+
}
|
|
73
|
+
if (this.defaultProps.retention) {
|
|
74
|
+
const cfnLogGroup = node.node.defaultChild;
|
|
75
|
+
if (cfnLogGroup && cfnLogGroup.retentionInDays === undefined) {
|
|
76
|
+
cfnLogGroup.retentionInDays = this.defaultProps.retention;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.LogGroupDefaultsAspect = LogGroupDefaultsAspect;
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nLWdyb3VwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibG9nLWdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUEwRDtBQUMxRCxtREFLOEI7QUFPOUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNILE1BQWEsc0JBQXNCO0lBR2pDOzs7O09BSUc7SUFDSCxZQUFZLE1BQWM7UUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxtQkFBbUIsQ0FBQyxRQUFxQztRQUMvRCxRQUFRLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLEtBQUssT0FBTztnQkFDVixPQUFPO29CQUNMLFNBQVMsRUFBRSx3QkFBYSxDQUFDLFFBQVE7b0JBQ2pDLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87aUJBQ3JDLENBQUM7WUFDSixLQUFLLFFBQVE7Z0JBQ1gsT0FBTztvQkFDTCxTQUFTLEVBQUUsd0JBQWEsQ0FBQyxVQUFVO29CQUNuQyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO2lCQUNyQyxDQUFDO1lBQ0o7Z0JBQ0UsT0FBTztvQkFDTCxTQUFTLEVBQUUsd0JBQWEsQ0FBQyxTQUFTO29CQUNsQyxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxNQUFNO2lCQUNwQyxDQUFDO1FBQ04sQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLElBQWdCO1FBQ3BCLElBQUksSUFBSSxZQUFZLG1CQUFRLEVBQUUsQ0FBQztZQUM3QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFFRCxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBMkIsQ0FBQztnQkFDMUQsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLGVBQWUsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDN0QsV0FBVyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztnQkFDNUQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBN0RELHdEQTZEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbW92YWxQb2xpY3ksIHR5cGUgSUFzcGVjdCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgQ2ZuTG9nR3JvdXAsXG4gIExvZ0dyb3VwLFxuICBSZXRlbnRpb25EYXlzLFxuICB0eXBlIExvZ0dyb3VwUHJvcHMsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmludGVyZmFjZSBDb25maWcge1xuICBkdXJhdGlvbjogXCJTSE9SVFwiIHwgXCJNRURJVU1cIiB8IFwiTE9OR1wiO1xufVxuXG4vKipcbiAqIEFzcGVjdCB0aGF0IGF1dG9tYXRpY2FsbHkgYXBwbGllcyBjb25maWd1cmF0aW9uLWF3YXJlIGRlZmF1bHRzIHRvIENsb3VkV2F0Y2ggTG9nIEdyb3Vwc1xuICpcbiAqIFZpc2l0cyBhbGwgY29uc3RydWN0cyBpbiB0aGUgc2NvcGUgYW5kIGF1dG9tYXRpY2FsbHkgYXBwbGllcyBjb25maWd1cmF0aW9uLXNwZWNpZmljIHRvIGxvZyBncm91cHMuXG4gKiBEaWZmZXJlbnQgY29uZmlndXJhdGlvbnMgYmFsYW5jZSBiZXR3ZWVuIGNvc3Qgb3B0aW1pemF0aW9uIGFuZCBkYXRhIHJldGVudGlvbiBuZWVkcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQXBwbHkgY29uZmlndXJhdGlvbi1zcGVjaWZpYyBkZWZhdWx0cyB0byBhbGwgbG9nIGdyb3Vwc1xuICogQXNwZWN0cy5vZihhcHApLmFkZChuZXcgTG9nR3JvdXBEZWZhdWx0c0FzcGVjdCh7IGR1cmF0aW9uOiAnU0hPUlQnIH0pKTtcbiAqXG4gKiAvLyBMb2cgZ3JvdXBzIGF1dG9tYXRpY2FsbHkgaW5oZXJpdCBjb25maWd1cmF0aW9uIGRlZmF1bHRzXG4gKiBuZXcgTG9nR3JvdXAoc3RhY2ssICdNeUxvZ0dyb3VwJywge1xuICogICAvLyByZXRlbnRpb24gYW5kIHJlbW92YWwgcG9saWN5IGFwcGxpZWQgYXV0b21hdGljYWxseVxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvYXBpL3YyL2RvY3MvYXdzLWNkay1saWIuYXdzX2xvZ3MuTG9nR3JvdXAuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgTG9nR3JvdXBEZWZhdWx0c0FzcGVjdCBpbXBsZW1lbnRzIElBc3BlY3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRQcm9wczogTG9nR3JvdXBQcm9wcztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBMb2dHcm91cERlZmF1bHRzQXNwZWN0XG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgLSBDb25maWd1cmF0aW9uIGlkZW50aWZpZXIgdXNlZCB0byBzZWxlY3QgYXBwcm9wcmlhdGUgZGVmYXVsdHMuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IENvbmZpZykge1xuICAgIGNvbnN0IHByb3BzID0gdGhpcy5yZXRlbnRpb25Qcm9wZXJ0aWVzKGNvbmZpZy5kdXJhdGlvbik7XG4gICAgdGhpcy5kZWZhdWx0UHJvcHMgPSB7IC4uLnByb3BzIH07XG4gIH1cblxuICAvKipcbiAgICogR2V0IGR1cmF0aW9uLXNwZWNpZmljIGxvZyBncm91cCBwcm9wZXJ0aWVzXG4gICAqXG4gICAqIEBwYXJhbSBkdXJhdGlvbiAtIFRoZSBkdXJhdGlvbiB0byBnZXQgdGhlIGxvZyBncm91cCBwcm9wZXJ0aWVzIGZvclxuICAgKiBAcmV0dXJucyBUaGUgbG9nIGdyb3VwIHByb3BlcnRpZXMgZm9yIHRoZSBkdXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSByZXRlbnRpb25Qcm9wZXJ0aWVzKGR1cmF0aW9uOiBcIlNIT1JUXCIgfCBcIk1FRElVTVwiIHwgXCJMT05HXCIpIHtcbiAgICBzd2l0Y2ggKGR1cmF0aW9uKSB7XG4gICAgICBjYXNlIFwiU0hPUlRcIjpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXRlbnRpb246IFJldGVudGlvbkRheXMuT05FX1dFRUssXG4gICAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgICB9O1xuICAgICAgY2FzZSBcIk1FRElVTVwiOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJldGVudGlvbjogUmV0ZW50aW9uRGF5cy5TSVhfTU9OVEhTLFxuICAgICAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgICAgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmV0ZW50aW9uOiBSZXRlbnRpb25EYXlzLlRXT19ZRUFSUyxcbiAgICAgICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LlJFVEFJTixcbiAgICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmlzaXRzIGEgY29uc3RydWN0IGFuZCBhcHBsaWVzIGNvbmZpZ3VyYXRpb24tYXBwcm9wcmlhdGUgZGVmYXVsdHNcbiAgICpcbiAgICogQXBwbGllcyBjb25maWd1cmF0aW9uLXNwZWNpZmljIHJldGVudGlvbiBhbmQgcmVtb3ZhbCBwb2xpY2llcyB0byBsb2cgZ3JvdXBzXG4gICAqIHRoYXQgZG9uJ3QgYWxyZWFkeSBoYXZlIHRoZXNlIHByb3BlcnRpZXMgZXhwbGljaXRseSBzZXQuXG4gICAqXG4gICAqIEBwYXJhbSBub2RlIC0gVGhlIGNvbnN0cnVjdCB0byBwb3RlbnRpYWxseSBtb2RpZnlcbiAgICovXG4gIHZpc2l0KG5vZGU6IElDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIExvZ0dyb3VwKSB7XG4gICAgICBpZiAodGhpcy5kZWZhdWx0UHJvcHMucmVtb3ZhbFBvbGljeSkge1xuICAgICAgICBub2RlLmFwcGx5UmVtb3ZhbFBvbGljeSh0aGlzLmRlZmF1bHRQcm9wcy5yZW1vdmFsUG9saWN5KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuZGVmYXVsdFByb3BzLnJldGVudGlvbikge1xuICAgICAgICBjb25zdCBjZm5Mb2dHcm91cCA9IG5vZGUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgQ2ZuTG9nR3JvdXA7XG4gICAgICAgIGlmIChjZm5Mb2dHcm91cCAmJiBjZm5Mb2dHcm91cC5yZXRlbnRpb25JbkRheXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGNmbkxvZ0dyb3VwLnJldGVudGlvbkluRGF5cyA9IHRoaXMuZGVmYXVsdFByb3BzLnJldGVudGlvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type IAspect } from "aws-cdk-lib";
|
|
2
|
+
import { Runtime } from "aws-cdk-lib/aws-lambda";
|
|
3
|
+
import { IConstruct } from "constructs";
|
|
4
|
+
interface Config {
|
|
5
|
+
runtime: Runtime;
|
|
6
|
+
sourceMap?: boolean;
|
|
7
|
+
memorySize?: number;
|
|
8
|
+
timeout?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Aspect that automatically applies configuration-aware defaults to Node.js Lambda functions
|
|
12
|
+
*
|
|
13
|
+
* Visits all constructs in the scope and automatically applies configuration-specific runtime, tracing, and environment settings to Node.js Lambda functions.
|
|
14
|
+
* Different configurations can optimize for different priorities such as build speed, bundle size, or debugging capabilities.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* // Apply configuration-specific defaults to all Node.js functions
|
|
19
|
+
* Aspects.of(app).add(new NodeJsFunctionDefaultsAspect({
|
|
20
|
+
* runtime: Runtime.NODEJS_24_X,
|
|
21
|
+
* sourceMap: true,
|
|
22
|
+
* }));
|
|
23
|
+
*
|
|
24
|
+
* // Functions automatically inherit configuration defaults
|
|
25
|
+
* new NodejsFunction(stack, 'MyFunction', {
|
|
26
|
+
* code: Code.fromAsset('src/lambda'),
|
|
27
|
+
* handler: 'index.handler',
|
|
28
|
+
* // runtime, tracing, and source map support applied automatically
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* @see https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda_nodejs.NodejsFunction.html
|
|
33
|
+
*/
|
|
34
|
+
export declare class NodeJsFunctionDefaultsAspect implements IAspect {
|
|
35
|
+
private readonly config;
|
|
36
|
+
/**
|
|
37
|
+
* Creates a new NodeJsFunctionDefaultsAspect
|
|
38
|
+
*
|
|
39
|
+
* @param config - Configuration identifier used to select appropriate defaults.
|
|
40
|
+
*/
|
|
41
|
+
constructor(config: Config);
|
|
42
|
+
/**
|
|
43
|
+
* Visits a construct and applies runtime and tracing settings if it's a NodejsFunction
|
|
44
|
+
*
|
|
45
|
+
* Applies configuration-specific runtime, tracing, and environment settings to Node.js
|
|
46
|
+
* Lambda functions that don't already have these properties explicitly set.
|
|
47
|
+
*
|
|
48
|
+
* @param node - The construct to potentially modify
|
|
49
|
+
*/
|
|
50
|
+
visit(node: IConstruct): void;
|
|
51
|
+
}
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NodeJsFunctionDefaultsAspect = void 0;
|
|
4
|
+
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
5
|
+
const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
|
|
6
|
+
/**
|
|
7
|
+
* Aspect that automatically applies configuration-aware defaults to Node.js Lambda functions
|
|
8
|
+
*
|
|
9
|
+
* Visits all constructs in the scope and automatically applies configuration-specific runtime, tracing, and environment settings to Node.js Lambda functions.
|
|
10
|
+
* Different configurations can optimize for different priorities such as build speed, bundle size, or debugging capabilities.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // Apply configuration-specific defaults to all Node.js functions
|
|
15
|
+
* Aspects.of(app).add(new NodeJsFunctionDefaultsAspect({
|
|
16
|
+
* runtime: Runtime.NODEJS_24_X,
|
|
17
|
+
* sourceMap: true,
|
|
18
|
+
* }));
|
|
19
|
+
*
|
|
20
|
+
* // Functions automatically inherit configuration defaults
|
|
21
|
+
* new NodejsFunction(stack, 'MyFunction', {
|
|
22
|
+
* code: Code.fromAsset('src/lambda'),
|
|
23
|
+
* handler: 'index.handler',
|
|
24
|
+
* // runtime, tracing, and source map support applied automatically
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @see https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda_nodejs.NodejsFunction.html
|
|
29
|
+
*/
|
|
30
|
+
class NodeJsFunctionDefaultsAspect {
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new NodeJsFunctionDefaultsAspect
|
|
33
|
+
*
|
|
34
|
+
* @param config - Configuration identifier used to select appropriate defaults.
|
|
35
|
+
*/
|
|
36
|
+
constructor(config) {
|
|
37
|
+
var _a, _b, _c;
|
|
38
|
+
this.config = {
|
|
39
|
+
...config,
|
|
40
|
+
sourceMap: (_a = config.sourceMap) !== null && _a !== void 0 ? _a : true,
|
|
41
|
+
memorySize: (_b = config.memorySize) !== null && _b !== void 0 ? _b : 256,
|
|
42
|
+
timeout: (_c = config.timeout) !== null && _c !== void 0 ? _c : 3,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Visits a construct and applies runtime and tracing settings if it's a NodejsFunction
|
|
47
|
+
*
|
|
48
|
+
* Applies configuration-specific runtime, tracing, and environment settings to Node.js
|
|
49
|
+
* Lambda functions that don't already have these properties explicitly set.
|
|
50
|
+
*
|
|
51
|
+
* @param node - The construct to potentially modify
|
|
52
|
+
*/
|
|
53
|
+
visit(node) {
|
|
54
|
+
if (node instanceof aws_lambda_nodejs_1.NodejsFunction) {
|
|
55
|
+
const cfnFunction = node.node.defaultChild;
|
|
56
|
+
if (cfnFunction) {
|
|
57
|
+
cfnFunction.runtime = this.config.runtime.name;
|
|
58
|
+
}
|
|
59
|
+
if (cfnFunction && cfnFunction.tracingConfig === undefined) {
|
|
60
|
+
cfnFunction.tracingConfig = { mode: aws_lambda_1.Tracing.ACTIVE };
|
|
61
|
+
}
|
|
62
|
+
if (cfnFunction && cfnFunction.memorySize === undefined) {
|
|
63
|
+
cfnFunction.memorySize = this.config.memorySize;
|
|
64
|
+
}
|
|
65
|
+
if (cfnFunction && cfnFunction.timeout === undefined) {
|
|
66
|
+
cfnFunction.timeout = this.config.timeout;
|
|
67
|
+
}
|
|
68
|
+
if (this.config.sourceMap) {
|
|
69
|
+
node.addEnvironment("NODE_OPTIONS", "--enable-source-maps");
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.NodeJsFunctionDefaultsAspect = NodeJsFunctionDefaultsAspect;
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZWpzLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibm9kZWpzLWZ1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVEQUF1RTtBQUN2RSxxRUFBK0Q7QUFVL0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBQ0gsTUFBYSw0QkFBNEI7SUFHdkM7Ozs7T0FJRztJQUNILFlBQVksTUFBYzs7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsTUFBTTtZQUNULFNBQVMsRUFBRSxNQUFBLE1BQU0sQ0FBQyxTQUFTLG1DQUFJLElBQUk7WUFDbkMsVUFBVSxFQUFFLE1BQUEsTUFBTSxDQUFDLFVBQVUsbUNBQUksR0FBRztZQUNwQyxPQUFPLEVBQUUsTUFBQSxNQUFNLENBQUMsT0FBTyxtQ0FBSSxDQUFDO1NBQzdCLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxJQUFnQjtRQUNwQixJQUFJLElBQUksWUFBWSxrQ0FBYyxFQUFFLENBQUM7WUFDbkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUEyQixDQUFDO1lBRTFELElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2pELENBQUM7WUFFRCxJQUFJLFdBQVcsSUFBSSxXQUFXLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUMzRCxXQUFXLENBQUMsYUFBYSxHQUFHLEVBQUUsSUFBSSxFQUFFLG9CQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkQsQ0FBQztZQUVELElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3hELFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDbEQsQ0FBQztZQUVELElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3JELFdBQVcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDNUMsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztZQUM5RCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWxERCxvRUFrREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIElBc3BlY3QgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IENmbkZ1bmN0aW9uLCBSdW50aW1lLCBUcmFjaW5nIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7IE5vZGVqc0Z1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCI7XG5pbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW50ZXJmYWNlIENvbmZpZyB7XG4gIHJ1bnRpbWU6IFJ1bnRpbWU7XG4gIHNvdXJjZU1hcD86IGJvb2xlYW47XG4gIG1lbW9yeVNpemU/OiBudW1iZXI7XG4gIHRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQXNwZWN0IHRoYXQgYXV0b21hdGljYWxseSBhcHBsaWVzIGNvbmZpZ3VyYXRpb24tYXdhcmUgZGVmYXVsdHMgdG8gTm9kZS5qcyBMYW1iZGEgZnVuY3Rpb25zXG4gKlxuICogVmlzaXRzIGFsbCBjb25zdHJ1Y3RzIGluIHRoZSBzY29wZSBhbmQgYXV0b21hdGljYWxseSBhcHBsaWVzIGNvbmZpZ3VyYXRpb24tc3BlY2lmaWMgcnVudGltZSwgdHJhY2luZywgYW5kIGVudmlyb25tZW50IHNldHRpbmdzIHRvIE5vZGUuanMgTGFtYmRhIGZ1bmN0aW9ucy5cbiAqIERpZmZlcmVudCBjb25maWd1cmF0aW9ucyBjYW4gb3B0aW1pemUgZm9yIGRpZmZlcmVudCBwcmlvcml0aWVzIHN1Y2ggYXMgYnVpbGQgc3BlZWQsIGJ1bmRsZSBzaXplLCBvciBkZWJ1Z2dpbmcgY2FwYWJpbGl0aWVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBBcHBseSBjb25maWd1cmF0aW9uLXNwZWNpZmljIGRlZmF1bHRzIHRvIGFsbCBOb2RlLmpzIGZ1bmN0aW9uc1xuICogQXNwZWN0cy5vZihhcHApLmFkZChuZXcgTm9kZUpzRnVuY3Rpb25EZWZhdWx0c0FzcGVjdCh7XG4gKiAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzI0X1gsXG4gKiAgIHNvdXJjZU1hcDogdHJ1ZSxcbiAqIH0pKTtcbiAqXG4gKiAvLyBGdW5jdGlvbnMgYXV0b21hdGljYWxseSBpbmhlcml0IGNvbmZpZ3VyYXRpb24gZGVmYXVsdHNcbiAqIG5ldyBOb2RlanNGdW5jdGlvbihzdGFjaywgJ015RnVuY3Rpb24nLCB7XG4gKiAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KCdzcmMvbGFtYmRhJyksXG4gKiAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAqICAgLy8gcnVudGltZSwgdHJhY2luZywgYW5kIHNvdXJjZSBtYXAgc3VwcG9ydCBhcHBsaWVkIGF1dG9tYXRpY2FsbHlcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL2FwaS92Mi9kb2NzL2F3cy1jZGstbGliLmF3c19sYW1iZGFfbm9kZWpzLk5vZGVqc0Z1bmN0aW9uLmh0bWxcbiAqL1xuZXhwb3J0IGNsYXNzIE5vZGVKc0Z1bmN0aW9uRGVmYXVsdHNBc3BlY3QgaW1wbGVtZW50cyBJQXNwZWN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IFJlcXVpcmVkPENvbmZpZz47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgTm9kZUpzRnVuY3Rpb25EZWZhdWx0c0FzcGVjdFxuICAgKlxuICAgKiBAcGFyYW0gY29uZmlnIC0gQ29uZmlndXJhdGlvbiBpZGVudGlmaWVyIHVzZWQgdG8gc2VsZWN0IGFwcHJvcHJpYXRlIGRlZmF1bHRzLlxuICAgKi9cbiAgY29uc3RydWN0b3IoY29uZmlnOiBDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIHNvdXJjZU1hcDogY29uZmlnLnNvdXJjZU1hcCA/PyB0cnVlLFxuICAgICAgbWVtb3J5U2l6ZTogY29uZmlnLm1lbW9yeVNpemUgPz8gMjU2LFxuICAgICAgdGltZW91dDogY29uZmlnLnRpbWVvdXQgPz8gMyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFZpc2l0cyBhIGNvbnN0cnVjdCBhbmQgYXBwbGllcyBydW50aW1lIGFuZCB0cmFjaW5nIHNldHRpbmdzIGlmIGl0J3MgYSBOb2RlanNGdW5jdGlvblxuICAgKlxuICAgKiBBcHBsaWVzIGNvbmZpZ3VyYXRpb24tc3BlY2lmaWMgcnVudGltZSwgdHJhY2luZywgYW5kIGVudmlyb25tZW50IHNldHRpbmdzIHRvIE5vZGUuanNcbiAgICogTGFtYmRhIGZ1bmN0aW9ucyB0aGF0IGRvbid0IGFscmVhZHkgaGF2ZSB0aGVzZSBwcm9wZXJ0aWVzIGV4cGxpY2l0bHkgc2V0LlxuICAgKlxuICAgKiBAcGFyYW0gbm9kZSAtIFRoZSBjb25zdHJ1Y3QgdG8gcG90ZW50aWFsbHkgbW9kaWZ5XG4gICAqL1xuICB2aXNpdChub2RlOiBJQ29uc3RydWN0KTogdm9pZCB7XG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBOb2RlanNGdW5jdGlvbikge1xuICAgICAgY29uc3QgY2ZuRnVuY3Rpb24gPSBub2RlLm5vZGUuZGVmYXVsdENoaWxkIGFzIENmbkZ1bmN0aW9uO1xuXG4gICAgICBpZiAoY2ZuRnVuY3Rpb24pIHtcbiAgICAgICAgY2ZuRnVuY3Rpb24ucnVudGltZSA9IHRoaXMuY29uZmlnLnJ1bnRpbWUubmFtZTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNmbkZ1bmN0aW9uICYmIGNmbkZ1bmN0aW9uLnRyYWNpbmdDb25maWcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjZm5GdW5jdGlvbi50cmFjaW5nQ29uZmlnID0geyBtb2RlOiBUcmFjaW5nLkFDVElWRSB9O1xuICAgICAgfVxuXG4gICAgICBpZiAoY2ZuRnVuY3Rpb24gJiYgY2ZuRnVuY3Rpb24ubWVtb3J5U2l6ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNmbkZ1bmN0aW9uLm1lbW9yeVNpemUgPSB0aGlzLmNvbmZpZy5tZW1vcnlTaXplO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2ZuRnVuY3Rpb24gJiYgY2ZuRnVuY3Rpb24udGltZW91dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNmbkZ1bmN0aW9uLnRpbWVvdXQgPSB0aGlzLmNvbmZpZy50aW1lb3V0O1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5jb25maWcuc291cmNlTWFwKSB7XG4gICAgICAgIG5vZGUuYWRkRW52aXJvbm1lbnQoXCJOT0RFX09QVElPTlNcIiwgXCItLWVuYWJsZS1zb3VyY2UtbWFwc1wiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type IAspect } from "aws-cdk-lib";
|
|
2
|
+
import { IConstruct } from "constructs";
|
|
3
|
+
/**
|
|
4
|
+
* Aspect that automatically applies tracing and logging settings to Step Functions
|
|
5
|
+
*
|
|
6
|
+
* Visits all constructs in the scope and automatically applies X-Ray tracing to all
|
|
7
|
+
* state machines. For EXPRESS state machines, automatically creates log groups and
|
|
8
|
+
* configures comprehensive logging for enhanced observability.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* // Apply configuration-specific defaults to all Step Functions
|
|
13
|
+
* Aspects.of(app).add(new StepFunctionDefaultsAspect());
|
|
14
|
+
*
|
|
15
|
+
* // Step Functions automatically inherit defaults
|
|
16
|
+
* new StateMachine(stack, 'MyWorkflow', {
|
|
17
|
+
* stateMachineType: StateMachineType.EXPRESS,
|
|
18
|
+
* definitionBody: DefinitionBody.fromFile('workflow.asl.yaml'),
|
|
19
|
+
* // tracing enabled and logging configured automatically for EXPRESS
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @see https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_stepfunctions.StateMachine.html
|
|
24
|
+
*/
|
|
25
|
+
export declare class StepFunctionsDefaultsAspect implements IAspect {
|
|
26
|
+
/**
|
|
27
|
+
* Visits a construct and applies tracing and logging settings if it's a StateMachine
|
|
28
|
+
*
|
|
29
|
+
* Enables X-Ray tracing for all state machines. For EXPRESS state machines that don't
|
|
30
|
+
* already have logging configured, automatically creates log groups and configures
|
|
31
|
+
* comprehensive logging with full execution data capture.
|
|
32
|
+
*
|
|
33
|
+
* @param node - The construct to potentially modify
|
|
34
|
+
*/
|
|
35
|
+
visit(node: IConstruct): void;
|
|
36
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StepFunctionsDefaultsAspect = void 0;
|
|
4
|
+
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
5
|
+
const aws_stepfunctions_1 = require("aws-cdk-lib/aws-stepfunctions");
|
|
6
|
+
/**
|
|
7
|
+
* Aspect that automatically applies tracing and logging settings to Step Functions
|
|
8
|
+
*
|
|
9
|
+
* Visits all constructs in the scope and automatically applies X-Ray tracing to all
|
|
10
|
+
* state machines. For EXPRESS state machines, automatically creates log groups and
|
|
11
|
+
* configures comprehensive logging for enhanced observability.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* // Apply configuration-specific defaults to all Step Functions
|
|
16
|
+
* Aspects.of(app).add(new StepFunctionDefaultsAspect());
|
|
17
|
+
*
|
|
18
|
+
* // Step Functions automatically inherit defaults
|
|
19
|
+
* new StateMachine(stack, 'MyWorkflow', {
|
|
20
|
+
* stateMachineType: StateMachineType.EXPRESS,
|
|
21
|
+
* definitionBody: DefinitionBody.fromFile('workflow.asl.yaml'),
|
|
22
|
+
* // tracing enabled and logging configured automatically for EXPRESS
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @see https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_stepfunctions.StateMachine.html
|
|
27
|
+
*/
|
|
28
|
+
class StepFunctionsDefaultsAspect {
|
|
29
|
+
/**
|
|
30
|
+
* Visits a construct and applies tracing and logging settings if it's a StateMachine
|
|
31
|
+
*
|
|
32
|
+
* Enables X-Ray tracing for all state machines. For EXPRESS state machines that don't
|
|
33
|
+
* already have logging configured, automatically creates log groups and configures
|
|
34
|
+
* comprehensive logging with full execution data capture.
|
|
35
|
+
*
|
|
36
|
+
* @param node - The construct to potentially modify
|
|
37
|
+
*/
|
|
38
|
+
visit(node) {
|
|
39
|
+
if (node instanceof aws_stepfunctions_1.StateMachine) {
|
|
40
|
+
const cfnStateMachine = node.node.defaultChild;
|
|
41
|
+
if (cfnStateMachine) {
|
|
42
|
+
// Apply tracing if not already set
|
|
43
|
+
if (cfnStateMachine.tracingConfiguration === undefined) {
|
|
44
|
+
cfnStateMachine.tracingConfiguration = {
|
|
45
|
+
enabled: true,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
// For EXPRESS state machines, configure logging if not already set
|
|
49
|
+
if (cfnStateMachine.stateMachineType === aws_stepfunctions_1.StateMachineType.EXPRESS &&
|
|
50
|
+
cfnStateMachine.loggingConfiguration === undefined) {
|
|
51
|
+
// Create a log group for the state machine
|
|
52
|
+
const logGroup = new aws_logs_1.LogGroup(node, "LogGroup", {
|
|
53
|
+
logGroupName: `/aws/vendedlogs/states/${node.node.id}`,
|
|
54
|
+
});
|
|
55
|
+
// Get the underlying CFN log group to access its ARN
|
|
56
|
+
const cfnLogGroup = logGroup.node.defaultChild;
|
|
57
|
+
cfnStateMachine.loggingConfiguration = {
|
|
58
|
+
destinations: [
|
|
59
|
+
{
|
|
60
|
+
cloudWatchLogsLogGroup: {
|
|
61
|
+
logGroupArn: cfnLogGroup.attrArn,
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
level: aws_stepfunctions_1.LogLevel.ALL,
|
|
66
|
+
includeExecutionData: true,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.StepFunctionsDefaultsAspect = StepFunctionsDefaultsAspect;
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1mdW5jdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGVwLWZ1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtREFBNkQ7QUFDN0QscUVBS3VDO0FBR3ZDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFhLDJCQUEyQjtJQUN0Qzs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxJQUFnQjtRQUNwQixJQUFJLElBQUksWUFBWSxnQ0FBWSxFQUFFLENBQUM7WUFDakMsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUErQixDQUFDO1lBRWxFLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3BCLG1DQUFtQztnQkFDbkMsSUFBSSxlQUFlLENBQUMsb0JBQW9CLEtBQUssU0FBUyxFQUFFLENBQUM7b0JBQ3ZELGVBQWUsQ0FBQyxvQkFBb0IsR0FBRzt3QkFDckMsT0FBTyxFQUFFLElBQUk7cUJBQ2QsQ0FBQztnQkFDSixDQUFDO2dCQUVELG1FQUFtRTtnQkFDbkUsSUFDRSxlQUFlLENBQUMsZ0JBQWdCLEtBQUssb0NBQWdCLENBQUMsT0FBTztvQkFDN0QsZUFBZSxDQUFDLG9CQUFvQixLQUFLLFNBQVMsRUFDbEQsQ0FBQztvQkFDRCwyQ0FBMkM7b0JBQzNDLE1BQU0sUUFBUSxHQUFHLElBQUksbUJBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO3dCQUM5QyxZQUFZLEVBQUUsMEJBQTBCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO3FCQUN2RCxDQUFDLENBQUM7b0JBRUgscURBQXFEO29CQUNyRCxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQTJCLENBQUM7b0JBRTlELGVBQWUsQ0FBQyxvQkFBb0IsR0FBRzt3QkFDckMsWUFBWSxFQUFFOzRCQUNaO2dDQUNFLHNCQUFzQixFQUFFO29DQUN0QixXQUFXLEVBQUUsV0FBVyxDQUFDLE9BQU87aUNBQ2pDOzZCQUNGO3lCQUNGO3dCQUNELEtBQUssRUFBRSw0QkFBUSxDQUFDLEdBQUc7d0JBQ25CLG9CQUFvQixFQUFFLElBQUk7cUJBQzNCLENBQUM7Z0JBQ0osQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBbERELGtFQWtEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgSUFzcGVjdCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ2ZuTG9nR3JvdXAsIExvZ0dyb3VwIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQge1xuICBDZm5TdGF0ZU1hY2hpbmUsXG4gIExvZ0xldmVsLFxuICBTdGF0ZU1hY2hpbmUsXG4gIFN0YXRlTWFjaGluZVR5cGUsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9uc1wiO1xuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbi8qKlxuICogQXNwZWN0IHRoYXQgYXV0b21hdGljYWxseSBhcHBsaWVzIHRyYWNpbmcgYW5kIGxvZ2dpbmcgc2V0dGluZ3MgdG8gU3RlcCBGdW5jdGlvbnNcbiAqXG4gKiBWaXNpdHMgYWxsIGNvbnN0cnVjdHMgaW4gdGhlIHNjb3BlIGFuZCBhdXRvbWF0aWNhbGx5IGFwcGxpZXMgWC1SYXkgdHJhY2luZyB0byBhbGxcbiAqIHN0YXRlIG1hY2hpbmVzLiBGb3IgRVhQUkVTUyBzdGF0ZSBtYWNoaW5lcywgYXV0b21hdGljYWxseSBjcmVhdGVzIGxvZyBncm91cHMgYW5kXG4gKiBjb25maWd1cmVzIGNvbXByZWhlbnNpdmUgbG9nZ2luZyBmb3IgZW5oYW5jZWQgb2JzZXJ2YWJpbGl0eS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQXBwbHkgY29uZmlndXJhdGlvbi1zcGVjaWZpYyBkZWZhdWx0cyB0byBhbGwgU3RlcCBGdW5jdGlvbnNcbiAqIEFzcGVjdHMub2YoYXBwKS5hZGQobmV3IFN0ZXBGdW5jdGlvbkRlZmF1bHRzQXNwZWN0KCkpO1xuICpcbiAqIC8vIFN0ZXAgRnVuY3Rpb25zIGF1dG9tYXRpY2FsbHkgaW5oZXJpdCBkZWZhdWx0c1xuICogbmV3IFN0YXRlTWFjaGluZShzdGFjaywgJ015V29ya2Zsb3cnLCB7XG4gKiAgIHN0YXRlTWFjaGluZVR5cGU6IFN0YXRlTWFjaGluZVR5cGUuRVhQUkVTUyxcbiAqICAgZGVmaW5pdGlvbkJvZHk6IERlZmluaXRpb25Cb2R5LmZyb21GaWxlKCd3b3JrZmxvdy5hc2wueWFtbCcpLFxuICogICAvLyB0cmFjaW5nIGVuYWJsZWQgYW5kIGxvZ2dpbmcgY29uZmlndXJlZCBhdXRvbWF0aWNhbGx5IGZvciBFWFBSRVNTXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay9hcGkvdjIvZG9jcy9hd3MtY2RrLWxpYi5hd3Nfc3RlcGZ1bmN0aW9ucy5TdGF0ZU1hY2hpbmUuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgU3RlcEZ1bmN0aW9uc0RlZmF1bHRzQXNwZWN0IGltcGxlbWVudHMgSUFzcGVjdCB7XG4gIC8qKlxuICAgKiBWaXNpdHMgYSBjb25zdHJ1Y3QgYW5kIGFwcGxpZXMgdHJhY2luZyBhbmQgbG9nZ2luZyBzZXR0aW5ncyBpZiBpdCdzIGEgU3RhdGVNYWNoaW5lXG4gICAqXG4gICAqIEVuYWJsZXMgWC1SYXkgdHJhY2luZyBmb3IgYWxsIHN0YXRlIG1hY2hpbmVzLiBGb3IgRVhQUkVTUyBzdGF0ZSBtYWNoaW5lcyB0aGF0IGRvbid0XG4gICAqIGFscmVhZHkgaGF2ZSBsb2dnaW5nIGNvbmZpZ3VyZWQsIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyBsb2cgZ3JvdXBzIGFuZCBjb25maWd1cmVzXG4gICAqIGNvbXByZWhlbnNpdmUgbG9nZ2luZyB3aXRoIGZ1bGwgZXhlY3V0aW9uIGRhdGEgY2FwdHVyZS5cbiAgICpcbiAgICogQHBhcmFtIG5vZGUgLSBUaGUgY29uc3RydWN0IHRvIHBvdGVudGlhbGx5IG1vZGlmeVxuICAgKi9cbiAgdmlzaXQobm9kZTogSUNvbnN0cnVjdCk6IHZvaWQge1xuICAgIGlmIChub2RlIGluc3RhbmNlb2YgU3RhdGVNYWNoaW5lKSB7XG4gICAgICBjb25zdCBjZm5TdGF0ZU1hY2hpbmUgPSBub2RlLm5vZGUuZGVmYXVsdENoaWxkIGFzIENmblN0YXRlTWFjaGluZTtcblxuICAgICAgaWYgKGNmblN0YXRlTWFjaGluZSkge1xuICAgICAgICAvLyBBcHBseSB0cmFjaW5nIGlmIG5vdCBhbHJlYWR5IHNldFxuICAgICAgICBpZiAoY2ZuU3RhdGVNYWNoaW5lLnRyYWNpbmdDb25maWd1cmF0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjZm5TdGF0ZU1hY2hpbmUudHJhY2luZ0NvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBGb3IgRVhQUkVTUyBzdGF0ZSBtYWNoaW5lcywgY29uZmlndXJlIGxvZ2dpbmcgaWYgbm90IGFscmVhZHkgc2V0XG4gICAgICAgIGlmIChcbiAgICAgICAgICBjZm5TdGF0ZU1hY2hpbmUuc3RhdGVNYWNoaW5lVHlwZSA9PT0gU3RhdGVNYWNoaW5lVHlwZS5FWFBSRVNTICYmXG4gICAgICAgICAgY2ZuU3RhdGVNYWNoaW5lLmxvZ2dpbmdDb25maWd1cmF0aW9uID09PSB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gQ3JlYXRlIGEgbG9nIGdyb3VwIGZvciB0aGUgc3RhdGUgbWFjaGluZVxuICAgICAgICAgIGNvbnN0IGxvZ0dyb3VwID0gbmV3IExvZ0dyb3VwKG5vZGUsIFwiTG9nR3JvdXBcIiwge1xuICAgICAgICAgICAgbG9nR3JvdXBOYW1lOiBgL2F3cy92ZW5kZWRsb2dzL3N0YXRlcy8ke25vZGUubm9kZS5pZH1gLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgLy8gR2V0IHRoZSB1bmRlcmx5aW5nIENGTiBsb2cgZ3JvdXAgdG8gYWNjZXNzIGl0cyBBUk5cbiAgICAgICAgICBjb25zdCBjZm5Mb2dHcm91cCA9IGxvZ0dyb3VwLm5vZGUuZGVmYXVsdENoaWxkIGFzIENmbkxvZ0dyb3VwO1xuXG4gICAgICAgICAgY2ZuU3RhdGVNYWNoaW5lLmxvZ2dpbmdDb25maWd1cmF0aW9uID0ge1xuICAgICAgICAgICAgZGVzdGluYXRpb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjbG91ZFdhdGNoTG9nc0xvZ0dyb3VwOiB7XG4gICAgICAgICAgICAgICAgICBsb2dHcm91cEFybjogY2ZuTG9nR3JvdXAuYXR0ckFybixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGxldmVsOiBMb2dMZXZlbC5BTEwsXG4gICAgICAgICAgICBpbmNsdWRlRXhlY3V0aW9uRGF0YTogdHJ1ZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/lib/{defaults/version-functions/version-functions.d.ts → lambda-sfn-versioning.d.ts}
RENAMED
|
@@ -20,7 +20,7 @@ import { IConstruct } from "constructs";
|
|
|
20
20
|
* Aspects.of(app).add(new VersionFunctionsAspect({ alias: 'PROD' }));
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
|
-
export declare class
|
|
23
|
+
export declare class LambdaAndStepFunctionVersioningAspect implements IAspect {
|
|
24
24
|
private readonly props;
|
|
25
25
|
/**
|
|
26
26
|
* Creates a new VersionFunctionsAspect
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LambdaAndStepFunctionVersioningAspect = void 0;
|
|
4
|
+
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
5
|
+
const aws_stepfunctions_1 = require("aws-cdk-lib/aws-stepfunctions");
|
|
6
|
+
/**
|
|
7
|
+
* Aspect that automatically adds versioning and aliases to Lambda and Step Functions
|
|
8
|
+
*
|
|
9
|
+
* Visits all constructs in the scope and automatically creates versions and aliases
|
|
10
|
+
* for supported resource types. This enables blue-green deployments, traffic shifting,
|
|
11
|
+
* and provides stable ARNs for external integrations.
|
|
12
|
+
*
|
|
13
|
+
* Currently supports:
|
|
14
|
+
* - Lambda Functions: Creates function aliases
|
|
15
|
+
* - Step Functions: Creates versions and aliases with 100% traffic routing
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // Apply to entire app for automatic versioning
|
|
20
|
+
* Aspects.of(app).add(new VersionFunctionsAspect());
|
|
21
|
+
*
|
|
22
|
+
* // Or with custom alias name
|
|
23
|
+
* Aspects.of(app).add(new VersionFunctionsAspect({ alias: 'PROD' }));
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
class LambdaAndStepFunctionVersioningAspect {
|
|
27
|
+
/**
|
|
28
|
+
* Creates a new VersionFunctionsAspect
|
|
29
|
+
*
|
|
30
|
+
* @param props - Configuration for the aspect
|
|
31
|
+
* @param props.alias - Name for the alias to create. Defaults to 'LATEST'
|
|
32
|
+
*/
|
|
33
|
+
constructor(props = {
|
|
34
|
+
alias: "LATEST",
|
|
35
|
+
}) {
|
|
36
|
+
this.props = props;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Visits a construct and applies versioning if it's a supported resource type
|
|
40
|
+
*
|
|
41
|
+
* For Lambda Functions: Adds a function alias pointing to $LATEST
|
|
42
|
+
* For Step Functions: Creates a version and alias with 100% traffic routing
|
|
43
|
+
*
|
|
44
|
+
* @param node - The construct to potentially add versioning to
|
|
45
|
+
*/
|
|
46
|
+
visit(node) {
|
|
47
|
+
if (node instanceof aws_stepfunctions_1.StateMachine) {
|
|
48
|
+
const version = new aws_stepfunctions_1.CfnStateMachineVersion(node, `Version`, {
|
|
49
|
+
stateMachineArn: node.stateMachineArn,
|
|
50
|
+
});
|
|
51
|
+
new aws_stepfunctions_1.CfnStateMachineAlias(node, `Alias`, {
|
|
52
|
+
name: this.props.alias,
|
|
53
|
+
routingConfiguration: [
|
|
54
|
+
{
|
|
55
|
+
stateMachineVersionArn: version.attrArn,
|
|
56
|
+
weight: 100,
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
if (node instanceof aws_lambda_1.Function) {
|
|
62
|
+
node.addAlias(this.props.alias);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
exports.LambdaAndStepFunctionVersioningAspect = LambdaAndStepFunctionVersioningAspect;
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLXNmbi12ZXJzaW9uaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibGFtYmRhLXNmbi12ZXJzaW9uaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVEQUFrRDtBQUNsRCxxRUFJdUM7QUFHdkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxNQUFhLHFDQUFxQztJQUNoRDs7Ozs7T0FLRztJQUNILFlBQ21CLFFBRWI7UUFDRixLQUFLLEVBQUUsUUFBUTtLQUNoQjtRQUpnQixVQUFLLEdBQUwsS0FBSyxDQUlyQjtJQUNBLENBQUM7SUFFSjs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLElBQWdCO1FBQ3BCLElBQUksSUFBSSxZQUFZLGdDQUFZLEVBQUUsQ0FBQztZQUNqQyxNQUFNLE9BQU8sR0FBRyxJQUFJLDBDQUFzQixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7Z0JBQzFELGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTthQUN0QyxDQUFDLENBQUM7WUFFSCxJQUFJLHdDQUFvQixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7Z0JBQ3RDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUs7Z0JBQ3RCLG9CQUFvQixFQUFFO29CQUNwQjt3QkFDRSxzQkFBc0IsRUFBRSxPQUFPLENBQUMsT0FBTzt3QkFDdkMsTUFBTSxFQUFFLEdBQUc7cUJBQ1o7aUJBQ0Y7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxJQUFJLFlBQVkscUJBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxDQUFDO0lBQ0gsQ0FBQztDQUNGO0FBNUNELHNGQTRDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSUFzcGVjdCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgRnVuY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHtcbiAgQ2ZuU3RhdGVNYWNoaW5lQWxpYXMsXG4gIENmblN0YXRlTWFjaGluZVZlcnNpb24sXG4gIFN0YXRlTWFjaGluZSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zXCI7XG5pbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBBc3BlY3QgdGhhdCBhdXRvbWF0aWNhbGx5IGFkZHMgdmVyc2lvbmluZyBhbmQgYWxpYXNlcyB0byBMYW1iZGEgYW5kIFN0ZXAgRnVuY3Rpb25zXG4gKlxuICogVmlzaXRzIGFsbCBjb25zdHJ1Y3RzIGluIHRoZSBzY29wZSBhbmQgYXV0b21hdGljYWxseSBjcmVhdGVzIHZlcnNpb25zIGFuZCBhbGlhc2VzXG4gKiBmb3Igc3VwcG9ydGVkIHJlc291cmNlIHR5cGVzLiBUaGlzIGVuYWJsZXMgYmx1ZS1ncmVlbiBkZXBsb3ltZW50cywgdHJhZmZpYyBzaGlmdGluZyxcbiAqIGFuZCBwcm92aWRlcyBzdGFibGUgQVJOcyBmb3IgZXh0ZXJuYWwgaW50ZWdyYXRpb25zLlxuICpcbiAqIEN1cnJlbnRseSBzdXBwb3J0czpcbiAqIC0gTGFtYmRhIEZ1bmN0aW9uczogQ3JlYXRlcyBmdW5jdGlvbiBhbGlhc2VzXG4gKiAtIFN0ZXAgRnVuY3Rpb25zOiBDcmVhdGVzIHZlcnNpb25zIGFuZCBhbGlhc2VzIHdpdGggMTAwJSB0cmFmZmljIHJvdXRpbmdcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQXBwbHkgdG8gZW50aXJlIGFwcCBmb3IgYXV0b21hdGljIHZlcnNpb25pbmdcbiAqIEFzcGVjdHMub2YoYXBwKS5hZGQobmV3IFZlcnNpb25GdW5jdGlvbnNBc3BlY3QoKSk7XG4gKlxuICogLy8gT3Igd2l0aCBjdXN0b20gYWxpYXMgbmFtZVxuICogQXNwZWN0cy5vZihhcHApLmFkZChuZXcgVmVyc2lvbkZ1bmN0aW9uc0FzcGVjdCh7IGFsaWFzOiAnUFJPRCcgfSkpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBMYW1iZGFBbmRTdGVwRnVuY3Rpb25WZXJzaW9uaW5nQXNwZWN0IGltcGxlbWVudHMgSUFzcGVjdCB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IFZlcnNpb25GdW5jdGlvbnNBc3BlY3RcbiAgICpcbiAgICogQHBhcmFtIHByb3BzIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGFzcGVjdFxuICAgKiBAcGFyYW0gcHJvcHMuYWxpYXMgLSBOYW1lIGZvciB0aGUgYWxpYXMgdG8gY3JlYXRlLiBEZWZhdWx0cyB0byAnTEFURVNUJ1xuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9wczoge1xuICAgICAgYWxpYXM6IHN0cmluZztcbiAgICB9ID0ge1xuICAgICAgYWxpYXM6IFwiTEFURVNUXCIsXG4gICAgfVxuICApIHt9XG5cbiAgLyoqXG4gICAqIFZpc2l0cyBhIGNvbnN0cnVjdCBhbmQgYXBwbGllcyB2ZXJzaW9uaW5nIGlmIGl0J3MgYSBzdXBwb3J0ZWQgcmVzb3VyY2UgdHlwZVxuICAgKlxuICAgKiBGb3IgTGFtYmRhIEZ1bmN0aW9uczogQWRkcyBhIGZ1bmN0aW9uIGFsaWFzIHBvaW50aW5nIHRvICRMQVRFU1RcbiAgICogRm9yIFN0ZXAgRnVuY3Rpb25zOiBDcmVhdGVzIGEgdmVyc2lvbiBhbmQgYWxpYXMgd2l0aCAxMDAlIHRyYWZmaWMgcm91dGluZ1xuICAgKlxuICAgKiBAcGFyYW0gbm9kZSAtIFRoZSBjb25zdHJ1Y3QgdG8gcG90ZW50aWFsbHkgYWRkIHZlcnNpb25pbmcgdG9cbiAgICovXG4gIHZpc2l0KG5vZGU6IElDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIFN0YXRlTWFjaGluZSkge1xuICAgICAgY29uc3QgdmVyc2lvbiA9IG5ldyBDZm5TdGF0ZU1hY2hpbmVWZXJzaW9uKG5vZGUsIGBWZXJzaW9uYCwge1xuICAgICAgICBzdGF0ZU1hY2hpbmVBcm46IG5vZGUuc3RhdGVNYWNoaW5lQXJuLFxuICAgICAgfSk7XG5cbiAgICAgIG5ldyBDZm5TdGF0ZU1hY2hpbmVBbGlhcyhub2RlLCBgQWxpYXNgLCB7XG4gICAgICAgIG5hbWU6IHRoaXMucHJvcHMuYWxpYXMsXG4gICAgICAgIHJvdXRpbmdDb25maWd1cmF0aW9uOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGVNYWNoaW5lVmVyc2lvbkFybjogdmVyc2lvbi5hdHRyQXJuLFxuICAgICAgICAgICAgd2VpZ2h0OiAxMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChub2RlIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgIG5vZGUuYWRkQWxpYXModGhpcy5wcm9wcy5hbGlhcyk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aligent/cdk-aspects",
|
|
3
|
-
"version": "0.2
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Collection of CDK Asppects",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
7
7
|
"license": "MIT",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/aligent/cdk-constructs.git"
|
|
11
|
+
},
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/aligent/cdk-constructs/issues"
|
|
14
|
+
},
|
|
15
|
+
"homepage": "https://github.com/aligent/cdk-constructs/tree/main/packages/cdk-aspects#readme",
|
|
8
16
|
"scripts": {
|
|
9
17
|
"build": "tsc",
|
|
10
18
|
"test": "npx nx test cdk-aspects",
|
|
@@ -12,7 +20,7 @@
|
|
|
12
20
|
},
|
|
13
21
|
"devDependencies": {
|
|
14
22
|
"@types/jest": "^29.5.10",
|
|
15
|
-
"@types/node": "^20.
|
|
23
|
+
"@types/node": "^20.19.33",
|
|
16
24
|
"aws-cdk": "^2.1019.1",
|
|
17
25
|
"jest": "^29.7.0",
|
|
18
26
|
"ts-jest": "^29.1.1",
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.VersionFunctionsAspect = void 0;
|
|
4
|
-
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
5
|
-
const aws_stepfunctions_1 = require("aws-cdk-lib/aws-stepfunctions");
|
|
6
|
-
/**
|
|
7
|
-
* Aspect that automatically adds versioning and aliases to Lambda and Step Functions
|
|
8
|
-
*
|
|
9
|
-
* Visits all constructs in the scope and automatically creates versions and aliases
|
|
10
|
-
* for supported resource types. This enables blue-green deployments, traffic shifting,
|
|
11
|
-
* and provides stable ARNs for external integrations.
|
|
12
|
-
*
|
|
13
|
-
* Currently supports:
|
|
14
|
-
* - Lambda Functions: Creates function aliases
|
|
15
|
-
* - Step Functions: Creates versions and aliases with 100% traffic routing
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```typescript
|
|
19
|
-
* // Apply to entire app for automatic versioning
|
|
20
|
-
* Aspects.of(app).add(new VersionFunctionsAspect());
|
|
21
|
-
*
|
|
22
|
-
* // Or with custom alias name
|
|
23
|
-
* Aspects.of(app).add(new VersionFunctionsAspect({ alias: 'PROD' }));
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
class VersionFunctionsAspect {
|
|
27
|
-
/**
|
|
28
|
-
* Creates a new VersionFunctionsAspect
|
|
29
|
-
*
|
|
30
|
-
* @param props - Configuration for the aspect
|
|
31
|
-
* @param props.alias - Name for the alias to create. Defaults to 'LATEST'
|
|
32
|
-
*/
|
|
33
|
-
constructor(props = {
|
|
34
|
-
alias: "LATEST",
|
|
35
|
-
}) {
|
|
36
|
-
this.props = props;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Visits a construct and applies versioning if it's a supported resource type
|
|
40
|
-
*
|
|
41
|
-
* For Lambda Functions: Adds a function alias pointing to $LATEST
|
|
42
|
-
* For Step Functions: Creates a version and alias with 100% traffic routing
|
|
43
|
-
*
|
|
44
|
-
* @param node - The construct to potentially add versioning to
|
|
45
|
-
*/
|
|
46
|
-
visit(node) {
|
|
47
|
-
if (node instanceof aws_stepfunctions_1.StateMachine) {
|
|
48
|
-
const version = new aws_stepfunctions_1.CfnStateMachineVersion(node, `Version`, {
|
|
49
|
-
stateMachineArn: node.stateMachineArn,
|
|
50
|
-
});
|
|
51
|
-
new aws_stepfunctions_1.CfnStateMachineAlias(node, `Alias`, {
|
|
52
|
-
name: this.props.alias,
|
|
53
|
-
routingConfiguration: [
|
|
54
|
-
{
|
|
55
|
-
stateMachineVersionArn: version.attrArn,
|
|
56
|
-
weight: 100,
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
if (node instanceof aws_lambda_1.Function) {
|
|
62
|
-
node.addAlias(this.props.alias);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
exports.VersionFunctionsAspect = VersionFunctionsAspect;
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi1mdW5jdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2ZXJzaW9uLWZ1bmN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx1REFBa0Q7QUFDbEQscUVBSXVDO0FBR3ZDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBYSxzQkFBc0I7SUFDakM7Ozs7O09BS0c7SUFDSCxZQUNtQixRQUViO1FBQ0YsS0FBSyxFQUFFLFFBQVE7S0FDaEI7UUFKZ0IsVUFBSyxHQUFMLEtBQUssQ0FJckI7SUFDQSxDQUFDO0lBRUo7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxJQUFnQjtRQUNwQixJQUFJLElBQUksWUFBWSxnQ0FBWSxFQUFFLENBQUM7WUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSwwQ0FBc0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO2dCQUMxRCxlQUFlLEVBQUUsSUFBSSxDQUFDLGVBQWU7YUFDdEMsQ0FBQyxDQUFDO1lBRUgsSUFBSSx3Q0FBb0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO2dCQUN0QyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO2dCQUN0QixvQkFBb0IsRUFBRTtvQkFDcEI7d0JBQ0Usc0JBQXNCLEVBQUUsT0FBTyxDQUFDLE9BQU87d0JBQ3ZDLE1BQU0sRUFBRSxHQUFHO3FCQUNaO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksSUFBSSxZQUFZLHFCQUFRLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTVDRCx3REE0Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IElBc3BlY3QgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEZ1bmN0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIjtcbmltcG9ydCB7XG4gIENmblN0YXRlTWFjaGluZUFsaWFzLFxuICBDZm5TdGF0ZU1hY2hpbmVWZXJzaW9uLFxuICBTdGF0ZU1hY2hpbmUsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9uc1wiO1xuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbi8qKlxuICogQXNwZWN0IHRoYXQgYXV0b21hdGljYWxseSBhZGRzIHZlcnNpb25pbmcgYW5kIGFsaWFzZXMgdG8gTGFtYmRhIGFuZCBTdGVwIEZ1bmN0aW9uc1xuICpcbiAqIFZpc2l0cyBhbGwgY29uc3RydWN0cyBpbiB0aGUgc2NvcGUgYW5kIGF1dG9tYXRpY2FsbHkgY3JlYXRlcyB2ZXJzaW9ucyBhbmQgYWxpYXNlc1xuICogZm9yIHN1cHBvcnRlZCByZXNvdXJjZSB0eXBlcy4gVGhpcyBlbmFibGVzIGJsdWUtZ3JlZW4gZGVwbG95bWVudHMsIHRyYWZmaWMgc2hpZnRpbmcsXG4gKiBhbmQgcHJvdmlkZXMgc3RhYmxlIEFSTnMgZm9yIGV4dGVybmFsIGludGVncmF0aW9ucy5cbiAqXG4gKiBDdXJyZW50bHkgc3VwcG9ydHM6XG4gKiAtIExhbWJkYSBGdW5jdGlvbnM6IENyZWF0ZXMgZnVuY3Rpb24gYWxpYXNlc1xuICogLSBTdGVwIEZ1bmN0aW9uczogQ3JlYXRlcyB2ZXJzaW9ucyBhbmQgYWxpYXNlcyB3aXRoIDEwMCUgdHJhZmZpYyByb3V0aW5nXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIEFwcGx5IHRvIGVudGlyZSBhcHAgZm9yIGF1dG9tYXRpYyB2ZXJzaW9uaW5nXG4gKiBBc3BlY3RzLm9mKGFwcCkuYWRkKG5ldyBWZXJzaW9uRnVuY3Rpb25zQXNwZWN0KCkpO1xuICpcbiAqIC8vIE9yIHdpdGggY3VzdG9tIGFsaWFzIG5hbWVcbiAqIEFzcGVjdHMub2YoYXBwKS5hZGQobmV3IFZlcnNpb25GdW5jdGlvbnNBc3BlY3QoeyBhbGlhczogJ1BST0QnIH0pKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgVmVyc2lvbkZ1bmN0aW9uc0FzcGVjdCBpbXBsZW1lbnRzIElBc3BlY3Qge1xuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBWZXJzaW9uRnVuY3Rpb25zQXNwZWN0XG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBhc3BlY3RcbiAgICogQHBhcmFtIHByb3BzLmFsaWFzIC0gTmFtZSBmb3IgdGhlIGFsaWFzIHRvIGNyZWF0ZS4gRGVmYXVsdHMgdG8gJ0xBVEVTVCdcbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IHtcbiAgICAgIGFsaWFzOiBzdHJpbmc7XG4gICAgfSA9IHtcbiAgICAgIGFsaWFzOiBcIkxBVEVTVFwiLFxuICAgIH1cbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBWaXNpdHMgYSBjb25zdHJ1Y3QgYW5kIGFwcGxpZXMgdmVyc2lvbmluZyBpZiBpdCdzIGEgc3VwcG9ydGVkIHJlc291cmNlIHR5cGVcbiAgICpcbiAgICogRm9yIExhbWJkYSBGdW5jdGlvbnM6IEFkZHMgYSBmdW5jdGlvbiBhbGlhcyBwb2ludGluZyB0byAkTEFURVNUXG4gICAqIEZvciBTdGVwIEZ1bmN0aW9uczogQ3JlYXRlcyBhIHZlcnNpb24gYW5kIGFsaWFzIHdpdGggMTAwJSB0cmFmZmljIHJvdXRpbmdcbiAgICpcbiAgICogQHBhcmFtIG5vZGUgLSBUaGUgY29uc3RydWN0IHRvIHBvdGVudGlhbGx5IGFkZCB2ZXJzaW9uaW5nIHRvXG4gICAqL1xuICB2aXNpdChub2RlOiBJQ29uc3RydWN0KTogdm9pZCB7XG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBTdGF0ZU1hY2hpbmUpIHtcbiAgICAgIGNvbnN0IHZlcnNpb24gPSBuZXcgQ2ZuU3RhdGVNYWNoaW5lVmVyc2lvbihub2RlLCBgVmVyc2lvbmAsIHtcbiAgICAgICAgc3RhdGVNYWNoaW5lQXJuOiBub2RlLnN0YXRlTWFjaGluZUFybixcbiAgICAgIH0pO1xuXG4gICAgICBuZXcgQ2ZuU3RhdGVNYWNoaW5lQWxpYXMobm9kZSwgYEFsaWFzYCwge1xuICAgICAgICBuYW1lOiB0aGlzLnByb3BzLmFsaWFzLFxuICAgICAgICByb3V0aW5nQ29uZmlndXJhdGlvbjogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHN0YXRlTWFjaGluZVZlcnNpb25Bcm46IHZlcnNpb24uYXR0ckFybixcbiAgICAgICAgICAgIHdlaWdodDogMTAwLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICBub2RlLmFkZEFsaWFzKHRoaXMucHJvcHMuYWxpYXMpO1xuICAgIH1cbiAgfVxufVxuIl19
|
/package/lib/{defaults/microservice-checks/microservice-checks.d.ts → microservice-checks.d.ts}
RENAMED
|
File without changes
|
|
File without changes
|