rds-database-auto-start-preventer 0.1.1
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/.jsii +8815 -0
- package/API.md +1561 -0
- package/LICENSE +202 -0
- package/README.md +112 -0
- package/assets/funcs/auto-start-prevent.lambda/index.js +23995 -0
- package/assets/funcs/auto-start-prevent.lambda/index.js.map +7 -0
- package/lib/constructs/rds-database-auto-start-preventer.d.ts +42 -0
- package/lib/constructs/rds-database-auto-start-preventer.js +141 -0
- package/lib/funcs/auto-start-prevent-function.d.ts +13 -0
- package/lib/funcs/auto-start-prevent-function.js +23 -0
- package/lib/funcs/auto-start-prevent.lambda.d.ts +9 -0
- package/lib/funcs/auto-start-prevent.lambda.js +255 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +19 -0
- package/lib/stacks/rds-database-auto-start-prevent-stack.d.ts +27 -0
- package/lib/stacks/rds-database-auto-start-prevent-stack.js +31 -0
- package/package.json +156 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.RDSDatabaseAutoStartPreventStack = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
const rds_database_auto_start_preventer_1 = require("../constructs/rds-database-auto-start-preventer");
|
|
8
|
+
/**
|
|
9
|
+
* CDK Stack that deploys the RDS database auto start prevent (EventBridge Rule + Durable Lambda).
|
|
10
|
+
*/
|
|
11
|
+
class RDSDatabaseAutoStartPreventStack extends aws_cdk_lib_1.Stack {
|
|
12
|
+
/**
|
|
13
|
+
* Creates the stack and the RDSDatabaseAutoStartPreventer construct.
|
|
14
|
+
*
|
|
15
|
+
* @param scope - Parent construct.
|
|
16
|
+
* @param id - Stack id.
|
|
17
|
+
* @param props - Stack props (target resource, enable rule, secrets).
|
|
18
|
+
*/
|
|
19
|
+
constructor(scope, id, props) {
|
|
20
|
+
super(scope, id, props);
|
|
21
|
+
new rds_database_auto_start_preventer_1.RDSDatabaseAutoStartPreventer(this, 'RDSDatabaseAutoStartPreventer', {
|
|
22
|
+
targetResource: props.targetResource,
|
|
23
|
+
enableRule: props.enableRule,
|
|
24
|
+
secrets: props.secrets,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.RDSDatabaseAutoStartPreventStack = RDSDatabaseAutoStartPreventStack;
|
|
29
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
30
|
+
RDSDatabaseAutoStartPreventStack[_a] = { fqn: "rds-database-auto-start-preventer.RDSDatabaseAutoStartPreventStack", version: "0.1.1" };
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzLWRhdGFiYXNlLWF1dG8tc3RhcnQtcHJldmVudC1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGFja3MvcmRzLWRhdGFiYXNlLWF1dG8tc3RhcnQtcHJldmVudC1zdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLDZDQUFnRDtBQUVoRCx1R0FBeUg7QUFjekg7O0dBRUc7QUFDSCxNQUFhLGdDQUFpQyxTQUFRLG1CQUFLO0lBQ3pEOzs7Ozs7T0FNRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNEM7UUFDcEYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsSUFBSSxpRUFBNkIsQ0FBQyxJQUFJLEVBQUUsK0JBQStCLEVBQUU7WUFDdkUsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO1lBQ3BDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFoQkgsNEVBaUJDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUkRTRGF0YWJhc2VBdXRvU3RhcnRQcmV2ZW50ZXIsIFRhcmdldFJlc291cmNlLCBTZWNyZXRzIH0gZnJvbSAnLi4vY29uc3RydWN0cy9yZHMtZGF0YWJhc2UtYXV0by1zdGFydC1wcmV2ZW50ZXInO1xuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgUkRTIGRhdGFiYXNlIGF1dG8gc3RhcnQgcHJldmVudCBDREsgc3RhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUkRTRGF0YWJhc2VBdXRvU3RhcnRQcmV2ZW50U3RhY2tQcm9wcyBleHRlbmRzIFN0YWNrUHJvcHMge1xuICAvKiogVGFnLWJhc2VkIHRhcmdldCByZXNvdXJjZSBjcml0ZXJpYSBmb3IgUkRTIGluc3RhbmNlcy9jbHVzdGVycyB0byBwcm90ZWN0LiAqL1xuICByZWFkb25seSB0YXJnZXRSZXNvdXJjZTogVGFyZ2V0UmVzb3VyY2U7XG4gIC8qKiBXaGV0aGVyIHRoZSBFdmVudEJyaWRnZSBydWxlcyBhcmUgZW5hYmxlZC4gRGVmYXVsdHMgdG8gdHJ1ZSBpZiBvbWl0dGVkLiAqL1xuICByZWFkb25seSBlbmFibGVSdWxlPzogYm9vbGVhbjtcbiAgLyoqIFNlY3JldHMgKGUuZy4gU2xhY2spIGZvciBub3RpZmljYXRpb25zLiAqL1xuICByZWFkb25seSBzZWNyZXRzOiBTZWNyZXRzO1xufVxuXG4vKipcbiAqIENESyBTdGFjayB0aGF0IGRlcGxveXMgdGhlIFJEUyBkYXRhYmFzZSBhdXRvIHN0YXJ0IHByZXZlbnQgKEV2ZW50QnJpZGdlIFJ1bGUgKyBEdXJhYmxlIExhbWJkYSkuXG4gKi9cbmV4cG9ydCBjbGFzcyBSRFNEYXRhYmFzZUF1dG9TdGFydFByZXZlbnRTdGFjayBleHRlbmRzIFN0YWNrIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgdGhlIHN0YWNrIGFuZCB0aGUgUkRTRGF0YWJhc2VBdXRvU3RhcnRQcmV2ZW50ZXIgY29uc3RydWN0LlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgLSBQYXJlbnQgY29uc3RydWN0LlxuICAgKiBAcGFyYW0gaWQgLSBTdGFjayBpZC5cbiAgICogQHBhcmFtIHByb3BzIC0gU3RhY2sgcHJvcHMgKHRhcmdldCByZXNvdXJjZSwgZW5hYmxlIHJ1bGUsIHNlY3JldHMpLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJEU0RhdGFiYXNlQXV0b1N0YXJ0UHJldmVudFN0YWNrUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIG5ldyBSRFNEYXRhYmFzZUF1dG9TdGFydFByZXZlbnRlcih0aGlzLCAnUkRTRGF0YWJhc2VBdXRvU3RhcnRQcmV2ZW50ZXInLCB7XG4gICAgICB0YXJnZXRSZXNvdXJjZTogcHJvcHMudGFyZ2V0UmVzb3VyY2UsXG4gICAgICBlbmFibGVSdWxlOiBwcm9wcy5lbmFibGVSdWxlLFxuICAgICAgc2VjcmV0czogcHJvcHMuc2VjcmV0cyxcbiAgICB9KTtcbiAgfVxufSJdfQ==
|
package/package.json
ADDED
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "rds-database-auto-start-preventer",
|
|
3
|
+
"description": "CDK stack that stops RDS DB instances and clusters after they are auto-started by AWS (RDS-EVENT-0154 / RDS-EVENT-0153). It uses EventBridge rules and a Durable Lambda to detect auto-start events, optionally filter by tags, stop the resource if it matches, and post a notification to Slack.",
|
|
4
|
+
"repository": {
|
|
5
|
+
"type": "git",
|
|
6
|
+
"url": "https://github.com/gammarers-aws-cdk-constructs/rds-database-auto-start-preventer.git"
|
|
7
|
+
},
|
|
8
|
+
"scripts": {
|
|
9
|
+
"build": "projen build",
|
|
10
|
+
"bump": "projen bump",
|
|
11
|
+
"bundle": "projen bundle",
|
|
12
|
+
"bundle:funcs/auto-start-prevent.lambda": "projen bundle:funcs/auto-start-prevent.lambda",
|
|
13
|
+
"bundle:funcs/auto-start-prevent.lambda:watch": "projen bundle:funcs/auto-start-prevent.lambda:watch",
|
|
14
|
+
"clobber": "projen clobber",
|
|
15
|
+
"compat": "projen compat",
|
|
16
|
+
"compile": "projen compile",
|
|
17
|
+
"default": "projen default",
|
|
18
|
+
"docgen": "projen docgen",
|
|
19
|
+
"eject": "projen eject",
|
|
20
|
+
"eslint": "projen eslint",
|
|
21
|
+
"package": "projen package",
|
|
22
|
+
"package-all": "projen package-all",
|
|
23
|
+
"package:js": "projen package:js",
|
|
24
|
+
"post-compile": "projen post-compile",
|
|
25
|
+
"post-upgrade": "projen post-upgrade",
|
|
26
|
+
"pre-compile": "projen pre-compile",
|
|
27
|
+
"release": "projen release",
|
|
28
|
+
"test": "projen test",
|
|
29
|
+
"test:watch": "projen test:watch",
|
|
30
|
+
"unbump": "projen unbump",
|
|
31
|
+
"upgrade": "projen upgrade",
|
|
32
|
+
"watch": "projen watch",
|
|
33
|
+
"projen": "projen"
|
|
34
|
+
},
|
|
35
|
+
"author": {
|
|
36
|
+
"name": "yicr",
|
|
37
|
+
"email": "yicr@users.noreply.github.com",
|
|
38
|
+
"organization": false
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@aws-sdk/client-lambda": "^3.1063.0",
|
|
42
|
+
"@aws-sdk/client-rds": "^3.1063.0",
|
|
43
|
+
"@aws-sdk/client-resource-groups-tagging-api": "^3.1063.0",
|
|
44
|
+
"@aws/durable-execution-sdk-js": "^1.1.7",
|
|
45
|
+
"@slack/web-api": "^6.13.0",
|
|
46
|
+
"@stylistic/eslint-plugin": "^2",
|
|
47
|
+
"@types/aws-lambda": "^8.10.162",
|
|
48
|
+
"@types/jest": "^30.0.0",
|
|
49
|
+
"@types/node": "^20",
|
|
50
|
+
"@typescript-eslint/eslint-plugin": "^8",
|
|
51
|
+
"@typescript-eslint/parser": "^8",
|
|
52
|
+
"aws-cdk-lib": "2.232.0",
|
|
53
|
+
"aws-lambda-secret-fetcher": "^0.5.1",
|
|
54
|
+
"aws-sdk-client-mock": "^4.1.0",
|
|
55
|
+
"aws-sdk-client-mock-jest": "^4.1.0",
|
|
56
|
+
"commit-and-tag-version": "^12",
|
|
57
|
+
"constructs": "10.5.1",
|
|
58
|
+
"esbuild": "^0.28.0",
|
|
59
|
+
"eslint": "^9",
|
|
60
|
+
"eslint-import-resolver-typescript": "^4.4.5",
|
|
61
|
+
"eslint-plugin-import": "^2.32.0",
|
|
62
|
+
"jest": "^30.4.2",
|
|
63
|
+
"jest-junit": "^17",
|
|
64
|
+
"jsii": "~5.9.0",
|
|
65
|
+
"jsii-diff": "^1.134.0",
|
|
66
|
+
"jsii-docgen": "^10.5.0",
|
|
67
|
+
"jsii-pacmak": "^1.134.0",
|
|
68
|
+
"jsii-rosetta": "~5.9.0",
|
|
69
|
+
"projen": "^0.99.70",
|
|
70
|
+
"ts-jest": "^29.4.11",
|
|
71
|
+
"ts-node": "^10.9.2",
|
|
72
|
+
"typescript": "5.9.x"
|
|
73
|
+
},
|
|
74
|
+
"peerDependencies": {
|
|
75
|
+
"aws-cdk-lib": "^2.232.0",
|
|
76
|
+
"constructs": "^10.5.1"
|
|
77
|
+
},
|
|
78
|
+
"keywords": [
|
|
79
|
+
"aws",
|
|
80
|
+
"aws-cdk",
|
|
81
|
+
"cdk",
|
|
82
|
+
"rds"
|
|
83
|
+
],
|
|
84
|
+
"engines": {
|
|
85
|
+
"node": ">= 20.0.0"
|
|
86
|
+
},
|
|
87
|
+
"devEngines": {
|
|
88
|
+
"packageManager": {
|
|
89
|
+
"name": "yarn",
|
|
90
|
+
"version": "1.22.22",
|
|
91
|
+
"onFail": "ignore"
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"main": "lib/index.js",
|
|
95
|
+
"license": "Apache-2.0",
|
|
96
|
+
"publishConfig": {
|
|
97
|
+
"access": "public"
|
|
98
|
+
},
|
|
99
|
+
"version": "0.1.1",
|
|
100
|
+
"jest": {
|
|
101
|
+
"coverageProvider": "v8",
|
|
102
|
+
"testMatch": [
|
|
103
|
+
"<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)",
|
|
104
|
+
"<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)",
|
|
105
|
+
"<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)",
|
|
106
|
+
"<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"
|
|
107
|
+
],
|
|
108
|
+
"clearMocks": true,
|
|
109
|
+
"collectCoverage": true,
|
|
110
|
+
"coverageReporters": [
|
|
111
|
+
"json",
|
|
112
|
+
"lcov",
|
|
113
|
+
"clover",
|
|
114
|
+
"cobertura",
|
|
115
|
+
"text"
|
|
116
|
+
],
|
|
117
|
+
"coverageDirectory": "coverage",
|
|
118
|
+
"coveragePathIgnorePatterns": [
|
|
119
|
+
"/node_modules/"
|
|
120
|
+
],
|
|
121
|
+
"testPathIgnorePatterns": [
|
|
122
|
+
"/node_modules/"
|
|
123
|
+
],
|
|
124
|
+
"watchPathIgnorePatterns": [
|
|
125
|
+
"/node_modules/"
|
|
126
|
+
],
|
|
127
|
+
"reporters": [
|
|
128
|
+
"default",
|
|
129
|
+
[
|
|
130
|
+
"jest-junit",
|
|
131
|
+
{
|
|
132
|
+
"outputDirectory": "test-reports"
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
],
|
|
136
|
+
"transform": {
|
|
137
|
+
"^.+\\.[t]sx?$": [
|
|
138
|
+
"ts-jest",
|
|
139
|
+
{
|
|
140
|
+
"tsconfig": "tsconfig.dev.json"
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
},
|
|
145
|
+
"types": "lib/index.d.ts",
|
|
146
|
+
"stability": "stable",
|
|
147
|
+
"jsii": {
|
|
148
|
+
"outdir": "dist",
|
|
149
|
+
"targets": {},
|
|
150
|
+
"tsc": {
|
|
151
|
+
"outDir": "lib",
|
|
152
|
+
"rootDir": "src"
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\"."
|
|
156
|
+
}
|