truemark-cdk-lib 1.26.0 → 1.27.0
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/aws-rds/index.d.ts +1 -0
- package/dist/aws-rds/index.js +18 -0
- package/dist/aws-rds/lib/index.d.ts +2 -0
- package/dist/aws-rds/lib/index.js +22 -0
- package/dist/aws-rds/lib/postgres-props.d.ts +178 -0
- package/dist/aws-rds/lib/postgres-props.js +3 -0
- package/dist/aws-rds/lib/standard-postgres-aurora-cluster.d.ts +79 -0
- package/dist/aws-rds/lib/standard-postgres-aurora-cluster.js +18 -0
- package/dist/aws-rds/lib/standard-postgres-aurora-serverless-cluster.d.ts +161 -0
- package/dist/aws-rds/lib/standard-postgres-aurora-serverless-cluster.js +247 -0
- package/dist/aws-rds/lib/standard-postgres-cluster.d.ts +72 -0
- package/dist/aws-rds/lib/standard-postgres-cluster.js +18 -0
- package/dist/aws-rds/lib/standard-postgres-instance.d.ts +97 -0
- package/dist/aws-rds/lib/standard-postgres-instance.js +18 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -2
- package/package.json +8 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './lib/index';
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./lib/index"), exports);
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzLXJkcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOENBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./postgres-props"), exports);
|
|
18
|
+
__exportStar(require("./standard-postgres-aurora-serverless-cluster"), exports);
|
|
19
|
+
// StandardPostgresAuroraCluster, StandardPostgresCluster and
|
|
20
|
+
// StandardPostgresInstance are unimplemented stubs and are deliberately not
|
|
21
|
+
// exported until they synthesize resources.
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzLXJkcy9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyxnRkFBOEQ7QUFDOUQsNkRBQTZEO0FBQzdELDRFQUE0RTtBQUM1RSw0Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Bvc3RncmVzLXByb3BzJztcbmV4cG9ydCAqIGZyb20gJy4vc3RhbmRhcmQtcG9zdGdyZXMtYXVyb3JhLXNlcnZlcmxlc3MtY2x1c3Rlcic7XG4vLyBTdGFuZGFyZFBvc3RncmVzQXVyb3JhQ2x1c3RlciwgU3RhbmRhcmRQb3N0Z3Jlc0NsdXN0ZXIgYW5kXG4vLyBTdGFuZGFyZFBvc3RncmVzSW5zdGFuY2UgYXJlIHVuaW1wbGVtZW50ZWQgc3R1YnMgYW5kIGFyZSBkZWxpYmVyYXRlbHkgbm90XG4vLyBleHBvcnRlZCB1bnRpbCB0aGV5IHN5bnRoZXNpemUgcmVzb3VyY2VzLlxuIl19
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import type { Duration, RemovalPolicy } from 'aws-cdk-lib';
|
|
2
|
+
import type { IConnectable, ISecurityGroup, IVpc, SubnetSelection } from 'aws-cdk-lib/aws-ec2';
|
|
3
|
+
import type { IKey } from 'aws-cdk-lib/aws-kms';
|
|
4
|
+
import type { RetentionDays } from 'aws-cdk-lib/aws-logs';
|
|
5
|
+
import type { CaCertificate, Credentials, IParameterGroup, ISubnetGroup, NetworkType, PerformanceInsightRetention } from 'aws-cdk-lib/aws-rds';
|
|
6
|
+
import type { ExtendedConstructProps } from '../../aws-cdk';
|
|
7
|
+
/**
|
|
8
|
+
* Common properties shared by all standard PostgreSQL constructs in this module.
|
|
9
|
+
*/
|
|
10
|
+
export interface StandardPostgresProps extends ExtendedConstructProps {
|
|
11
|
+
/**
|
|
12
|
+
* The VPC to place the database in.
|
|
13
|
+
*/
|
|
14
|
+
readonly vpc: IVpc;
|
|
15
|
+
/**
|
|
16
|
+
* The subnets to place the database in.
|
|
17
|
+
*
|
|
18
|
+
* @default the private isolated subnets of the VPC
|
|
19
|
+
*/
|
|
20
|
+
readonly vpcSubnets?: SubnetSelection;
|
|
21
|
+
/**
|
|
22
|
+
* An existing subnet group to place the database in. When provided,
|
|
23
|
+
* vpcSubnets is ignored.
|
|
24
|
+
*
|
|
25
|
+
* @default a subnet group is created
|
|
26
|
+
*/
|
|
27
|
+
readonly subnetGroup?: ISubnetGroup;
|
|
28
|
+
/**
|
|
29
|
+
* Security groups to attach to the database.
|
|
30
|
+
*
|
|
31
|
+
* @default a security group is created
|
|
32
|
+
*/
|
|
33
|
+
readonly securityGroups?: ISecurityGroup[];
|
|
34
|
+
/**
|
|
35
|
+
* Peers allowed to connect to the database on the database port.
|
|
36
|
+
*
|
|
37
|
+
* @default no ingress is added
|
|
38
|
+
*/
|
|
39
|
+
readonly allowFrom?: IConnectable[];
|
|
40
|
+
/**
|
|
41
|
+
* The name of the database created when the instance or cluster is created.
|
|
42
|
+
*
|
|
43
|
+
* @default no database is created
|
|
44
|
+
*/
|
|
45
|
+
readonly databaseName?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Credentials for the administrative user.
|
|
48
|
+
*
|
|
49
|
+
* @default a secret is generated for the "postgres" user
|
|
50
|
+
*/
|
|
51
|
+
readonly credentials?: Credentials;
|
|
52
|
+
/**
|
|
53
|
+
* The port the database listens on.
|
|
54
|
+
*
|
|
55
|
+
* @default 5432
|
|
56
|
+
*/
|
|
57
|
+
readonly port?: number;
|
|
58
|
+
/**
|
|
59
|
+
* The parameter group to associate with the database.
|
|
60
|
+
*
|
|
61
|
+
* @default the default parameter group for the engine version
|
|
62
|
+
*/
|
|
63
|
+
readonly parameterGroup?: IParameterGroup;
|
|
64
|
+
/**
|
|
65
|
+
* Parameters for a parameter group created by the construct. Cannot be
|
|
66
|
+
* combined with parameterGroup: an existing group's parameters are not
|
|
67
|
+
* readable, so they cannot be merged.
|
|
68
|
+
*
|
|
69
|
+
* @default no parameters; the engine default parameter group is used
|
|
70
|
+
*/
|
|
71
|
+
readonly parameters?: Record<string, string>;
|
|
72
|
+
/**
|
|
73
|
+
* The network type of the database.
|
|
74
|
+
*
|
|
75
|
+
* @default NetworkType.IPV4
|
|
76
|
+
*/
|
|
77
|
+
readonly networkType?: NetworkType;
|
|
78
|
+
/**
|
|
79
|
+
* The CA certificate used for the database.
|
|
80
|
+
*
|
|
81
|
+
* @default the RDS default for the region
|
|
82
|
+
*/
|
|
83
|
+
readonly caCertificate?: CaCertificate;
|
|
84
|
+
/**
|
|
85
|
+
* Whether storage is encrypted at rest.
|
|
86
|
+
*
|
|
87
|
+
* @default true
|
|
88
|
+
*/
|
|
89
|
+
readonly storageEncrypted?: boolean;
|
|
90
|
+
/**
|
|
91
|
+
* The KMS key used to encrypt storage at rest.
|
|
92
|
+
*
|
|
93
|
+
* @default the default RDS managed key
|
|
94
|
+
*/
|
|
95
|
+
readonly storageEncryptionKey?: IKey;
|
|
96
|
+
/**
|
|
97
|
+
* How long automated backups are retained.
|
|
98
|
+
*
|
|
99
|
+
* @default Duration.days(7)
|
|
100
|
+
*/
|
|
101
|
+
readonly backupRetention?: Duration;
|
|
102
|
+
/**
|
|
103
|
+
* The daily UTC time window automated backups are taken in, in the
|
|
104
|
+
* format "hh24:mi-hh24:mi".
|
|
105
|
+
*
|
|
106
|
+
* @default a window is selected at random
|
|
107
|
+
*/
|
|
108
|
+
readonly preferredBackupWindow?: string;
|
|
109
|
+
/**
|
|
110
|
+
* The weekly UTC time window maintenance is performed in, in the
|
|
111
|
+
* format "ddd:hh24:mi-ddd:hh24:mi".
|
|
112
|
+
*
|
|
113
|
+
* @default a window is selected at random
|
|
114
|
+
*/
|
|
115
|
+
readonly preferredMaintenanceWindow?: string;
|
|
116
|
+
/**
|
|
117
|
+
* Whether minor engine version upgrades are applied automatically during
|
|
118
|
+
* the maintenance window.
|
|
119
|
+
*
|
|
120
|
+
* @default true
|
|
121
|
+
*/
|
|
122
|
+
readonly autoMinorVersionUpgrade?: boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Whether deletion protection is enabled.
|
|
125
|
+
*
|
|
126
|
+
* @default true
|
|
127
|
+
*/
|
|
128
|
+
readonly deletionProtection?: boolean;
|
|
129
|
+
/**
|
|
130
|
+
* The removal policy applied to the database.
|
|
131
|
+
*
|
|
132
|
+
* @default RemovalPolicy.RETAIN
|
|
133
|
+
*/
|
|
134
|
+
readonly removalPolicy?: RemovalPolicy;
|
|
135
|
+
/**
|
|
136
|
+
* Whether a final snapshot is skipped when the database is deleted.
|
|
137
|
+
*
|
|
138
|
+
* @default false
|
|
139
|
+
*/
|
|
140
|
+
readonly skipFinalSnapshot?: boolean;
|
|
141
|
+
/**
|
|
142
|
+
* The interval enhanced monitoring metrics are collected at.
|
|
143
|
+
*
|
|
144
|
+
* @default no enhanced monitoring
|
|
145
|
+
*/
|
|
146
|
+
readonly monitoringInterval?: Duration;
|
|
147
|
+
/**
|
|
148
|
+
* Whether Performance Insights is enabled.
|
|
149
|
+
*
|
|
150
|
+
* @default false
|
|
151
|
+
*/
|
|
152
|
+
readonly enablePerformanceInsights?: boolean;
|
|
153
|
+
/**
|
|
154
|
+
* How long Performance Insights data is retained.
|
|
155
|
+
*
|
|
156
|
+
* @default PerformanceInsightRetention.DEFAULT
|
|
157
|
+
*/
|
|
158
|
+
readonly performanceInsightRetention?: PerformanceInsightRetention;
|
|
159
|
+
/**
|
|
160
|
+
* The log types exported to CloudWatch Logs.
|
|
161
|
+
*
|
|
162
|
+
* @default ["postgresql"]
|
|
163
|
+
*/
|
|
164
|
+
readonly cloudwatchLogsExports?: string[];
|
|
165
|
+
/**
|
|
166
|
+
* How long exported logs are retained in CloudWatch Logs.
|
|
167
|
+
*
|
|
168
|
+
* @default RetentionDays.ONE_MONTH
|
|
169
|
+
*/
|
|
170
|
+
readonly cloudwatchLogsRetention?: RetentionDays;
|
|
171
|
+
/**
|
|
172
|
+
* Setting this to true will suppress the creation of default tags on resources
|
|
173
|
+
* created by this construct. Default is false.
|
|
174
|
+
*
|
|
175
|
+
* @default false
|
|
176
|
+
*/
|
|
177
|
+
readonly suppressTagging?: boolean;
|
|
178
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdGdyZXMtcHJvcHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzLXJkcy9saWIvcG9zdGdyZXMtcHJvcHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeX0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUge1xuICBJQ29ubmVjdGFibGUsXG4gIElTZWN1cml0eUdyb3VwLFxuICBJVnBjLFxuICBTdWJuZXRTZWxlY3Rpb24sXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHR5cGUge0lLZXl9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1rbXMnO1xuaW1wb3J0IHR5cGUge1JldGVudGlvbkRheXN9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB0eXBlIHtcbiAgQ2FDZXJ0aWZpY2F0ZSxcbiAgQ3JlZGVudGlhbHMsXG4gIElQYXJhbWV0ZXJHcm91cCxcbiAgSVN1Ym5ldEdyb3VwLFxuICBOZXR3b3JrVHlwZSxcbiAgUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcmRzJztcbmltcG9ydCB0eXBlIHtFeHRlbmRlZENvbnN0cnVjdFByb3BzfSBmcm9tICcuLi8uLi9hd3MtY2RrJztcblxuLyoqXG4gKiBDb21tb24gcHJvcGVydGllcyBzaGFyZWQgYnkgYWxsIHN0YW5kYXJkIFBvc3RncmVTUUwgY29uc3RydWN0cyBpbiB0aGlzIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFyZFBvc3RncmVzUHJvcHMgZXh0ZW5kcyBFeHRlbmRlZENvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBWUEMgdG8gcGxhY2UgdGhlIGRhdGFiYXNlIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBJVnBjO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0cyB0byBwbGFjZSB0aGUgZGF0YWJhc2UgaW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBwcml2YXRlIGlzb2xhdGVkIHN1Ym5ldHMgb2YgdGhlIFZQQ1xuICAgKi9cbiAgcmVhZG9ubHkgdnBjU3VibmV0cz86IFN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogQW4gZXhpc3Rpbmcgc3VibmV0IGdyb3VwIHRvIHBsYWNlIHRoZSBkYXRhYmFzZSBpbi4gV2hlbiBwcm92aWRlZCxcbiAgICogdnBjU3VibmV0cyBpcyBpZ25vcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBhIHN1Ym5ldCBncm91cCBpcyBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRHcm91cD86IElTdWJuZXRHcm91cDtcblxuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXBzIHRvIGF0dGFjaCB0byB0aGUgZGF0YWJhc2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IGEgc2VjdXJpdHkgZ3JvdXAgaXMgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHM/OiBJU2VjdXJpdHlHcm91cFtdO1xuXG4gIC8qKlxuICAgKiBQZWVycyBhbGxvd2VkIHRvIGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlIG9uIHRoZSBkYXRhYmFzZSBwb3J0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBpbmdyZXNzIGlzIGFkZGVkXG4gICAqL1xuICByZWFkb25seSBhbGxvd0Zyb20/OiBJQ29ubmVjdGFibGVbXTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRhdGFiYXNlIGNyZWF0ZWQgd2hlbiB0aGUgaW5zdGFuY2Ugb3IgY2x1c3RlciBpcyBjcmVhdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBkYXRhYmFzZSBpcyBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSBkYXRhYmFzZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWRlbnRpYWxzIGZvciB0aGUgYWRtaW5pc3RyYXRpdmUgdXNlci5cbiAgICpcbiAgICogQGRlZmF1bHQgYSBzZWNyZXQgaXMgZ2VuZXJhdGVkIGZvciB0aGUgXCJwb3N0Z3Jlc1wiIHVzZXJcbiAgICovXG4gIHJlYWRvbmx5IGNyZWRlbnRpYWxzPzogQ3JlZGVudGlhbHM7XG5cbiAgLyoqXG4gICAqIFRoZSBwb3J0IHRoZSBkYXRhYmFzZSBsaXN0ZW5zIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCA1NDMyXG4gICAqL1xuICByZWFkb25seSBwb3J0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFyYW1ldGVyIGdyb3VwIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGRlZmF1bHQgcGFyYW1ldGVyIGdyb3VwIGZvciB0aGUgZW5naW5lIHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlckdyb3VwPzogSVBhcmFtZXRlckdyb3VwO1xuXG4gIC8qKlxuICAgKiBQYXJhbWV0ZXJzIGZvciBhIHBhcmFtZXRlciBncm91cCBjcmVhdGVkIGJ5IHRoZSBjb25zdHJ1Y3QuIENhbm5vdCBiZVxuICAgKiBjb21iaW5lZCB3aXRoIHBhcmFtZXRlckdyb3VwOiBhbiBleGlzdGluZyBncm91cCdzIHBhcmFtZXRlcnMgYXJlIG5vdFxuICAgKiByZWFkYWJsZSwgc28gdGhleSBjYW5ub3QgYmUgbWVyZ2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBwYXJhbWV0ZXJzOyB0aGUgZW5naW5lIGRlZmF1bHQgcGFyYW1ldGVyIGdyb3VwIGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBUaGUgbmV0d29yayB0eXBlIG9mIHRoZSBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgTmV0d29ya1R5cGUuSVBWNFxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya1R5cGU/OiBOZXR3b3JrVHlwZTtcblxuICAvKipcbiAgICogVGhlIENBIGNlcnRpZmljYXRlIHVzZWQgZm9yIHRoZSBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIFJEUyBkZWZhdWx0IGZvciB0aGUgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSBjYUNlcnRpZmljYXRlPzogQ2FDZXJ0aWZpY2F0ZTtcblxuICAvKipcbiAgICogV2hldGhlciBzdG9yYWdlIGlzIGVuY3J5cHRlZCBhdCByZXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlRW5jcnlwdGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdXNlZCB0byBlbmNyeXB0IHN0b3JhZ2UgYXQgcmVzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGRlZmF1bHQgUkRTIG1hbmFnZWQga2V5XG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlRW5jcnlwdGlvbktleT86IElLZXk7XG5cbiAgLyoqXG4gICAqIEhvdyBsb25nIGF1dG9tYXRlZCBiYWNrdXBzIGFyZSByZXRhaW5lZC5cbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uZGF5cyg3KVxuICAgKi9cbiAgcmVhZG9ubHkgYmFja3VwUmV0ZW50aW9uPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBkYWlseSBVVEMgdGltZSB3aW5kb3cgYXV0b21hdGVkIGJhY2t1cHMgYXJlIHRha2VuIGluLCBpbiB0aGVcbiAgICogZm9ybWF0IFwiaGgyNDptaS1oaDI0Om1pXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGEgd2luZG93IGlzIHNlbGVjdGVkIGF0IHJhbmRvbVxuICAgKi9cbiAgcmVhZG9ubHkgcHJlZmVycmVkQmFja3VwV2luZG93Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgd2Vla2x5IFVUQyB0aW1lIHdpbmRvdyBtYWludGVuYW5jZSBpcyBwZXJmb3JtZWQgaW4sIGluIHRoZVxuICAgKiBmb3JtYXQgXCJkZGQ6aGgyNDptaS1kZGQ6aGgyNDptaVwiLlxuICAgKlxuICAgKiBAZGVmYXVsdCBhIHdpbmRvdyBpcyBzZWxlY3RlZCBhdCByYW5kb21cbiAgICovXG4gIHJlYWRvbmx5IHByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIG1pbm9yIGVuZ2luZSB2ZXJzaW9uIHVwZ3JhZGVzIGFyZSBhcHBsaWVkIGF1dG9tYXRpY2FsbHkgZHVyaW5nXG4gICAqIHRoZSBtYWludGVuYW5jZSB3aW5kb3cuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9NaW5vclZlcnNpb25VcGdyYWRlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciBkZWxldGlvbiBwcm90ZWN0aW9uIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0aW9uUHJvdGVjdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByZW1vdmFsIHBvbGljeSBhcHBsaWVkIHRvIHRoZSBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICovXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgZmluYWwgc25hcHNob3QgaXMgc2tpcHBlZCB3aGVuIHRoZSBkYXRhYmFzZSBpcyBkZWxldGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcEZpbmFsU25hcHNob3Q/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgaW50ZXJ2YWwgZW5oYW5jZWQgbW9uaXRvcmluZyBtZXRyaWNzIGFyZSBjb2xsZWN0ZWQgYXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGVuaGFuY2VkIG1vbml0b3JpbmdcbiAgICovXG4gIHJlYWRvbmx5IG1vbml0b3JpbmdJbnRlcnZhbD86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIFBlcmZvcm1hbmNlIEluc2lnaHRzIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQZXJmb3JtYW5jZUluc2lnaHRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSG93IGxvbmcgUGVyZm9ybWFuY2UgSW5zaWdodHMgZGF0YSBpcyByZXRhaW5lZC5cbiAgICpcbiAgICogQGRlZmF1bHQgUGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLkRFRkFVTFRcbiAgICovXG4gIHJlYWRvbmx5IHBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbj86IFBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbjtcblxuICAvKipcbiAgICogVGhlIGxvZyB0eXBlcyBleHBvcnRlZCB0byBDbG91ZFdhdGNoIExvZ3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtcInBvc3RncmVzcWxcIl1cbiAgICovXG4gIHJlYWRvbmx5IGNsb3Vkd2F0Y2hMb2dzRXhwb3J0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBIb3cgbG9uZyBleHBvcnRlZCBsb2dzIGFyZSByZXRhaW5lZCBpbiBDbG91ZFdhdGNoIExvZ3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IFJldGVudGlvbkRheXMuT05FX01PTlRIXG4gICAqL1xuICByZWFkb25seSBjbG91ZHdhdGNoTG9nc1JldGVudGlvbj86IFJldGVudGlvbkRheXM7XG5cbiAgLyoqXG4gICAqIFNldHRpbmcgdGhpcyB0byB0cnVlIHdpbGwgc3VwcHJlc3MgdGhlIGNyZWF0aW9uIG9mIGRlZmF1bHQgdGFncyBvbiByZXNvdXJjZXNcbiAgICogY3JlYXRlZCBieSB0aGlzIGNvbnN0cnVjdC4gRGVmYXVsdCBpcyBmYWxzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHN1cHByZXNzVGFnZ2luZz86IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { InstanceType } from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import type { AuroraPostgresEngineVersion, IParameterGroup } from 'aws-cdk-lib/aws-rds';
|
|
3
|
+
import type { Construct } from 'constructs';
|
|
4
|
+
import { ExtendedConstruct } from '../../aws-cdk';
|
|
5
|
+
import type { StandardPostgresProps } from './postgres-props';
|
|
6
|
+
/**
|
|
7
|
+
* Properties for a StandardPostgresAuroraCluster.
|
|
8
|
+
*/
|
|
9
|
+
export interface StandardPostgresAuroraClusterProps extends StandardPostgresProps {
|
|
10
|
+
/**
|
|
11
|
+
* The Aurora PostgreSQL engine version to use.
|
|
12
|
+
*
|
|
13
|
+
* @default the latest version supported by this library
|
|
14
|
+
*/
|
|
15
|
+
readonly engineVersion?: AuroraPostgresEngineVersion;
|
|
16
|
+
/**
|
|
17
|
+
* The name given to the cluster.
|
|
18
|
+
*
|
|
19
|
+
* @default CloudFormation-generated name
|
|
20
|
+
*/
|
|
21
|
+
readonly clusterIdentifier?: string;
|
|
22
|
+
/**
|
|
23
|
+
* The instance type of the writer instance.
|
|
24
|
+
*
|
|
25
|
+
* @default t4g.medium
|
|
26
|
+
*/
|
|
27
|
+
readonly writerInstanceType?: InstanceType;
|
|
28
|
+
/**
|
|
29
|
+
* The instance type of the reader instances.
|
|
30
|
+
*
|
|
31
|
+
* @default same as writerInstanceType
|
|
32
|
+
*/
|
|
33
|
+
readonly readerInstanceType?: InstanceType;
|
|
34
|
+
/**
|
|
35
|
+
* The number of reader instances to create.
|
|
36
|
+
*
|
|
37
|
+
* @default 1
|
|
38
|
+
*/
|
|
39
|
+
readonly readers?: number;
|
|
40
|
+
/**
|
|
41
|
+
* Whether reader instances are promoted to writer in the same tier as the
|
|
42
|
+
* writer instance during a failover.
|
|
43
|
+
*
|
|
44
|
+
* @default true
|
|
45
|
+
*/
|
|
46
|
+
readonly readersInFailoverTier?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* The parameter group associated with the instances in the cluster. Distinct
|
|
49
|
+
* from the cluster level parameterGroup.
|
|
50
|
+
*
|
|
51
|
+
* @default the default parameter group for the engine version
|
|
52
|
+
*/
|
|
53
|
+
readonly instanceParameterGroup?: IParameterGroup;
|
|
54
|
+
/**
|
|
55
|
+
* The backtrack window length in days. Set to 0 to disable
|
|
56
|
+
* backtrack.
|
|
57
|
+
*
|
|
58
|
+
* @default 0
|
|
59
|
+
*/
|
|
60
|
+
readonly backtrackWindowDays?: number;
|
|
61
|
+
/**
|
|
62
|
+
* Whether the storage of the cluster uses Aurora I/O-Optimized.
|
|
63
|
+
*
|
|
64
|
+
* @default false
|
|
65
|
+
*/
|
|
66
|
+
readonly ioOptimized?: boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Whether the instances in the cluster are publicly accessible.
|
|
69
|
+
*
|
|
70
|
+
* @default false
|
|
71
|
+
*/
|
|
72
|
+
readonly publiclyAccessible?: boolean;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* A standard provisioned Aurora PostgreSQL database cluster.
|
|
76
|
+
*/
|
|
77
|
+
export declare class StandardPostgresAuroraCluster extends ExtendedConstruct {
|
|
78
|
+
constructor(scope: Construct, id: string, props: StandardPostgresAuroraClusterProps);
|
|
79
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StandardPostgresAuroraCluster = void 0;
|
|
4
|
+
const aws_cdk_1 = require("../../aws-cdk");
|
|
5
|
+
const truemark_1 = require("../../truemark");
|
|
6
|
+
/**
|
|
7
|
+
* A standard provisioned Aurora PostgreSQL database cluster.
|
|
8
|
+
*/
|
|
9
|
+
class StandardPostgresAuroraCluster extends aws_cdk_1.ExtendedConstruct {
|
|
10
|
+
constructor(scope, id, props) {
|
|
11
|
+
super(scope, id, {
|
|
12
|
+
standardTags: aws_cdk_1.StandardTags.merge(props.standardTags, truemark_1.LibStandardTags),
|
|
13
|
+
});
|
|
14
|
+
// TODO Implementation
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.StandardPostgresAuroraCluster = StandardPostgresAuroraCluster;
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtcG9zdGdyZXMtYXVyb3JhLWNsdXN0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzLXJkcy9saWIvc3RhbmRhcmQtcG9zdGdyZXMtYXVyb3JhLWNsdXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEsMkNBQThEO0FBQzlELDZDQUErQztBQWtGL0M7O0dBRUc7QUFDSCxNQUFhLDZCQUE4QixTQUFRLDJCQUFpQjtJQUNsRSxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUF5QztRQUV6QyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFlBQVksRUFBRSxzQkFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLDBCQUFlLENBQUM7U0FDdEUsQ0FBQyxDQUFDO1FBQ0gsc0JBQXNCO0lBQ3hCLENBQUM7Q0FDRjtBQVhELHNFQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge0luc3RhbmNlVHlwZX0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgdHlwZSB7XG4gIEF1cm9yYVBvc3RncmVzRW5naW5lVmVyc2lvbixcbiAgSVBhcmFtZXRlckdyb3VwLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcmRzJztcbmltcG9ydCB0eXBlIHtDb25zdHJ1Y3R9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtFeHRlbmRlZENvbnN0cnVjdCwgU3RhbmRhcmRUYWdzfSBmcm9tICcuLi8uLi9hd3MtY2RrJztcbmltcG9ydCB7TGliU3RhbmRhcmRUYWdzfSBmcm9tICcuLi8uLi90cnVlbWFyayc7XG5pbXBvcnQgdHlwZSB7U3RhbmRhcmRQb3N0Z3Jlc1Byb3BzfSBmcm9tICcuL3Bvc3RncmVzLXByb3BzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFDbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFDbHVzdGVyUHJvcHNcbiAgZXh0ZW5kcyBTdGFuZGFyZFBvc3RncmVzUHJvcHMge1xuICAvKipcbiAgICogVGhlIEF1cm9yYSBQb3N0Z3JlU1FMIGVuZ2luZSB2ZXJzaW9uIHRvIHVzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGxhdGVzdCB2ZXJzaW9uIHN1cHBvcnRlZCBieSB0aGlzIGxpYnJhcnlcbiAgICovXG4gIHJlYWRvbmx5IGVuZ2luZVZlcnNpb24/OiBBdXJvcmFQb3N0Z3Jlc0VuZ2luZVZlcnNpb247XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIGdpdmVuIHRvIHRoZSBjbHVzdGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBDbG91ZEZvcm1hdGlvbi1nZW5lcmF0ZWQgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlcklkZW50aWZpZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZSB0eXBlIG9mIHRoZSB3cml0ZXIgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IHQ0Zy5tZWRpdW1cbiAgICovXG4gIHJlYWRvbmx5IHdyaXRlckluc3RhbmNlVHlwZT86IEluc3RhbmNlVHlwZTtcblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIHR5cGUgb2YgdGhlIHJlYWRlciBpbnN0YW5jZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHNhbWUgYXMgd3JpdGVySW5zdGFuY2VUeXBlXG4gICAqL1xuICByZWFkb25seSByZWFkZXJJbnN0YW5jZVR5cGU/OiBJbnN0YW5jZVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcmVhZGVyIGluc3RhbmNlcyB0byBjcmVhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRlcnM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgcmVhZGVyIGluc3RhbmNlcyBhcmUgcHJvbW90ZWQgdG8gd3JpdGVyIGluIHRoZSBzYW1lIHRpZXIgYXMgdGhlXG4gICAqIHdyaXRlciBpbnN0YW5jZSBkdXJpbmcgYSBmYWlsb3Zlci5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVhZGVyc0luRmFpbG92ZXJUaWVyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhcmFtZXRlciBncm91cCBhc3NvY2lhdGVkIHdpdGggdGhlIGluc3RhbmNlcyBpbiB0aGUgY2x1c3Rlci4gRGlzdGluY3RcbiAgICogZnJvbSB0aGUgY2x1c3RlciBsZXZlbCBwYXJhbWV0ZXJHcm91cC5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGRlZmF1bHQgcGFyYW1ldGVyIGdyb3VwIGZvciB0aGUgZW5naW5lIHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlUGFyYW1ldGVyR3JvdXA/OiBJUGFyYW1ldGVyR3JvdXA7XG5cbiAgLyoqXG4gICAqIFRoZSBiYWNrdHJhY2sgd2luZG93IGxlbmd0aCBpbiBkYXlzLiBTZXQgdG8gMCB0byBkaXNhYmxlXG4gICAqIGJhY2t0cmFjay5cbiAgICpcbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgcmVhZG9ubHkgYmFja3RyYWNrV2luZG93RGF5cz86IG51bWJlcjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc3RvcmFnZSBvZiB0aGUgY2x1c3RlciB1c2VzIEF1cm9yYSBJL08tT3B0aW1pemVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW9PcHRpbWl6ZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBpbnN0YW5jZXMgaW4gdGhlIGNsdXN0ZXIgYXJlIHB1YmxpY2x5IGFjY2Vzc2libGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwdWJsaWNseUFjY2Vzc2libGU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgc3RhbmRhcmQgcHJvdmlzaW9uZWQgQXVyb3JhIFBvc3RncmVTUUwgZGF0YWJhc2UgY2x1c3Rlci5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFDbHVzdGVyIGV4dGVuZHMgRXh0ZW5kZWRDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFDbHVzdGVyUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgc3RhbmRhcmRUYWdzOiBTdGFuZGFyZFRhZ3MubWVyZ2UocHJvcHMuc3RhbmRhcmRUYWdzLCBMaWJTdGFuZGFyZFRhZ3MpLFxuICAgIH0pO1xuICAgIC8vIFRPRE8gSW1wbGVtZW50YXRpb25cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { RemovalPolicy, type ResourceEnvironment, type Stack } from 'aws-cdk-lib';
|
|
2
|
+
import type { Metric, MetricOptions } from 'aws-cdk-lib/aws-cloudwatch';
|
|
3
|
+
import { type Connections } from 'aws-cdk-lib/aws-ec2';
|
|
4
|
+
import type { Grant, IGrantable } from 'aws-cdk-lib/aws-iam';
|
|
5
|
+
import { AuroraPostgresEngineVersion, DatabaseCluster, type DatabaseProxy, type DatabaseProxyOptions, type DBClusterReference, type Endpoint, type IClusterEngine, type IDatabaseCluster, type IParameterGroup } from 'aws-cdk-lib/aws-rds';
|
|
6
|
+
import type { ISecret, SecretAttachmentTargetProps } from 'aws-cdk-lib/aws-secretsmanager';
|
|
7
|
+
import type { Construct } from 'constructs';
|
|
8
|
+
import { ExtendedConstruct } from '../../aws-cdk';
|
|
9
|
+
import type { StandardPostgresProps } from './postgres-props';
|
|
10
|
+
/**
|
|
11
|
+
* Properties for a StandardPostgresAuroraServerlessCluster.
|
|
12
|
+
*/
|
|
13
|
+
export interface StandardPostgresAuroraServerlessClusterProps extends StandardPostgresProps {
|
|
14
|
+
/**
|
|
15
|
+
* The Aurora PostgreSQL engine version to use.
|
|
16
|
+
*
|
|
17
|
+
* @default the latest version supported by this library
|
|
18
|
+
*/
|
|
19
|
+
readonly engineVersion?: AuroraPostgresEngineVersion;
|
|
20
|
+
/**
|
|
21
|
+
* The name given to the cluster.
|
|
22
|
+
*
|
|
23
|
+
* @default CloudFormation-generated name
|
|
24
|
+
*/
|
|
25
|
+
readonly clusterIdentifier?: string;
|
|
26
|
+
/**
|
|
27
|
+
* The minimum number of Aurora capacity units the cluster may scale down to.
|
|
28
|
+
* Half-step increments; 0 enables automatic pause on engine versions that
|
|
29
|
+
* support it.
|
|
30
|
+
*
|
|
31
|
+
* @default 0.5
|
|
32
|
+
*/
|
|
33
|
+
readonly minCapacity?: number;
|
|
34
|
+
/**
|
|
35
|
+
* The maximum number of Aurora capacity units the cluster may scale up to.
|
|
36
|
+
* Half-step increments, greater than 0.5 and at most 256.
|
|
37
|
+
*
|
|
38
|
+
* @default 4
|
|
39
|
+
*/
|
|
40
|
+
readonly maxCapacity?: number;
|
|
41
|
+
/**
|
|
42
|
+
* The time in seconds the cluster may remain idle before it is paused,
|
|
43
|
+
* between 300 (5 minutes) and 86400 (24 hours). Only supported when
|
|
44
|
+
* minCapacity is 0.
|
|
45
|
+
*
|
|
46
|
+
* @default no automatic pause
|
|
47
|
+
*/
|
|
48
|
+
readonly secondsUntilAutoPause?: number;
|
|
49
|
+
/**
|
|
50
|
+
* The number of reader instances to create.
|
|
51
|
+
*
|
|
52
|
+
* @default 1
|
|
53
|
+
*/
|
|
54
|
+
readonly readers?: number;
|
|
55
|
+
/**
|
|
56
|
+
* Whether reader instances are promoted to writer in the same tier as the
|
|
57
|
+
* writer instance during a failover.
|
|
58
|
+
*
|
|
59
|
+
* @default true
|
|
60
|
+
*/
|
|
61
|
+
readonly readersInFailoverTier?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* The parameter group associated with the instances in the cluster. Distinct
|
|
64
|
+
* from the cluster level parameterGroup.
|
|
65
|
+
*
|
|
66
|
+
* @default the default parameter group for the engine version
|
|
67
|
+
*/
|
|
68
|
+
readonly instanceParameterGroup?: IParameterGroup;
|
|
69
|
+
/**
|
|
70
|
+
* Whether the storage of the cluster uses Aurora I/O-Optimized.
|
|
71
|
+
*
|
|
72
|
+
* @default false
|
|
73
|
+
*/
|
|
74
|
+
readonly ioOptimized?: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Whether the instances in the cluster are publicly accessible.
|
|
77
|
+
*
|
|
78
|
+
* @default false
|
|
79
|
+
*/
|
|
80
|
+
readonly publiclyAccessible?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Whether IAM database authentication is enabled. Required for
|
|
83
|
+
* `grantConnect` to have any effect and for RDS Proxy IAM authentication.
|
|
84
|
+
*
|
|
85
|
+
* @default true
|
|
86
|
+
*/
|
|
87
|
+
readonly iamAuthentication?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* The removal policy applied to the generated master credentials secret.
|
|
90
|
+
*
|
|
91
|
+
* @default - follows the cluster: RETAIN unless the cluster's removal
|
|
92
|
+
* policy is DESTROY
|
|
93
|
+
*/
|
|
94
|
+
readonly secretRemovalPolicy?: RemovalPolicy;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* A standard Aurora Serverless v2 PostgreSQL database cluster.
|
|
98
|
+
*
|
|
99
|
+
* The construct implements IDatabaseCluster by delegating to the underlying
|
|
100
|
+
* DatabaseCluster exposed as `cluster`. CDK APIs that inspect the construct
|
|
101
|
+
* tree rather than the interface, such as `ProxyTarget.fromCluster`, do not
|
|
102
|
+
* find the cluster's instances through this wrapper and would create a proxy
|
|
103
|
+
* target group without waiting for them; hand those APIs `cluster` instead,
|
|
104
|
+
* or use `addProxy`, which does so internally.
|
|
105
|
+
*/
|
|
106
|
+
export declare class StandardPostgresAuroraServerlessCluster extends ExtendedConstruct implements IDatabaseCluster {
|
|
107
|
+
/** The engine version used when props.engineVersion is not provided. */
|
|
108
|
+
static readonly DEFAULT_ENGINE_VERSION: AuroraPostgresEngineVersion;
|
|
109
|
+
static readonly DEFAULT_MIN_CAPACITY = 0.5;
|
|
110
|
+
static readonly DEFAULT_MAX_CAPACITY = 4;
|
|
111
|
+
static readonly DEFAULT_READERS = 1;
|
|
112
|
+
static readonly MAX_CAPACITY_LIMIT = 256;
|
|
113
|
+
static readonly MIN_AUTO_PAUSE_SECONDS = 300;
|
|
114
|
+
static readonly MAX_AUTO_PAUSE_SECONDS = 86400;
|
|
115
|
+
/** The underlying Aurora Serverless v2 cluster. */
|
|
116
|
+
readonly cluster: DatabaseCluster;
|
|
117
|
+
/** The generated (or provided) master credentials secret, if any. */
|
|
118
|
+
readonly secret?: ISecret;
|
|
119
|
+
readonly clusterIdentifier: string;
|
|
120
|
+
readonly clusterResourceIdentifier: string;
|
|
121
|
+
readonly instanceIdentifiers: string[];
|
|
122
|
+
readonly clusterEndpoint: Endpoint;
|
|
123
|
+
readonly clusterReadEndpoint: Endpoint;
|
|
124
|
+
readonly instanceEndpoints: Endpoint[];
|
|
125
|
+
readonly engine?: IClusterEngine;
|
|
126
|
+
readonly clusterArn: string;
|
|
127
|
+
readonly connections: Connections;
|
|
128
|
+
readonly dbClusterRef: DBClusterReference;
|
|
129
|
+
readonly stack: Stack;
|
|
130
|
+
readonly env: ResourceEnvironment;
|
|
131
|
+
constructor(scope: Construct, id: string, props: StandardPostgresAuroraServerlessClusterProps);
|
|
132
|
+
/**
|
|
133
|
+
* Validates the capacity range, reader count and auto-pause setting.
|
|
134
|
+
*
|
|
135
|
+
* @param minCapacity minimum ACUs
|
|
136
|
+
* @param maxCapacity maximum ACUs
|
|
137
|
+
* @param readers number of reader instances
|
|
138
|
+
* @param secondsUntilAutoPause idle time before pause, if any
|
|
139
|
+
*/
|
|
140
|
+
static validate(minCapacity: number, maxCapacity: number, readers: number, secondsUntilAutoPause?: number): void;
|
|
141
|
+
addProxy(id: string, options: DatabaseProxyOptions): DatabaseProxy;
|
|
142
|
+
grantConnect(grantee: IGrantable, dbUser: string): Grant;
|
|
143
|
+
grantDataApiAccess(grantee: IGrantable): Grant;
|
|
144
|
+
asSecretAttachmentTarget(): SecretAttachmentTargetProps;
|
|
145
|
+
applyRemovalPolicy(policy: RemovalPolicy): void;
|
|
146
|
+
metric(metricName: string, props?: MetricOptions): Metric;
|
|
147
|
+
metricCPUUtilization(props?: MetricOptions): Metric;
|
|
148
|
+
metricDatabaseConnections(props?: MetricOptions): Metric;
|
|
149
|
+
metricDeadlocks(props?: MetricOptions): Metric;
|
|
150
|
+
metricEngineUptime(props?: MetricOptions): Metric;
|
|
151
|
+
metricFreeableMemory(props?: MetricOptions): Metric;
|
|
152
|
+
metricFreeLocalStorage(props?: MetricOptions): Metric;
|
|
153
|
+
metricNetworkReceiveThroughput(props?: MetricOptions): Metric;
|
|
154
|
+
metricNetworkThroughput(props?: MetricOptions): Metric;
|
|
155
|
+
metricNetworkTransmitThroughput(props?: MetricOptions): Metric;
|
|
156
|
+
metricSnapshotStorageUsed(props?: MetricOptions): Metric;
|
|
157
|
+
metricTotalBackupStorageBilled(props?: MetricOptions): Metric;
|
|
158
|
+
metricVolumeBytesUsed(props?: MetricOptions): Metric;
|
|
159
|
+
metricVolumeReadIOPs(props?: MetricOptions): Metric;
|
|
160
|
+
metricVolumeWriteIOPs(props?: MetricOptions): Metric;
|
|
161
|
+
}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StandardPostgresAuroraServerlessCluster = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
6
|
+
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
7
|
+
const aws_rds_1 = require("aws-cdk-lib/aws-rds");
|
|
8
|
+
const aws_cdk_1 = require("../../aws-cdk");
|
|
9
|
+
const truemark_1 = require("../../truemark");
|
|
10
|
+
/**
|
|
11
|
+
* A standard Aurora Serverless v2 PostgreSQL database cluster.
|
|
12
|
+
*
|
|
13
|
+
* The construct implements IDatabaseCluster by delegating to the underlying
|
|
14
|
+
* DatabaseCluster exposed as `cluster`. CDK APIs that inspect the construct
|
|
15
|
+
* tree rather than the interface, such as `ProxyTarget.fromCluster`, do not
|
|
16
|
+
* find the cluster's instances through this wrapper and would create a proxy
|
|
17
|
+
* target group without waiting for them; hand those APIs `cluster` instead,
|
|
18
|
+
* or use `addProxy`, which does so internally.
|
|
19
|
+
*/
|
|
20
|
+
class StandardPostgresAuroraServerlessCluster extends aws_cdk_1.ExtendedConstruct {
|
|
21
|
+
constructor(scope, id, props) {
|
|
22
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
|
|
23
|
+
super(scope, id, {
|
|
24
|
+
standardTags: aws_cdk_1.StandardTags.merge({
|
|
25
|
+
...((_a = props.standardTags) !== null && _a !== void 0 ? _a : {}),
|
|
26
|
+
suppressTagging: (_b = props.suppressTagging) !== null && _b !== void 0 ? _b : (_c = props.standardTags) === null || _c === void 0 ? void 0 : _c.suppressTagging,
|
|
27
|
+
}, truemark_1.LibStandardTags),
|
|
28
|
+
});
|
|
29
|
+
if (props.parameterGroup && props.parameters) {
|
|
30
|
+
throw new Error('parameterGroup and parameters cannot be combined; pass either an existing group or parameters for a new one');
|
|
31
|
+
}
|
|
32
|
+
const engine = aws_rds_1.DatabaseClusterEngine.auroraPostgres({
|
|
33
|
+
version: (_d = props.engineVersion) !== null && _d !== void 0 ? _d : StandardPostgresAuroraServerlessCluster.DEFAULT_ENGINE_VERSION,
|
|
34
|
+
});
|
|
35
|
+
// caCertificate, instanceParameterGroup and publiclyAccessible are
|
|
36
|
+
// per-instance settings in the CDK API, applied to the writer and every
|
|
37
|
+
// reader.
|
|
38
|
+
const instanceOptions = {
|
|
39
|
+
parameterGroup: props.instanceParameterGroup,
|
|
40
|
+
caCertificate: props.caCertificate,
|
|
41
|
+
publiclyAccessible: (_e = props.publiclyAccessible) !== null && _e !== void 0 ? _e : false,
|
|
42
|
+
};
|
|
43
|
+
const readerCount = (_f = props.readers) !== null && _f !== void 0 ? _f : StandardPostgresAuroraServerlessCluster.DEFAULT_READERS;
|
|
44
|
+
const readersInFailoverTier = (_g = props.readersInFailoverTier) !== null && _g !== void 0 ? _g : true;
|
|
45
|
+
const minCapacity = (_h = props.minCapacity) !== null && _h !== void 0 ? _h : StandardPostgresAuroraServerlessCluster.DEFAULT_MIN_CAPACITY;
|
|
46
|
+
const maxCapacity = (_j = props.maxCapacity) !== null && _j !== void 0 ? _j : StandardPostgresAuroraServerlessCluster.DEFAULT_MAX_CAPACITY;
|
|
47
|
+
StandardPostgresAuroraServerlessCluster.validate(minCapacity, maxCapacity, readerCount, props.secondsUntilAutoPause);
|
|
48
|
+
// removalPolicy is the CDK-native control. skipFinalSnapshot has no
|
|
49
|
+
// direct CDK equivalent - it only downgrades a SNAPSHOT removal policy
|
|
50
|
+
// to DESTROY (no-op otherwise).
|
|
51
|
+
const removalPolicy = (_k = props.removalPolicy) !== null && _k !== void 0 ? _k : aws_cdk_lib_1.RemovalPolicy.RETAIN;
|
|
52
|
+
const effectiveRemovalPolicy = props.skipFinalSnapshot && removalPolicy === aws_cdk_lib_1.RemovalPolicy.SNAPSHOT
|
|
53
|
+
? aws_cdk_lib_1.RemovalPolicy.DESTROY
|
|
54
|
+
: removalPolicy;
|
|
55
|
+
this.cluster = new aws_rds_1.DatabaseCluster(this, 'Default', {
|
|
56
|
+
engine,
|
|
57
|
+
clusterIdentifier: props.clusterIdentifier,
|
|
58
|
+
credentials: props.credentials,
|
|
59
|
+
defaultDatabaseName: props.databaseName,
|
|
60
|
+
port: props.port,
|
|
61
|
+
vpc: props.vpc,
|
|
62
|
+
vpcSubnets: props.subnetGroup
|
|
63
|
+
? undefined
|
|
64
|
+
: ((_l = props.vpcSubnets) !== null && _l !== void 0 ? _l : { subnetType: aws_ec2_1.SubnetType.PRIVATE_ISOLATED }),
|
|
65
|
+
subnetGroup: props.subnetGroup,
|
|
66
|
+
securityGroups: props.securityGroups,
|
|
67
|
+
parameterGroup: props.parameterGroup,
|
|
68
|
+
parameters: props.parameters,
|
|
69
|
+
networkType: props.networkType,
|
|
70
|
+
writer: aws_rds_1.ClusterInstance.serverlessV2('Writer', {
|
|
71
|
+
...instanceOptions,
|
|
72
|
+
scaleWithWriter: true,
|
|
73
|
+
}),
|
|
74
|
+
readers: Array.from({ length: readerCount }, (_, i) => aws_rds_1.ClusterInstance.serverlessV2(`Reader${i + 1}`, {
|
|
75
|
+
...instanceOptions,
|
|
76
|
+
// scaleWithWriter: true puts the reader in promotion tier 1 and
|
|
77
|
+
// scales it to match the writer; false puts it in tier 2 and lets
|
|
78
|
+
// it scale independently with its own read workload. This is the
|
|
79
|
+
// real CDK mechanism behind readersInFailoverTier - there is no
|
|
80
|
+
// separate promotionTier field on serverless v2 instances.
|
|
81
|
+
scaleWithWriter: readersInFailoverTier,
|
|
82
|
+
})),
|
|
83
|
+
serverlessV2MinCapacity: minCapacity,
|
|
84
|
+
serverlessV2MaxCapacity: maxCapacity,
|
|
85
|
+
serverlessV2AutoPauseDuration: props.secondsUntilAutoPause === undefined
|
|
86
|
+
? undefined
|
|
87
|
+
: aws_cdk_lib_1.Duration.seconds(props.secondsUntilAutoPause),
|
|
88
|
+
storageType: props.ioOptimized
|
|
89
|
+
? aws_rds_1.DBClusterStorageType.AURORA_IOPT1
|
|
90
|
+
: aws_rds_1.DBClusterStorageType.AURORA,
|
|
91
|
+
storageEncrypted: (_m = props.storageEncrypted) !== null && _m !== void 0 ? _m : true,
|
|
92
|
+
storageEncryptionKey: props.storageEncryptionKey,
|
|
93
|
+
backup: {
|
|
94
|
+
retention: (_o = props.backupRetention) !== null && _o !== void 0 ? _o : aws_cdk_lib_1.Duration.days(7),
|
|
95
|
+
preferredWindow: props.preferredBackupWindow,
|
|
96
|
+
},
|
|
97
|
+
preferredMaintenanceWindow: props.preferredMaintenanceWindow,
|
|
98
|
+
autoMinorVersionUpgrade: (_p = props.autoMinorVersionUpgrade) !== null && _p !== void 0 ? _p : true,
|
|
99
|
+
deletionProtection: (_q = props.deletionProtection) !== null && _q !== void 0 ? _q : true,
|
|
100
|
+
removalPolicy: effectiveRemovalPolicy,
|
|
101
|
+
iamAuthentication: (_r = props.iamAuthentication) !== null && _r !== void 0 ? _r : true,
|
|
102
|
+
monitoringInterval: props.monitoringInterval,
|
|
103
|
+
enablePerformanceInsights: (_s = props.enablePerformanceInsights) !== null && _s !== void 0 ? _s : false,
|
|
104
|
+
performanceInsightRetention: props.performanceInsightRetention,
|
|
105
|
+
cloudwatchLogsExports: (_t = props.cloudwatchLogsExports) !== null && _t !== void 0 ? _t : ['postgresql'],
|
|
106
|
+
cloudwatchLogsRetention: (_u = props.cloudwatchLogsRetention) !== null && _u !== void 0 ? _u : aws_logs_1.RetentionDays.ONE_MONTH,
|
|
107
|
+
});
|
|
108
|
+
for (const peer of (_v = props.allowFrom) !== null && _v !== void 0 ? _v : []) {
|
|
109
|
+
this.cluster.connections.allowDefaultPortFrom(peer);
|
|
110
|
+
}
|
|
111
|
+
this.secret = this.cluster.secret;
|
|
112
|
+
// A retained cluster is useless without its credentials: keep the generated
|
|
113
|
+
// secret unless the cluster itself is destroyed. DatabaseCluster creates
|
|
114
|
+
// the generated secret as its 'Secret' child; user-supplied secrets are
|
|
115
|
+
// left alone.
|
|
116
|
+
const generatedSecret = this.cluster.node.tryFindChild('Secret');
|
|
117
|
+
if (generatedSecret instanceof aws_cdk_lib_1.Resource) {
|
|
118
|
+
generatedSecret.applyRemovalPolicy((_w = props.secretRemovalPolicy) !== null && _w !== void 0 ? _w : (effectiveRemovalPolicy === aws_cdk_lib_1.RemovalPolicy.DESTROY
|
|
119
|
+
? aws_cdk_lib_1.RemovalPolicy.DESTROY
|
|
120
|
+
: aws_cdk_lib_1.RemovalPolicy.RETAIN));
|
|
121
|
+
}
|
|
122
|
+
this.clusterIdentifier = this.cluster.clusterIdentifier;
|
|
123
|
+
this.clusterResourceIdentifier = this.cluster.clusterResourceIdentifier;
|
|
124
|
+
this.instanceIdentifiers = this.cluster.instanceIdentifiers;
|
|
125
|
+
this.clusterEndpoint = this.cluster.clusterEndpoint;
|
|
126
|
+
this.clusterReadEndpoint = this.cluster.clusterReadEndpoint;
|
|
127
|
+
this.instanceEndpoints = this.cluster.instanceEndpoints;
|
|
128
|
+
this.engine = this.cluster.engine;
|
|
129
|
+
this.clusterArn = this.cluster.clusterArn;
|
|
130
|
+
this.connections = this.cluster.connections;
|
|
131
|
+
this.dbClusterRef = this.cluster.dbClusterRef;
|
|
132
|
+
this.stack = this.cluster.stack;
|
|
133
|
+
this.env = this.cluster.env;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Validates the capacity range, reader count and auto-pause setting.
|
|
137
|
+
*
|
|
138
|
+
* @param minCapacity minimum ACUs
|
|
139
|
+
* @param maxCapacity maximum ACUs
|
|
140
|
+
* @param readers number of reader instances
|
|
141
|
+
* @param secondsUntilAutoPause idle time before pause, if any
|
|
142
|
+
*/
|
|
143
|
+
static validate(minCapacity, maxCapacity, readers, secondsUntilAutoPause) {
|
|
144
|
+
const isHalfStep = (value) => Number.isInteger(value * 2);
|
|
145
|
+
if (minCapacity < 0 || !isHalfStep(minCapacity)) {
|
|
146
|
+
throw new Error(`minCapacity must be 0 or a positive half-step value, got ${minCapacity}`);
|
|
147
|
+
}
|
|
148
|
+
if (maxCapacity <= 0.5 ||
|
|
149
|
+
maxCapacity >
|
|
150
|
+
StandardPostgresAuroraServerlessCluster.MAX_CAPACITY_LIMIT ||
|
|
151
|
+
!isHalfStep(maxCapacity)) {
|
|
152
|
+
throw new Error(`maxCapacity must be a half-step value greater than 0.5 and at most ${StandardPostgresAuroraServerlessCluster.MAX_CAPACITY_LIMIT}, got ${maxCapacity}`);
|
|
153
|
+
}
|
|
154
|
+
if (minCapacity > maxCapacity) {
|
|
155
|
+
throw new Error(`minCapacity (${minCapacity}) must not exceed maxCapacity (${maxCapacity})`);
|
|
156
|
+
}
|
|
157
|
+
if (!Number.isInteger(readers) || readers < 0) {
|
|
158
|
+
throw new Error(`readers must be a non-negative integer, got ${readers}`);
|
|
159
|
+
}
|
|
160
|
+
if (secondsUntilAutoPause !== undefined) {
|
|
161
|
+
if (minCapacity !== 0) {
|
|
162
|
+
throw new Error('secondsUntilAutoPause requires minCapacity to be 0');
|
|
163
|
+
}
|
|
164
|
+
if (!Number.isInteger(secondsUntilAutoPause) ||
|
|
165
|
+
secondsUntilAutoPause <
|
|
166
|
+
StandardPostgresAuroraServerlessCluster.MIN_AUTO_PAUSE_SECONDS ||
|
|
167
|
+
secondsUntilAutoPause >
|
|
168
|
+
StandardPostgresAuroraServerlessCluster.MAX_AUTO_PAUSE_SECONDS) {
|
|
169
|
+
throw new Error(`secondsUntilAutoPause must be an integer between ${StandardPostgresAuroraServerlessCluster.MIN_AUTO_PAUSE_SECONDS} and ${StandardPostgresAuroraServerlessCluster.MAX_AUTO_PAUSE_SECONDS}, got ${secondsUntilAutoPause}`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// From IDatabaseCluster
|
|
174
|
+
addProxy(id, options) {
|
|
175
|
+
return this.cluster.addProxy(id, options);
|
|
176
|
+
}
|
|
177
|
+
grantConnect(grantee, dbUser) {
|
|
178
|
+
return this.cluster.grantConnect(grantee, dbUser);
|
|
179
|
+
}
|
|
180
|
+
grantDataApiAccess(grantee) {
|
|
181
|
+
return this.cluster.grantDataApiAccess(grantee);
|
|
182
|
+
}
|
|
183
|
+
// From ISecretAttachmentTarget
|
|
184
|
+
asSecretAttachmentTarget() {
|
|
185
|
+
return this.cluster.asSecretAttachmentTarget();
|
|
186
|
+
}
|
|
187
|
+
// From IResource
|
|
188
|
+
applyRemovalPolicy(policy) {
|
|
189
|
+
this.cluster.applyRemovalPolicy(policy);
|
|
190
|
+
}
|
|
191
|
+
// From IDatabaseCluster (metrics)
|
|
192
|
+
metric(metricName, props) {
|
|
193
|
+
return this.cluster.metric(metricName, props);
|
|
194
|
+
}
|
|
195
|
+
metricCPUUtilization(props) {
|
|
196
|
+
return this.cluster.metricCPUUtilization(props);
|
|
197
|
+
}
|
|
198
|
+
metricDatabaseConnections(props) {
|
|
199
|
+
return this.cluster.metricDatabaseConnections(props);
|
|
200
|
+
}
|
|
201
|
+
metricDeadlocks(props) {
|
|
202
|
+
return this.cluster.metricDeadlocks(props);
|
|
203
|
+
}
|
|
204
|
+
metricEngineUptime(props) {
|
|
205
|
+
return this.cluster.metricEngineUptime(props);
|
|
206
|
+
}
|
|
207
|
+
metricFreeableMemory(props) {
|
|
208
|
+
return this.cluster.metricFreeableMemory(props);
|
|
209
|
+
}
|
|
210
|
+
metricFreeLocalStorage(props) {
|
|
211
|
+
return this.cluster.metricFreeLocalStorage(props);
|
|
212
|
+
}
|
|
213
|
+
metricNetworkReceiveThroughput(props) {
|
|
214
|
+
return this.cluster.metricNetworkReceiveThroughput(props);
|
|
215
|
+
}
|
|
216
|
+
metricNetworkThroughput(props) {
|
|
217
|
+
return this.cluster.metricNetworkThroughput(props);
|
|
218
|
+
}
|
|
219
|
+
metricNetworkTransmitThroughput(props) {
|
|
220
|
+
return this.cluster.metricNetworkTransmitThroughput(props);
|
|
221
|
+
}
|
|
222
|
+
metricSnapshotStorageUsed(props) {
|
|
223
|
+
return this.cluster.metricSnapshotStorageUsed(props);
|
|
224
|
+
}
|
|
225
|
+
metricTotalBackupStorageBilled(props) {
|
|
226
|
+
return this.cluster.metricTotalBackupStorageBilled(props);
|
|
227
|
+
}
|
|
228
|
+
metricVolumeBytesUsed(props) {
|
|
229
|
+
return this.cluster.metricVolumeBytesUsed(props);
|
|
230
|
+
}
|
|
231
|
+
metricVolumeReadIOPs(props) {
|
|
232
|
+
return this.cluster.metricVolumeReadIOPs(props);
|
|
233
|
+
}
|
|
234
|
+
metricVolumeWriteIOPs(props) {
|
|
235
|
+
return this.cluster.metricVolumeWriteIOPs(props);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
exports.StandardPostgresAuroraServerlessCluster = StandardPostgresAuroraServerlessCluster;
|
|
239
|
+
/** The engine version used when props.engineVersion is not provided. */
|
|
240
|
+
StandardPostgresAuroraServerlessCluster.DEFAULT_ENGINE_VERSION = aws_rds_1.AuroraPostgresEngineVersion.VER_17_4;
|
|
241
|
+
StandardPostgresAuroraServerlessCluster.DEFAULT_MIN_CAPACITY = 0.5;
|
|
242
|
+
StandardPostgresAuroraServerlessCluster.DEFAULT_MAX_CAPACITY = 4;
|
|
243
|
+
StandardPostgresAuroraServerlessCluster.DEFAULT_READERS = 1;
|
|
244
|
+
StandardPostgresAuroraServerlessCluster.MAX_CAPACITY_LIMIT = 256;
|
|
245
|
+
StandardPostgresAuroraServerlessCluster.MIN_AUTO_PAUSE_SECONDS = 300;
|
|
246
|
+
StandardPostgresAuroraServerlessCluster.MAX_AUTO_PAUSE_SECONDS = 86400;
|
|
247
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtcG9zdGdyZXMtYXVyb3JhLXNlcnZlcmxlc3MtY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MtcmRzL2xpYi9zdGFuZGFyZC1wb3N0Z3Jlcy1hdXJvcmEtc2VydmVybGVzcy1jbHVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQU1xQjtBQUVyQixpREFBaUU7QUFFakUsbURBQW1EO0FBQ25ELGlEQWE2QjtBQU03QiwyQ0FBOEQ7QUFDOUQsNkNBQStDO0FBc0cvQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFhLHVDQUNYLFNBQVEsMkJBQWlCO0lBa0N6QixZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFtRDs7UUFFbkQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsc0JBQVksQ0FBQyxLQUFLLENBQzlCO2dCQUNFLEdBQUcsQ0FBQyxNQUFBLEtBQUssQ0FBQyxZQUFZLG1DQUFJLEVBQUUsQ0FBQztnQkFDN0IsZUFBZSxFQUNiLE1BQUEsS0FBSyxDQUFDLGVBQWUsbUNBQUksTUFBQSxLQUFLLENBQUMsWUFBWSwwQ0FBRSxlQUFlO2FBQy9ELEVBQ0QsMEJBQWUsQ0FDaEI7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxjQUFjLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzdDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkdBQTZHLENBQzlHLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsK0JBQXFCLENBQUMsY0FBYyxDQUFDO1lBQ2xELE9BQU8sRUFDTCxNQUFBLEtBQUssQ0FBQyxhQUFhLG1DQUNuQix1Q0FBdUMsQ0FBQyxzQkFBc0I7U0FDakUsQ0FBQyxDQUFDO1FBRUgsbUVBQW1FO1FBQ25FLHdFQUF3RTtRQUN4RSxVQUFVO1FBQ1YsTUFBTSxlQUFlLEdBQUc7WUFDdEIsY0FBYyxFQUFF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QUM7SUFDckQsQ0FBQztJQUVELCtCQUErQixDQUFDLEtBQXFCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQseUJBQXlCLENBQUMsS0FBcUI7UUFDN0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxLQUFxQjtRQUNsRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsOEJBQThCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELHFCQUFxQixDQUFDLEtBQXFCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsS0FBcUI7UUFDeEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFxQjtRQUN6QyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7QUFqVkgsMEZBa1ZDO0FBOVVDLHdFQUF3RTtBQUN4RCw4REFBc0IsR0FBRyxxQ0FBMkIsQ0FBQyxRQUFRLENBQUM7QUFDOUQsNERBQW9CLEdBQUcsR0FBRyxDQUFDO0FBQzNCLDREQUFvQixHQUFHLENBQUMsQ0FBQztBQUN6Qix1REFBZSxHQUFHLENBQUMsQ0FBQztBQUNwQiwwREFBa0IsR0FBRyxHQUFHLENBQUM7QUFDekIsOERBQXNCLEdBQUcsR0FBRyxDQUFDO0FBQzdCLDhEQUFzQixHQUFHLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIER1cmF0aW9uLFxuICBSZW1vdmFsUG9saWN5LFxuICBSZXNvdXJjZSxcbiAgdHlwZSBSZXNvdXJjZUVudmlyb25tZW50LFxuICB0eXBlIFN0YWNrLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7TWV0cmljLCBNZXRyaWNPcHRpb25zfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWR3YXRjaCc7XG5pbXBvcnQge3R5cGUgQ29ubmVjdGlvbnMsIFN1Ym5ldFR5cGV9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHR5cGUge0dyYW50LCBJR3JhbnRhYmxlfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7UmV0ZW50aW9uRGF5c30gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHtcbiAgQXVyb3JhUG9zdGdyZXNFbmdpbmVWZXJzaW9uLFxuICBDbHVzdGVySW5zdGFuY2UsXG4gIERhdGFiYXNlQ2x1c3RlcixcbiAgRGF0YWJhc2VDbHVzdGVyRW5naW5lLFxuICB0eXBlIERhdGFiYXNlUHJveHksXG4gIHR5cGUgRGF0YWJhc2VQcm94eU9wdGlvbnMsXG4gIHR5cGUgREJDbHVzdGVyUmVmZXJlbmNlLFxuICBEQkNsdXN0ZXJTdG9yYWdlVHlwZSxcbiAgdHlwZSBFbmRwb2ludCxcbiAgdHlwZSBJQ2x1c3RlckVuZ2luZSxcbiAgdHlwZSBJRGF0YWJhc2VDbHVzdGVyLFxuICB0eXBlIElQYXJhbWV0ZXJHcm91cCxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXJkcyc7XG5pbXBvcnQgdHlwZSB7XG4gIElTZWNyZXQsXG4gIFNlY3JldEF0dGFjaG1lbnRUYXJnZXRQcm9wcyxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyJztcbmltcG9ydCB0eXBlIHtDb25zdHJ1Y3R9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtFeHRlbmRlZENvbnN0cnVjdCwgU3RhbmRhcmRUYWdzfSBmcm9tICcuLi8uLi9hd3MtY2RrJztcbmltcG9ydCB7TGliU3RhbmRhcmRUYWdzfSBmcm9tICcuLi8uLi90cnVlbWFyayc7XG5pbXBvcnQgdHlwZSB7U3RhbmRhcmRQb3N0Z3Jlc1Byb3BzfSBmcm9tICcuL3Bvc3RncmVzLXByb3BzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFTZXJ2ZXJsZXNzQ2x1c3Rlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFyZFBvc3RncmVzQXVyb3JhU2VydmVybGVzc0NsdXN0ZXJQcm9wc1xuICBleHRlbmRzIFN0YW5kYXJkUG9zdGdyZXNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQXVyb3JhIFBvc3RncmVTUUwgZW5naW5lIHZlcnNpb24gdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgbGF0ZXN0IHZlcnNpb24gc3VwcG9ydGVkIGJ5IHRoaXMgbGlicmFyeVxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lVmVyc2lvbj86IEF1cm9yYVBvc3RncmVzRW5naW5lVmVyc2lvbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgZ2l2ZW4gdG8gdGhlIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IENsb3VkRm9ybWF0aW9uLWdlbmVyYXRlZCBuYW1lXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVySWRlbnRpZmllcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIEF1cm9yYSBjYXBhY2l0eSB1bml0cyB0aGUgY2x1c3RlciBtYXkgc2NhbGUgZG93biB0by5cbiAgICogSGFsZi1zdGVwIGluY3JlbWVudHM7IDAgZW5hYmxlcyBhdXRvbWF0aWMgcGF1c2Ugb24gZW5naW5lIHZlcnNpb25zIHRoYXRcbiAgICogc3VwcG9ydCBpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgMC41XG4gICAqL1xuICByZWFkb25seSBtaW5DYXBhY2l0eT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIEF1cm9yYSBjYXBhY2l0eSB1bml0cyB0aGUgY2x1c3RlciBtYXkgc2NhbGUgdXAgdG8uXG4gICAqIEhhbGYtc3RlcCBpbmNyZW1lbnRzLCBncmVhdGVyIHRoYW4gMC41IGFuZCBhdCBtb3N0IDI1Ni5cbiAgICpcbiAgICogQGRlZmF1bHQgNFxuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q2FwYWNpdHk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGluIHNlY29uZHMgdGhlIGNsdXN0ZXIgbWF5IHJlbWFpbiBpZGxlIGJlZm9yZSBpdCBpcyBwYXVzZWQsXG4gICAqIGJldHdlZW4gMzAwICg1IG1pbnV0ZXMpIGFuZCA4NjQwMCAoMjQgaG91cnMpLiBPbmx5IHN1cHBvcnRlZCB3aGVuXG4gICAqIG1pbkNhcGFjaXR5IGlzIDAuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGF1dG9tYXRpYyBwYXVzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kc1VudGlsQXV0b1BhdXNlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHJlYWRlciBpbnN0YW5jZXMgdG8gY3JlYXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSByZWFkZXJzPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHJlYWRlciBpbnN0YW5jZXMgYXJlIHByb21vdGVkIHRvIHdyaXRlciBpbiB0aGUgc2FtZSB0aWVyIGFzIHRoZVxuICAgKiB3cml0ZXIgaW5zdGFuY2UgZHVyaW5nIGEgZmFpbG92ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRlcnNJbkZhaWxvdmVyVGllcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJhbWV0ZXIgZ3JvdXAgYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnN0YW5jZXMgaW4gdGhlIGNsdXN0ZXIuIERpc3RpbmN0XG4gICAqIGZyb20gdGhlIGNsdXN0ZXIgbGV2ZWwgcGFyYW1ldGVyR3JvdXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBkZWZhdWx0IHBhcmFtZXRlciBncm91cCBmb3IgdGhlIGVuZ2luZSB2ZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVBhcmFtZXRlckdyb3VwPzogSVBhcmFtZXRlckdyb3VwO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzdG9yYWdlIG9mIHRoZSBjbHVzdGVyIHVzZXMgQXVyb3JhIEkvTy1PcHRpbWl6ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpb09wdGltaXplZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGluc3RhbmNlcyBpbiB0aGUgY2x1c3RlciBhcmUgcHVibGljbHkgYWNjZXNzaWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHB1YmxpY2x5QWNjZXNzaWJsZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgSUFNIGRhdGFiYXNlIGF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWQuIFJlcXVpcmVkIGZvclxuICAgKiBgZ3JhbnRDb25uZWN0YCB0byBoYXZlIGFueSBlZmZlY3QgYW5kIGZvciBSRFMgUHJveHkgSUFNIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBpYW1BdXRoZW50aWNhdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByZW1vdmFsIHBvbGljeSBhcHBsaWVkIHRvIHRoZSBnZW5lcmF0ZWQgbWFzdGVyIGNyZWRlbnRpYWxzIHNlY3JldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmb2xsb3dzIHRoZSBjbHVzdGVyOiBSRVRBSU4gdW5sZXNzIHRoZSBjbHVzdGVyJ3MgcmVtb3ZhbFxuICAgKiBwb2xpY3kgaXMgREVTVFJPWVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjcmV0UmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG59XG5cbi8qKlxuICogQSBzdGFuZGFyZCBBdXJvcmEgU2VydmVybGVzcyB2MiBQb3N0Z3JlU1FMIGRhdGFiYXNlIGNsdXN0ZXIuXG4gKlxuICogVGhlIGNvbnN0cnVjdCBpbXBsZW1lbnRzIElEYXRhYmFzZUNsdXN0ZXIgYnkgZGVsZWdhdGluZyB0byB0aGUgdW5kZXJseWluZ1xuICogRGF0YWJhc2VDbHVzdGVyIGV4cG9zZWQgYXMgYGNsdXN0ZXJgLiBDREsgQVBJcyB0aGF0IGluc3BlY3QgdGhlIGNvbnN0cnVjdFxuICogdHJlZSByYXRoZXIgdGhhbiB0aGUgaW50ZXJmYWNlLCBzdWNoIGFzIGBQcm94eVRhcmdldC5mcm9tQ2x1c3RlcmAsIGRvIG5vdFxuICogZmluZCB0aGUgY2x1c3RlcidzIGluc3RhbmNlcyB0aHJvdWdoIHRoaXMgd3JhcHBlciBhbmQgd291bGQgY3JlYXRlIGEgcHJveHlcbiAqIHRhcmdldCBncm91cCB3aXRob3V0IHdhaXRpbmcgZm9yIHRoZW07IGhhbmQgdGhvc2UgQVBJcyBgY2x1c3RlcmAgaW5zdGVhZCxcbiAqIG9yIHVzZSBgYWRkUHJveHlgLCB3aGljaCBkb2VzIHNvIGludGVybmFsbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGFuZGFyZFBvc3RncmVzQXVyb3JhU2VydmVybGVzc0NsdXN0ZXJcbiAgZXh0ZW5kcyBFeHRlbmRlZENvbnN0cnVjdFxuICBpbXBsZW1lbnRzIElEYXRhYmFzZUNsdXN0ZXJcbntcbiAgLyoqIFRoZSBlbmdpbmUgdmVyc2lvbiB1c2VkIHdoZW4gcHJvcHMuZW5naW5lVmVyc2lvbiBpcyBub3QgcHJvdmlkZWQuICovXG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0VOR0lORV9WRVJTSU9OID0gQXVyb3JhUG9zdGdyZXNFbmdpbmVWZXJzaW9uLlZFUl8xN180O1xuICBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9NSU5fQ0FQQUNJVFkgPSAwLjU7XG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX01BWF9DQVBBQ0lUWSA9IDQ7XG4gIHN0YXRpYyByZWFkb25seSBERUZBVUxUX1JFQURFUlMgPSAxO1xuICBzdGF0aWMgcmVhZG9ubHkgTUFYX0NBUEFDSVRZX0xJTUlUID0gMjU2O1xuICBzdGF0aWMgcmVhZG9ubHkgTUlOX0FVVE9fUEFVU0VfU0VDT05EUyA9IDMwMDtcbiAgc3RhdGljIHJlYWRvbmx5IE1BWF9BVVRPX1BBVVNFX1NFQ09ORFMgPSA4NjQwMDtcblxuICAvKiogVGhlIHVuZGVybHlpbmcgQXVyb3JhIFNlcnZlcmxlc3MgdjIgY2x1c3Rlci4gKi9cbiAgcmVhZG9ubHkgY2x1c3RlcjogRGF0YWJhc2VDbHVzdGVyO1xuXG4gIC8qKiBUaGUgZ2VuZXJhdGVkIChvciBwcm92aWRlZCkgbWFzdGVyIGNyZWRlbnRpYWxzIHNlY3JldCwgaWYgYW55LiAqL1xuICByZWFkb25seSBzZWNyZXQ/OiBJU2VjcmV0O1xuXG4gIC8vIEZyb20gSURhdGFiYXNlQ2x1c3RlclxuICByZWFkb25seSBjbHVzdGVySWRlbnRpZmllcjogc3RyaW5nO1xuICByZWFkb25seSBjbHVzdGVyUmVzb3VyY2VJZGVudGlmaWVyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGluc3RhbmNlSWRlbnRpZmllcnM6IHN0cmluZ1tdO1xuICByZWFkb25seSBjbHVzdGVyRW5kcG9pbnQ6IEVuZHBvaW50O1xuICByZWFkb25seSBjbHVzdGVyUmVhZEVuZHBvaW50OiBFbmRwb2ludDtcbiAgcmVhZG9ubHkgaW5zdGFuY2VFbmRwb2ludHM6IEVuZHBvaW50W107XG4gIHJlYWRvbmx5IGVuZ2luZT86IElDbHVzdGVyRW5naW5lO1xuICByZWFkb25seSBjbHVzdGVyQXJuOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcbiAgcmVhZG9ubHkgZGJDbHVzdGVyUmVmOiBEQkNsdXN0ZXJSZWZlcmVuY2U7XG5cbiAgLy8gRnJvbSBJUmVzb3VyY2VcbiAgcmVhZG9ubHkgc3RhY2s6IFN0YWNrO1xuICByZWFkb25seSBlbnY6IFJlc291cmNlRW52aXJvbm1lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBTdGFuZGFyZFBvc3RncmVzQXVyb3JhU2VydmVybGVzc0NsdXN0ZXJQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBzdGFuZGFyZFRhZ3M6IFN0YW5kYXJkVGFncy5tZXJnZShcbiAgICAgICAge1xuICAgICAgICAgIC4uLihwcm9wcy5zdGFuZGFyZFRhZ3MgPz8ge30pLFxuICAgICAgICAgIHN1cHByZXNzVGFnZ2luZzpcbiAgICAgICAgICAgIHByb3BzLnN1cHByZXNzVGFnZ2luZyA/PyBwcm9wcy5zdGFuZGFyZFRhZ3M/LnN1cHByZXNzVGFnZ2luZyxcbiAgICAgICAgfSxcbiAgICAgICAgTGliU3RhbmRhcmRUYWdzLFxuICAgICAgKSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5wYXJhbWV0ZXJHcm91cCAmJiBwcm9wcy5wYXJhbWV0ZXJzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdwYXJhbWV0ZXJHcm91cCBhbmQgcGFyYW1ldGVycyBjYW5ub3QgYmUgY29tYmluZWQ7IHBhc3MgZWl0aGVyIGFuIGV4aXN0aW5nIGdyb3VwIG9yIHBhcmFtZXRlcnMgZm9yIGEgbmV3IG9uZScsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGVuZ2luZSA9IERhdGFiYXNlQ2x1c3RlckVuZ2luZS5hdXJvcmFQb3N0Z3Jlcyh7XG4gICAgICB2ZXJzaW9uOlxuICAgICAgICBwcm9wcy5lbmdpbmVWZXJzaW9uID8/XG4gICAgICAgIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFTZXJ2ZXJsZXNzQ2x1c3Rlci5ERUZBVUxUX0VOR0lORV9WRVJTSU9OLFxuICAgIH0pO1xuXG4gICAgLy8gY2FDZXJ0aWZpY2F0ZSwgaW5zdGFuY2VQYXJhbWV0ZXJHcm91cCBhbmQgcHVibGljbHlBY2Nlc3NpYmxlIGFyZVxuICAgIC8vIHBlci1pbnN0YW5jZSBzZXR0aW5ncyBpbiB0aGUgQ0RLIEFQSSwgYXBwbGllZCB0byB0aGUgd3JpdGVyIGFuZCBldmVyeVxuICAgIC8vIHJlYWRlci5cbiAgICBjb25zdCBpbnN0YW5jZU9wdGlvbnMgPSB7XG4gICAgICBwYXJhbWV0ZXJHcm91cDogcHJvcHMuaW5zdGFuY2VQYXJhbWV0ZXJHcm91cCxcbiAgICAgIGNhQ2VydGlmaWNhdGU6IHByb3BzLmNhQ2VydGlmaWNhdGUsXG4gICAgICBwdWJsaWNseUFjY2Vzc2libGU6IHByb3BzLnB1YmxpY2x5QWNjZXNzaWJsZSA/PyBmYWxzZSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVhZGVyQ291bnQgPVxuICAgICAgcHJvcHMucmVhZGVycyA/PyBTdGFuZGFyZFBvc3RncmVzQXVyb3JhU2VydmVybGVzc0NsdXN0ZXIuREVGQVVMVF9SRUFERVJTO1xuICAgIGNvbnN0IHJlYWRlcnNJbkZhaWxvdmVyVGllciA9IHByb3BzLnJlYWRlcnNJbkZhaWxvdmVyVGllciA/PyB0cnVlO1xuICAgIGNvbnN0IG1pbkNhcGFjaXR5ID1cbiAgICAgIHByb3BzLm1pbkNhcGFjaXR5ID8/XG4gICAgICBTdGFuZGFyZFBvc3RncmVzQXVyb3JhU2VydmVybGVzc0NsdXN0ZXIuREVGQVVMVF9NSU5fQ0FQQUNJVFk7XG4gICAgY29uc3QgbWF4Q2FwYWNpdHkgPVxuICAgICAgcHJvcHMubWF4Q2FwYWNpdHkgPz9cbiAgICAgIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFTZXJ2ZXJsZXNzQ2x1c3Rlci5ERUZBVUxUX01BWF9DQVBBQ0lUWTtcbiAgICBTdGFuZGFyZFBvc3RncmVzQXVyb3JhU2VydmVybGVzc0NsdXN0ZXIudmFsaWRhdGUoXG4gICAgICBtaW5DYXBhY2l0eSxcbiAgICAgIG1heENhcGFjaXR5LFxuICAgICAgcmVhZGVyQ291bnQsXG4gICAgICBwcm9wcy5zZWNvbmRzVW50aWxBdXRvUGF1c2UsXG4gICAgKTtcblxuICAgIC8vIHJlbW92YWxQb2xpY3kgaXMgdGhlIENESy1uYXRpdmUgY29udHJvbC4gc2tpcEZpbmFsU25hcHNob3QgaGFzIG5vXG4gICAgLy8gZGlyZWN0IENESyBlcXVpdmFsZW50IC0gaXQgb25seSBkb3duZ3JhZGVzIGEgU05BUFNIT1QgcmVtb3ZhbCBwb2xpY3lcbiAgICAvLyB0byBERVNUUk9ZIChuby1vcCBvdGhlcndpc2UpLlxuICAgIGNvbnN0IHJlbW92YWxQb2xpY3kgPSBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IFJlbW92YWxQb2xpY3kuUkVUQUlOO1xuICAgIGNvbnN0IGVmZmVjdGl2ZVJlbW92YWxQb2xpY3kgPVxuICAgICAgcHJvcHMuc2tpcEZpbmFsU25hcHNob3QgJiYgcmVtb3ZhbFBvbGljeSA9PT0gUmVtb3ZhbFBvbGljeS5TTkFQU0hPVFxuICAgICAgICA/IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgICAgICA6IHJlbW92YWxQb2xpY3k7XG5cbiAgICB0aGlzLmNsdXN0ZXIgPSBuZXcgRGF0YWJhc2VDbHVzdGVyKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgZW5naW5lLFxuICAgICAgY2x1c3RlcklkZW50aWZpZXI6IHByb3BzLmNsdXN0ZXJJZGVudGlmaWVyLFxuICAgICAgY3JlZGVudGlhbHM6IHByb3BzLmNyZWRlbnRpYWxzLFxuICAgICAgZGVmYXVsdERhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgcG9ydDogcHJvcHMucG9ydCxcblxuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiBwcm9wcy5zdWJuZXRHcm91cFxuICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICA6IChwcm9wcy52cGNTdWJuZXRzID8/IHtzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUR9KSxcbiAgICAgIHN1Ym5ldEdyb3VwOiBwcm9wcy5zdWJuZXRHcm91cCxcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiBwcm9wcy5zZWN1cml0eUdyb3VwcyxcblxuICAgICAgcGFyYW1ldGVyR3JvdXA6IHByb3BzLnBhcmFtZXRlckdyb3VwLFxuICAgICAgcGFyYW1ldGVyczogcHJvcHMucGFyYW1ldGVycyxcbiAgICAgIG5ldHdvcmtUeXBlOiBwcm9wcy5uZXR3b3JrVHlwZSxcblxuICAgICAgd3JpdGVyOiBDbHVzdGVySW5zdGFuY2Uuc2VydmVybGVzc1YyKCdXcml0ZXInLCB7XG4gICAgICAgIC4uLmluc3RhbmNlT3B0aW9ucyxcbiAgICAgICAgc2NhbGVXaXRoV3JpdGVyOiB0cnVlLFxuICAgICAgfSksXG4gICAgICByZWFkZXJzOiBBcnJheS5mcm9tKHtsZW5ndGg6IHJlYWRlckNvdW50fSwgKF8sIGkpID0+XG4gICAgICAgIENsdXN0ZXJJbnN0YW5jZS5zZXJ2ZXJsZXNzVjIoYFJlYWRlciR7aSArIDF9YCwge1xuICAgICAgICAgIC4uLmluc3RhbmNlT3B0aW9ucyxcbiAgICAgICAgICAvLyBzY2FsZVdpdGhXcml0ZXI6IHRydWUgcHV0cyB0aGUgcmVhZGVyIGluIHByb21vdGlvbiB0aWVyIDEgYW5kXG4gICAgICAgICAgLy8gc2NhbGVzIGl0IHRvIG1hdGNoIHRoZSB3cml0ZXI7IGZhbHNlIHB1dHMgaXQgaW4gdGllciAyIGFuZCBsZXRzXG4gICAgICAgICAgLy8gaXQgc2NhbGUgaW5kZXBlbmRlbnRseSB3aXRoIGl0cyBvd24gcmVhZCB3b3JrbG9hZC4gVGhpcyBpcyB0aGVcbiAgICAgICAgICAvLyByZWFsIENESyBtZWNoYW5pc20gYmVoaW5kIHJlYWRlcnNJbkZhaWxvdmVyVGllciAtIHRoZXJlIGlzIG5vXG4gICAgICAgICAgLy8gc2VwYXJhdGUgcHJvbW90aW9uVGllciBmaWVsZCBvbiBzZXJ2ZXJsZXNzIHYyIGluc3RhbmNlcy5cbiAgICAgICAgICBzY2FsZVdpdGhXcml0ZXI6IHJlYWRlcnNJbkZhaWxvdmVyVGllcixcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICAgc2VydmVybGVzc1YyTWluQ2FwYWNpdHk6IG1pbkNhcGFjaXR5LFxuICAgICAgc2VydmVybGVzc1YyTWF4Q2FwYWNpdHk6IG1heENhcGFjaXR5LFxuICAgICAgc2VydmVybGVzc1YyQXV0b1BhdXNlRHVyYXRpb246XG4gICAgICAgIHByb3BzLnNlY29uZHNVbnRpbEF1dG9QYXVzZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgICA6IER1cmF0aW9uLnNlY29uZHMocHJvcHMuc2Vjb25kc1VudGlsQXV0b1BhdXNlKSxcbiAgICAgIHN0b3JhZ2VUeXBlOiBwcm9wcy5pb09wdGltaXplZFxuICAgICAgICA/IERCQ2x1c3RlclN0b3JhZ2VUeXBlLkFVUk9SQV9JT1BUMVxuICAgICAgICA6IERCQ2x1c3RlclN0b3JhZ2VUeXBlLkFVUk9SQSxcblxuICAgICAgc3RvcmFnZUVuY3J5cHRlZDogcHJvcHMuc3RvcmFnZUVuY3J5cHRlZCA/PyB0cnVlLFxuICAgICAgc3RvcmFnZUVuY3J5cHRpb25LZXk6IHByb3BzLnN0b3JhZ2VFbmNyeXB0aW9uS2V5LFxuXG4gICAgICBiYWNrdXA6IHtcbiAgICAgICAgcmV0ZW50aW9uOiBwcm9wcy5iYWNrdXBSZXRlbnRpb24gPz8gRHVyYXRpb24uZGF5cyg3KSxcbiAgICAgICAgcHJlZmVycmVkV2luZG93OiBwcm9wcy5wcmVmZXJyZWRCYWNrdXBXaW5kb3csXG4gICAgICB9LFxuICAgICAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6IHByb3BzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93LFxuICAgICAgYXV0b01pbm9yVmVyc2lvblVwZ3JhZGU6IHByb3BzLmF1dG9NaW5vclZlcnNpb25VcGdyYWRlID8/IHRydWUsXG5cbiAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogcHJvcHMuZGVsZXRpb25Qcm90ZWN0aW9uID8/IHRydWUsXG4gICAgICByZW1vdmFsUG9saWN5OiBlZmZlY3RpdmVSZW1vdmFsUG9saWN5LFxuICAgICAgaWFtQXV0aGVudGljYXRpb246IHByb3BzLmlhbUF1dGhlbnRpY2F0aW9uID8/IHRydWUsXG5cbiAgICAgIG1vbml0b3JpbmdJbnRlcnZhbDogcHJvcHMubW9uaXRvcmluZ0ludGVydmFsLFxuICAgICAgZW5hYmxlUGVyZm9ybWFuY2VJbnNpZ2h0czogcHJvcHMuZW5hYmxlUGVyZm9ybWFuY2VJbnNpZ2h0cyA/PyBmYWxzZSxcbiAgICAgIHBlcmZvcm1hbmNlSW5zaWdodFJldGVudGlvbjogcHJvcHMucGVyZm9ybWFuY2VJbnNpZ2h0UmV0ZW50aW9uLFxuXG4gICAgICBjbG91ZHdhdGNoTG9nc0V4cG9ydHM6IHByb3BzLmNsb3Vkd2F0Y2hMb2dzRXhwb3J0cyA/PyBbJ3Bvc3RncmVzcWwnXSxcbiAgICAgIGNsb3Vkd2F0Y2hMb2dzUmV0ZW50aW9uOlxuICAgICAgICBwcm9wcy5jbG91ZHdhdGNoTG9nc1JldGVudGlvbiA/PyBSZXRlbnRpb25EYXlzLk9ORV9NT05USCxcbiAgICB9KTtcblxuICAgIGZvciAoY29uc3QgcGVlciBvZiBwcm9wcy5hbGxvd0Zyb20gPz8gW10pIHtcbiAgICAgIHRoaXMuY2x1c3Rlci5jb25uZWN0aW9ucy5hbGxvd0RlZmF1bHRQb3J0RnJvbShwZWVyKTtcbiAgICB9XG5cbiAgICB0aGlzLnNlY3JldCA9IHRoaXMuY2x1c3Rlci5zZWNyZXQ7XG4gICAgLy8gQSByZXRhaW5lZCBjbHVzdGVyIGlzIHVzZWxlc3Mgd2l0aG91dCBpdHMgY3JlZGVudGlhbHM6IGtlZXAgdGhlIGdlbmVyYXRlZFxuICAgIC8vIHNlY3JldCB1bmxlc3MgdGhlIGNsdXN0ZXIgaXRzZWxmIGlzIGRlc3Ryb3llZC4gRGF0YWJhc2VDbHVzdGVyIGNyZWF0ZXNcbiAgICAvLyB0aGUgZ2VuZXJhdGVkIHNlY3JldCBhcyBpdHMgJ1NlY3JldCcgY2hpbGQ7IHVzZXItc3VwcGxpZWQgc2VjcmV0cyBhcmVcbiAgICAvLyBsZWZ0IGFsb25lLlxuICAgIGNvbnN0IGdlbmVyYXRlZFNlY3JldCA9IHRoaXMuY2x1c3Rlci5ub2RlLnRyeUZpbmRDaGlsZCgnU2VjcmV0Jyk7XG4gICAgaWYgKGdlbmVyYXRlZFNlY3JldCBpbnN0YW5jZW9mIFJlc291cmNlKSB7XG4gICAgICBnZW5lcmF0ZWRTZWNyZXQuYXBwbHlSZW1vdmFsUG9saWN5KFxuICAgICAgICBwcm9wcy5zZWNyZXRSZW1vdmFsUG9saWN5ID8/XG4gICAgICAgICAgKGVmZmVjdGl2ZVJlbW92YWxQb2xpY3kgPT09IFJlbW92YWxQb2xpY3kuREVTVFJPWVxuICAgICAgICAgICAgPyBSZW1vdmFsUG9saWN5LkRFU1RST1lcbiAgICAgICAgICAgIDogUmVtb3ZhbFBvbGljeS5SRVRBSU4pLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5jbHVzdGVySWRlbnRpZmllciA9IHRoaXMuY2x1c3Rlci5jbHVzdGVySWRlbnRpZmllcjtcbiAgICB0aGlzLmNsdXN0ZXJSZXNvdXJjZUlkZW50aWZpZXIgPSB0aGlzLmNsdXN0ZXIuY2x1c3RlclJlc291cmNlSWRlbnRpZmllcjtcbiAgICB0aGlzLmluc3RhbmNlSWRlbnRpZmllcnMgPSB0aGlzLmNsdXN0ZXIuaW5zdGFuY2VJZGVudGlmaWVycztcbiAgICB0aGlzLmNsdXN0ZXJFbmRwb2ludCA9IHRoaXMuY2x1c3Rlci5jbHVzdGVyRW5kcG9pbnQ7XG4gICAgdGhpcy5jbHVzdGVyUmVhZEVuZHBvaW50ID0gdGhpcy5jbHVzdGVyLmNsdXN0ZXJSZWFkRW5kcG9pbnQ7XG4gICAgdGhpcy5pbnN0YW5jZUVuZHBvaW50cyA9IHRoaXMuY2x1c3Rlci5pbnN0YW5jZUVuZHBvaW50cztcbiAgICB0aGlzLmVuZ2luZSA9IHRoaXMuY2x1c3Rlci5lbmdpbmU7XG4gICAgdGhpcy5jbHVzdGVyQXJuID0gdGhpcy5jbHVzdGVyLmNsdXN0ZXJBcm47XG4gICAgdGhpcy5jb25uZWN0aW9ucyA9IHRoaXMuY2x1c3Rlci5jb25uZWN0aW9ucztcbiAgICB0aGlzLmRiQ2x1c3RlclJlZiA9IHRoaXMuY2x1c3Rlci5kYkNsdXN0ZXJSZWY7XG4gICAgdGhpcy5zdGFjayA9IHRoaXMuY2x1c3Rlci5zdGFjaztcbiAgICB0aGlzLmVudiA9IHRoaXMuY2x1c3Rlci5lbnY7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIHRoZSBjYXBhY2l0eSByYW5nZSwgcmVhZGVyIGNvdW50IGFuZCBhdXRvLXBhdXNlIHNldHRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBtaW5DYXBhY2l0eSBtaW5pbXVtIEFDVXNcbiAgICogQHBhcmFtIG1heENhcGFjaXR5IG1heGltdW0gQUNVc1xuICAgKiBAcGFyYW0gcmVhZGVycyBudW1iZXIgb2YgcmVhZGVyIGluc3RhbmNlc1xuICAgKiBAcGFyYW0gc2Vjb25kc1VudGlsQXV0b1BhdXNlIGlkbGUgdGltZSBiZWZvcmUgcGF1c2UsIGlmIGFueVxuICAgKi9cbiAgc3RhdGljIHZhbGlkYXRlKFxuICAgIG1pbkNhcGFjaXR5OiBudW1iZXIsXG4gICAgbWF4Q2FwYWNpdHk6IG51bWJlcixcbiAgICByZWFkZXJzOiBudW1iZXIsXG4gICAgc2Vjb25kc1VudGlsQXV0b1BhdXNlPzogbnVtYmVyLFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBpc0hhbGZTdGVwID0gKHZhbHVlOiBudW1iZXIpID0+IE51bWJlci5pc0ludGVnZXIodmFsdWUgKiAyKTtcbiAgICBpZiAobWluQ2FwYWNpdHkgPCAwIHx8ICFpc0hhbGZTdGVwKG1pbkNhcGFjaXR5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWluQ2FwYWNpdHkgbXVzdCBiZSAwIG9yIGEgcG9zaXRpdmUgaGFsZi1zdGVwIHZhbHVlLCBnb3QgJHttaW5DYXBhY2l0eX1gLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgbWF4Q2FwYWNpdHkgPD0gMC41IHx8XG4gICAgICBtYXhDYXBhY2l0eSA+XG4gICAgICAgIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFTZXJ2ZXJsZXNzQ2x1c3Rlci5NQVhfQ0FQQUNJVFlfTElNSVQgfHxcbiAgICAgICFpc0hhbGZTdGVwKG1heENhcGFjaXR5KVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWF4Q2FwYWNpdHkgbXVzdCBiZSBhIGhhbGYtc3RlcCB2YWx1ZSBncmVhdGVyIHRoYW4gMC41IGFuZCBhdCBtb3N0ICR7U3RhbmRhcmRQb3N0Z3Jlc0F1cm9yYVNlcnZlcmxlc3NDbHVzdGVyLk1BWF9DQVBBQ0lUWV9MSU1JVH0sIGdvdCAke21heENhcGFjaXR5fWAsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAobWluQ2FwYWNpdHkgPiBtYXhDYXBhY2l0eSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWluQ2FwYWNpdHkgKCR7bWluQ2FwYWNpdHl9KSBtdXN0IG5vdCBleGNlZWQgbWF4Q2FwYWNpdHkgKCR7bWF4Q2FwYWNpdHl9KWAsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIocmVhZGVycykgfHwgcmVhZGVycyA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcmVhZGVycyBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIsIGdvdCAke3JlYWRlcnN9YCk7XG4gICAgfVxuICAgIGlmIChzZWNvbmRzVW50aWxBdXRvUGF1c2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKG1pbkNhcGFjaXR5ICE9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignc2Vjb25kc1VudGlsQXV0b1BhdXNlIHJlcXVpcmVzIG1pbkNhcGFjaXR5IHRvIGJlIDAnKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgIU51bWJlci5pc0ludGVnZXIoc2Vjb25kc1VudGlsQXV0b1BhdXNlKSB8fFxuICAgICAgICBzZWNvbmRzVW50aWxBdXRvUGF1c2UgPFxuICAgICAgICAgIFN0YW5kYXJkUG9zdGdyZXNBdXJvcmFTZXJ2ZXJsZXNzQ2x1c3Rlci5NSU5fQVVUT19QQVVTRV9TRUNPTkRTIHx8XG4gICAgICAgIHNlY29uZHNVbnRpbEF1dG9QYXVzZSA+XG4gICAgICAgICAgU3RhbmRhcmRQb3N0Z3Jlc0F1cm9yYVNlcnZlcmxlc3NDbHVzdGVyLk1BWF9BVVRPX1BBVVNFX1NFQ09ORFNcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYHNlY29uZHNVbnRpbEF1dG9QYXVzZSBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAke1N0YW5kYXJkUG9zdGdyZXNBdXJvcmFTZXJ2ZXJsZXNzQ2x1c3Rlci5NSU5fQVVUT19QQVVTRV9TRUNPTkRTfSBhbmQgJHtTdGFuZGFyZFBvc3RncmVzQXVyb3JhU2VydmVybGVzc0NsdXN0ZXIuTUFYX0FVVE9fUEFVU0VfU0VDT05EU30sIGdvdCAke3NlY29uZHNVbnRpbEF1dG9QYXVzZX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEZyb20gSURhdGFiYXNlQ2x1c3RlclxuXG4gIGFkZFByb3h5KGlkOiBzdHJpbmcsIG9wdGlvbnM6IERhdGFiYXNlUHJveHlPcHRpb25zKTogRGF0YWJhc2VQcm94eSB7XG4gICAgcmV0dXJuIHRoaXMuY2x1c3Rlci5hZGRQcm94eShpZCwgb3B0aW9ucyk7XG4gIH1cblxuICBncmFudENvbm5lY3QoZ3JhbnRlZTogSUdyYW50YWJsZSwgZGJVc2VyOiBzdHJpbmcpOiBHcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuY2x1c3Rlci5ncmFudENvbm5lY3QoZ3JhbnRlZSwgZGJVc2VyKTtcbiAgfVxuXG4gIGdyYW50RGF0YUFwaUFjY2VzcyhncmFudGVlOiBJR3JhbnRhYmxlKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIuZ3JhbnREYXRhQXBpQWNjZXNzKGdyYW50ZWUpO1xuICB9XG5cbiAgLy8gRnJvbSBJU2VjcmV0QXR0YWNobWVudFRhcmdldFxuXG4gIGFzU2VjcmV0QXR0YWNobWVudFRhcmdldCgpOiBTZWNyZXRBdHRhY2htZW50VGFyZ2V0UHJvcHMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIuYXNTZWNyZXRBdHRhY2htZW50VGFyZ2V0KCk7XG4gIH1cblxuICAvLyBGcm9tIElSZXNvdXJjZVxuXG4gIGFwcGx5UmVtb3ZhbFBvbGljeShwb2xpY3k6IFJlbW92YWxQb2xpY3kpOiB2b2lkIHtcbiAgICB0aGlzLmNsdXN0ZXIuYXBwbHlSZW1vdmFsUG9saWN5KHBvbGljeSk7XG4gIH1cblxuICAvLyBGcm9tIElEYXRhYmFzZUNsdXN0ZXIgKG1ldHJpY3MpXG5cbiAgbWV0cmljKG1ldHJpY05hbWU6IHN0cmluZywgcHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5jbHVzdGVyLm1ldHJpYyhtZXRyaWNOYW1lLCBwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNDUFVVdGlsaXphdGlvbihwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljQ1BVVXRpbGl6YXRpb24ocHJvcHMpO1xuICB9XG5cbiAgbWV0cmljRGF0YWJhc2VDb25uZWN0aW9ucyhwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljRGF0YWJhc2VDb25uZWN0aW9ucyhwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNEZWFkbG9ja3MocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5jbHVzdGVyLm1ldHJpY0RlYWRsb2Nrcyhwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNFbmdpbmVVcHRpbWUocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5jbHVzdGVyLm1ldHJpY0VuZ2luZVVwdGltZShwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNGcmVlYWJsZU1lbW9yeShwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljRnJlZWFibGVNZW1vcnkocHJvcHMpO1xuICB9XG5cbiAgbWV0cmljRnJlZUxvY2FsU3RvcmFnZShwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljRnJlZUxvY2FsU3RvcmFnZShwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNOZXR3b3JrUmVjZWl2ZVRocm91Z2hwdXQocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5jbHVzdGVyLm1ldHJpY05ldHdvcmtSZWNlaXZlVGhyb3VnaHB1dChwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNOZXR3b3JrVGhyb3VnaHB1dChwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljTmV0d29ya1Rocm91Z2hwdXQocHJvcHMpO1xuICB9XG5cbiAgbWV0cmljTmV0d29ya1RyYW5zbWl0VGhyb3VnaHB1dChwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljTmV0d29ya1RyYW5zbWl0VGhyb3VnaHB1dChwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNTbmFwc2hvdFN0b3JhZ2VVc2VkKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMuY2x1c3Rlci5tZXRyaWNTbmFwc2hvdFN0b3JhZ2VVc2VkKHByb3BzKTtcbiAgfVxuXG4gIG1ldHJpY1RvdGFsQmFja3VwU3RvcmFnZUJpbGxlZChwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljVG90YWxCYWNrdXBTdG9yYWdlQmlsbGVkKHByb3BzKTtcbiAgfVxuXG4gIG1ldHJpY1ZvbHVtZUJ5dGVzVXNlZChwcm9wcz86IE1ldHJpY09wdGlvbnMpOiBNZXRyaWMge1xuICAgIHJldHVybiB0aGlzLmNsdXN0ZXIubWV0cmljVm9sdW1lQnl0ZXNVc2VkKHByb3BzKTtcbiAgfVxuXG4gIG1ldHJpY1ZvbHVtZVJlYWRJT1BzKHByb3BzPzogTWV0cmljT3B0aW9ucyk6IE1ldHJpYyB7XG4gICAgcmV0dXJuIHRoaXMuY2x1c3Rlci5tZXRyaWNWb2x1bWVSZWFkSU9Qcyhwcm9wcyk7XG4gIH1cblxuICBtZXRyaWNWb2x1bWVXcml0ZUlPUHMocHJvcHM/OiBNZXRyaWNPcHRpb25zKTogTWV0cmljIHtcbiAgICByZXR1cm4gdGhpcy5jbHVzdGVyLm1ldHJpY1ZvbHVtZVdyaXRlSU9Qcyhwcm9wcyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { InstanceType } from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import type { DBClusterStorageType, PostgresEngineVersion } from 'aws-cdk-lib/aws-rds';
|
|
3
|
+
import type { Construct } from 'constructs';
|
|
4
|
+
import { ExtendedConstruct } from '../../aws-cdk';
|
|
5
|
+
import type { StandardPostgresProps } from './postgres-props';
|
|
6
|
+
/**
|
|
7
|
+
* Properties for a StandardPostgresCluster.
|
|
8
|
+
*/
|
|
9
|
+
export interface StandardPostgresClusterProps extends StandardPostgresProps {
|
|
10
|
+
/**
|
|
11
|
+
* The PostgreSQL engine version to use.
|
|
12
|
+
*
|
|
13
|
+
* @default the latest version supported by this library
|
|
14
|
+
*/
|
|
15
|
+
readonly engineVersion?: PostgresEngineVersion;
|
|
16
|
+
/**
|
|
17
|
+
* The name given to the cluster.
|
|
18
|
+
*
|
|
19
|
+
* @default CloudFormation-generated name
|
|
20
|
+
*/
|
|
21
|
+
readonly clusterIdentifier?: string;
|
|
22
|
+
/**
|
|
23
|
+
* The instance type used for the writer and reader instances.
|
|
24
|
+
*
|
|
25
|
+
* @default m5d.large
|
|
26
|
+
*/
|
|
27
|
+
readonly instanceType?: InstanceType;
|
|
28
|
+
/**
|
|
29
|
+
* The number of instances in the cluster. A Multi-AZ DB cluster requires one
|
|
30
|
+
* writer and two readers.
|
|
31
|
+
*
|
|
32
|
+
* @default 3
|
|
33
|
+
*/
|
|
34
|
+
readonly instances?: number;
|
|
35
|
+
/**
|
|
36
|
+
* The storage type of the cluster.
|
|
37
|
+
*
|
|
38
|
+
* @default DBClusterStorageType.IO1
|
|
39
|
+
*/
|
|
40
|
+
readonly storageType?: DBClusterStorageType;
|
|
41
|
+
/**
|
|
42
|
+
* The allocated storage in gibibytes.
|
|
43
|
+
*
|
|
44
|
+
* @default 100
|
|
45
|
+
*/
|
|
46
|
+
readonly allocatedStorage?: number;
|
|
47
|
+
/**
|
|
48
|
+
* The provisioned IOPS for the cluster.
|
|
49
|
+
*
|
|
50
|
+
* @default 1000
|
|
51
|
+
*/
|
|
52
|
+
readonly iops?: number;
|
|
53
|
+
/**
|
|
54
|
+
* Additional parameters applied to the instance-level parameter group. Distinct
|
|
55
|
+
* from the cluster-level parameterGroup/parameters.
|
|
56
|
+
*
|
|
57
|
+
* @default no additional parameters
|
|
58
|
+
*/
|
|
59
|
+
readonly instanceParameterGroupParameters?: Record<string, string>;
|
|
60
|
+
/**
|
|
61
|
+
* Whether the instances in the cluster are publicly accessible.
|
|
62
|
+
*
|
|
63
|
+
* @default false
|
|
64
|
+
*/
|
|
65
|
+
readonly publiclyAccessible?: boolean;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* A standard PostgreSQL Multi-AZ RDS database cluster.
|
|
69
|
+
*/
|
|
70
|
+
export declare class StandardPostgresCluster extends ExtendedConstruct {
|
|
71
|
+
constructor(scope: Construct, id: string, props: StandardPostgresClusterProps);
|
|
72
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StandardPostgresCluster = void 0;
|
|
4
|
+
const aws_cdk_1 = require("../../aws-cdk");
|
|
5
|
+
const truemark_1 = require("../../truemark");
|
|
6
|
+
/**
|
|
7
|
+
* A standard PostgreSQL Multi-AZ RDS database cluster.
|
|
8
|
+
*/
|
|
9
|
+
class StandardPostgresCluster extends aws_cdk_1.ExtendedConstruct {
|
|
10
|
+
constructor(scope, id, props) {
|
|
11
|
+
super(scope, id, {
|
|
12
|
+
standardTags: aws_cdk_1.StandardTags.merge(props.standardTags, truemark_1.LibStandardTags),
|
|
13
|
+
});
|
|
14
|
+
// TODO Implementation
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.StandardPostgresCluster = StandardPostgresCluster;
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtcG9zdGdyZXMtY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MtcmRzL2xpYi9zdGFuZGFyZC1wb3N0Z3Jlcy1jbHVzdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU1BLDJDQUE4RDtBQUM5RCw2Q0FBK0M7QUF5RS9DOztHQUVHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSwyQkFBaUI7SUFDNUQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBbUM7UUFFbkMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsc0JBQVksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSwwQkFBZSxDQUFDO1NBQ3RFLENBQUMsQ0FBQztRQUNILHNCQUFzQjtJQUN4QixDQUFDO0NBQ0Y7QUFYRCwwREFXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtJbnN0YW5jZVR5cGV9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHR5cGUge1xuICBEQkNsdXN0ZXJTdG9yYWdlVHlwZSxcbiAgUG9zdGdyZXNFbmdpbmVWZXJzaW9uLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtcmRzJztcbmltcG9ydCB0eXBlIHtDb25zdHJ1Y3R9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHtFeHRlbmRlZENvbnN0cnVjdCwgU3RhbmRhcmRUYWdzfSBmcm9tICcuLi8uLi9hd3MtY2RrJztcbmltcG9ydCB7TGliU3RhbmRhcmRUYWdzfSBmcm9tICcuLi8uLi90cnVlbWFyayc7XG5pbXBvcnQgdHlwZSB7U3RhbmRhcmRQb3N0Z3Jlc1Byb3BzfSBmcm9tICcuL3Bvc3RncmVzLXByb3BzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIFN0YW5kYXJkUG9zdGdyZXNDbHVzdGVyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkUG9zdGdyZXNDbHVzdGVyUHJvcHMgZXh0ZW5kcyBTdGFuZGFyZFBvc3RncmVzUHJvcHMge1xuICAvKipcbiAgICogVGhlIFBvc3RncmVTUUwgZW5naW5lIHZlcnNpb24gdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgbGF0ZXN0IHZlcnNpb24gc3VwcG9ydGVkIGJ5IHRoaXMgbGlicmFyeVxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lVmVyc2lvbj86IFBvc3RncmVzRW5naW5lVmVyc2lvbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgZ2l2ZW4gdG8gdGhlIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IENsb3VkRm9ybWF0aW9uLWdlbmVyYXRlZCBuYW1lXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVySWRlbnRpZmllcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIHR5cGUgdXNlZCBmb3IgdGhlIHdyaXRlciBhbmQgcmVhZGVyIGluc3RhbmNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbTVkLmxhcmdlXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVR5cGU/OiBJbnN0YW5jZVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgaW5zdGFuY2VzIGluIHRoZSBjbHVzdGVyLiBBIE11bHRpLUFaIERCIGNsdXN0ZXIgcmVxdWlyZXMgb25lXG4gICAqIHdyaXRlciBhbmQgdHdvIHJlYWRlcnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDNcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHN0b3JhZ2UgdHlwZSBvZiB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQGRlZmF1bHQgREJDbHVzdGVyU3RvcmFnZVR5cGUuSU8xXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlVHlwZT86IERCQ2x1c3RlclN0b3JhZ2VUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgYWxsb2NhdGVkIHN0b3JhZ2UgaW4gZ2liaWJ5dGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxMDBcbiAgICovXG4gIHJlYWRvbmx5IGFsbG9jYXRlZFN0b3JhZ2U/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aXNpb25lZCBJT1BTIGZvciB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQGRlZmF1bHQgMTAwMFxuICAgKi9cbiAgcmVhZG9ubHkgaW9wcz86IG51bWJlcjtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwYXJhbWV0ZXJzIGFwcGxpZWQgdG8gdGhlIGluc3RhbmNlLWxldmVsIHBhcmFtZXRlciBncm91cC4gRGlzdGluY3RcbiAgICogZnJvbSB0aGUgY2x1c3Rlci1sZXZlbCBwYXJhbWV0ZXJHcm91cC9wYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBhZGRpdGlvbmFsIHBhcmFtZXRlcnNcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlUGFyYW1ldGVyR3JvdXBQYXJhbWV0ZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgaW5zdGFuY2VzIGluIHRoZSBjbHVzdGVyIGFyZSBwdWJsaWNseSBhY2Nlc3NpYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljbHlBY2Nlc3NpYmxlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIHN0YW5kYXJkIFBvc3RncmVTUUwgTXVsdGktQVogUkRTIGRhdGFiYXNlIGNsdXN0ZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGFuZGFyZFBvc3RncmVzQ2x1c3RlciBleHRlbmRzIEV4dGVuZGVkQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBTdGFuZGFyZFBvc3RncmVzQ2x1c3RlclByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHN0YW5kYXJkVGFnczogU3RhbmRhcmRUYWdzLm1lcmdlKHByb3BzLnN0YW5kYXJkVGFncywgTGliU3RhbmRhcmRUYWdzKSxcbiAgICB9KTtcbiAgICAvLyBUT0RPIEltcGxlbWVudGF0aW9uXG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { InstanceType } from 'aws-cdk-lib/aws-ec2';
|
|
2
|
+
import type { IInstanceEngine, PostgresEngineVersion, StorageType } from 'aws-cdk-lib/aws-rds';
|
|
3
|
+
import type { Construct } from 'constructs';
|
|
4
|
+
import { ExtendedConstruct } from '../../aws-cdk';
|
|
5
|
+
import type { StandardPostgresProps } from './postgres-props';
|
|
6
|
+
/**
|
|
7
|
+
* Properties for a StandardPostgresInstance.
|
|
8
|
+
*/
|
|
9
|
+
export interface StandardPostgresInstanceProps extends StandardPostgresProps {
|
|
10
|
+
/**
|
|
11
|
+
* The PostgreSQL engine version to use.
|
|
12
|
+
*
|
|
13
|
+
* @default the latest version supported by this library
|
|
14
|
+
*/
|
|
15
|
+
readonly engineVersion?: PostgresEngineVersion;
|
|
16
|
+
/**
|
|
17
|
+
* Overrides the engine used for the instance. When provided, engineVersion
|
|
18
|
+
* is ignored.
|
|
19
|
+
*
|
|
20
|
+
* @default DatabaseInstanceEngine.postgres with engineVersion
|
|
21
|
+
*/
|
|
22
|
+
readonly engine?: IInstanceEngine;
|
|
23
|
+
/**
|
|
24
|
+
* The instance type of the database instance.
|
|
25
|
+
*
|
|
26
|
+
* @default t4g.medium
|
|
27
|
+
*/
|
|
28
|
+
readonly instanceType?: InstanceType;
|
|
29
|
+
/**
|
|
30
|
+
* The name given to the database instance.
|
|
31
|
+
*
|
|
32
|
+
* @default CloudFormation-generated name
|
|
33
|
+
*/
|
|
34
|
+
readonly instanceIdentifier?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Whether the instance is deployed in multiple availability zones.
|
|
37
|
+
*
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
40
|
+
readonly multiAz?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* The storage type of the instance.
|
|
43
|
+
*
|
|
44
|
+
* @default StorageType.GP3
|
|
45
|
+
*/
|
|
46
|
+
readonly storageType?: StorageType;
|
|
47
|
+
/**
|
|
48
|
+
* The allocated storage in gibibytes.
|
|
49
|
+
*
|
|
50
|
+
* @default 100
|
|
51
|
+
*/
|
|
52
|
+
readonly allocatedStorage?: number;
|
|
53
|
+
/**
|
|
54
|
+
* The upper limit storage may be autoscaled to in gibibytes. Set to the same
|
|
55
|
+
* value as allocatedStorage to disable storage autoscaling.
|
|
56
|
+
*
|
|
57
|
+
* @default 1000
|
|
58
|
+
*/
|
|
59
|
+
readonly maxAllocatedStorage?: number;
|
|
60
|
+
/**
|
|
61
|
+
* The provisioned IOPS for the instance. Only applies to io1 and io2 storage
|
|
62
|
+
* and to gp3 storage above the free IOPS threshold.
|
|
63
|
+
*
|
|
64
|
+
* @default no provisioned IOPS
|
|
65
|
+
*/
|
|
66
|
+
readonly iops?: number;
|
|
67
|
+
/**
|
|
68
|
+
* The storage throughput in mebibytes per second. Only applies to gp3 storage.
|
|
69
|
+
*
|
|
70
|
+
* @default determined by RDS
|
|
71
|
+
*/
|
|
72
|
+
readonly storageThroughput?: number;
|
|
73
|
+
/**
|
|
74
|
+
* The number of read replicas to create.
|
|
75
|
+
*
|
|
76
|
+
* @default 0
|
|
77
|
+
*/
|
|
78
|
+
readonly readReplicas?: number;
|
|
79
|
+
/**
|
|
80
|
+
* The instance type used for read replicas.
|
|
81
|
+
*
|
|
82
|
+
* @default same as instanceType
|
|
83
|
+
*/
|
|
84
|
+
readonly readReplicaInstanceType?: InstanceType;
|
|
85
|
+
/**
|
|
86
|
+
* Whether the instance is publicly accessible.
|
|
87
|
+
*
|
|
88
|
+
* @default false
|
|
89
|
+
*/
|
|
90
|
+
readonly publiclyAccessible?: boolean;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* A standard PostgreSQL RDS database instance.
|
|
94
|
+
*/
|
|
95
|
+
export declare class StandardPostgresInstance extends ExtendedConstruct {
|
|
96
|
+
constructor(scope: Construct, id: string, props: StandardPostgresInstanceProps);
|
|
97
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StandardPostgresInstance = void 0;
|
|
4
|
+
const aws_cdk_1 = require("../../aws-cdk");
|
|
5
|
+
const truemark_1 = require("../../truemark");
|
|
6
|
+
/**
|
|
7
|
+
* A standard PostgreSQL RDS database instance.
|
|
8
|
+
*/
|
|
9
|
+
class StandardPostgresInstance extends aws_cdk_1.ExtendedConstruct {
|
|
10
|
+
constructor(scope, id, props) {
|
|
11
|
+
super(scope, id, {
|
|
12
|
+
standardTags: aws_cdk_1.StandardTags.merge(props.standardTags, truemark_1.LibStandardTags),
|
|
13
|
+
});
|
|
14
|
+
// TODO Implementation
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.StandardPostgresInstance = StandardPostgresInstance;
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtcG9zdGdyZXMtaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzLXJkcy9saWIvc3RhbmRhcmQtcG9zdGdyZXMtaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBT0EsMkNBQThEO0FBQzlELDZDQUErQztBQXNHL0M7O0dBRUc7QUFDSCxNQUFhLHdCQUF5QixTQUFRLDJCQUFpQjtJQUM3RCxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFvQztRQUVwQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFlBQVksRUFBRSxzQkFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLDBCQUFlLENBQUM7U0FDdEUsQ0FBQyxDQUFDO1FBQ0gsc0JBQXNCO0lBQ3hCLENBQUM7Q0FDRjtBQVhELDREQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge0luc3RhbmNlVHlwZX0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgdHlwZSB7XG4gIElJbnN0YW5jZUVuZ2luZSxcbiAgUG9zdGdyZXNFbmdpbmVWZXJzaW9uLFxuICBTdG9yYWdlVHlwZSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXJkcyc7XG5pbXBvcnQgdHlwZSB7Q29uc3RydWN0fSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7RXh0ZW5kZWRDb25zdHJ1Y3QsIFN0YW5kYXJkVGFnc30gZnJvbSAnLi4vLi4vYXdzLWNkayc7XG5pbXBvcnQge0xpYlN0YW5kYXJkVGFnc30gZnJvbSAnLi4vLi4vdHJ1ZW1hcmsnO1xuaW1wb3J0IHR5cGUge1N0YW5kYXJkUG9zdGdyZXNQcm9wc30gZnJvbSAnLi9wb3N0Z3Jlcy1wcm9wcyc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBTdGFuZGFyZFBvc3RncmVzSW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhbmRhcmRQb3N0Z3Jlc0luc3RhbmNlUHJvcHMgZXh0ZW5kcyBTdGFuZGFyZFBvc3RncmVzUHJvcHMge1xuICAvKipcbiAgICogVGhlIFBvc3RncmVTUUwgZW5naW5lIHZlcnNpb24gdG8gdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgbGF0ZXN0IHZlcnNpb24gc3VwcG9ydGVkIGJ5IHRoaXMgbGlicmFyeVxuICAgKi9cbiAgcmVhZG9ubHkgZW5naW5lVmVyc2lvbj86IFBvc3RncmVzRW5naW5lVmVyc2lvbjtcblxuICAvKipcbiAgICogT3ZlcnJpZGVzIHRoZSBlbmdpbmUgdXNlZCBmb3IgdGhlIGluc3RhbmNlLiBXaGVuIHByb3ZpZGVkLCBlbmdpbmVWZXJzaW9uXG4gICAqIGlzIGlnbm9yZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IERhdGFiYXNlSW5zdGFuY2VFbmdpbmUucG9zdGdyZXMgd2l0aCBlbmdpbmVWZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBlbmdpbmU/OiBJSW5zdGFuY2VFbmdpbmU7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZSB0eXBlIG9mIHRoZSBkYXRhYmFzZSBpbnN0YW5jZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdDRnLm1lZGl1bVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlPzogSW5zdGFuY2VUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBnaXZlbiB0byB0aGUgZGF0YWJhc2UgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IENsb3VkRm9ybWF0aW9uLWdlbmVyYXRlZCBuYW1lXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUlkZW50aWZpZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGluc3RhbmNlIGlzIGRlcGxveWVkIGluIG11bHRpcGxlIGF2YWlsYWJpbGl0eSB6b25lcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbXVsdGlBej86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdG9yYWdlIHR5cGUgb2YgdGhlIGluc3RhbmNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTdG9yYWdlVHlwZS5HUDNcbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2VUeXBlPzogU3RvcmFnZVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBhbGxvY2F0ZWQgc3RvcmFnZSBpbiBnaWJpYnl0ZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwMFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb2NhdGVkU3RvcmFnZT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHVwcGVyIGxpbWl0IHN0b3JhZ2UgbWF5IGJlIGF1dG9zY2FsZWQgdG8gaW4gZ2liaWJ5dGVzLiBTZXQgdG8gdGhlIHNhbWVcbiAgICogdmFsdWUgYXMgYWxsb2NhdGVkU3RvcmFnZSB0byBkaXNhYmxlIHN0b3JhZ2UgYXV0b3NjYWxpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwMDBcbiAgICovXG4gIHJlYWRvbmx5IG1heEFsbG9jYXRlZFN0b3JhZ2U/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aXNpb25lZCBJT1BTIGZvciB0aGUgaW5zdGFuY2UuIE9ubHkgYXBwbGllcyB0byBpbzEgYW5kIGlvMiBzdG9yYWdlXG4gICAqIGFuZCB0byBncDMgc3RvcmFnZSBhYm92ZSB0aGUgZnJlZSBJT1BTIHRocmVzaG9sZC5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gcHJvdmlzaW9uZWQgSU9QU1xuICAgKi9cbiAgcmVhZG9ubHkgaW9wcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHN0b3JhZ2UgdGhyb3VnaHB1dCBpbiBtZWJpYnl0ZXMgcGVyIHNlY29uZC4gT25seSBhcHBsaWVzIHRvIGdwMyBzdG9yYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBkZXRlcm1pbmVkIGJ5IFJEU1xuICAgKi9cbiAgcmVhZG9ubHkgc3RvcmFnZVRocm91Z2hwdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcmVhZCByZXBsaWNhcyB0byBjcmVhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRSZXBsaWNhcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGluc3RhbmNlIHR5cGUgdXNlZCBmb3IgcmVhZCByZXBsaWNhcy5cbiAgICpcbiAgICogQGRlZmF1bHQgc2FtZSBhcyBpbnN0YW5jZVR5cGVcbiAgICovXG4gIHJlYWRvbmx5IHJlYWRSZXBsaWNhSW5zdGFuY2VUeXBlPzogSW5zdGFuY2VUeXBlO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBpbnN0YW5jZSBpcyBwdWJsaWNseSBhY2Nlc3NpYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljbHlBY2Nlc3NpYmxlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBIHN0YW5kYXJkIFBvc3RncmVTUUwgUkRTIGRhdGFiYXNlIGluc3RhbmNlLlxuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhcmRQb3N0Z3Jlc0luc3RhbmNlIGV4dGVuZHMgRXh0ZW5kZWRDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFN0YW5kYXJkUG9zdGdyZXNJbnN0YW5jZVByb3BzLFxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHN0YW5kYXJkVGFnczogU3RhbmRhcmRUYWdzLm1lcmdlKHByb3BzLnN0YW5kYXJkVGFncywgTGliU3RhbmRhcmRUYWdzKSxcbiAgICB9KTtcbiAgICAvLyBUT0RPIEltcGxlbWVudGF0aW9uXG4gIH1cbn1cbiJdfQ==
|
package/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export * as domain_redirect from './aws-patterns-domain-redirect/index';
|
|
|
14
14
|
export * as website from './aws-patterns-website/index';
|
|
15
15
|
export * as wordpress from './aws-patterns-wordpress/index';
|
|
16
16
|
export * as aws_patterns_workspaces from './aws-patterns-workspaces/index';
|
|
17
|
+
export * as aws_rds from './aws-rds/index';
|
|
17
18
|
export * as aws_route53 from './aws-route53/index';
|
|
18
19
|
export * as aws_s3 from './aws-s3/index';
|
|
19
20
|
export * as aws_ses from './aws-ses/index';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.helpers = exports.aws_workspaces = exports.aws_wafv2 = exports.aws_vpc = exports.aws_ssm_patch = exports.aws_ssm_activation = exports.aws_ssm = exports.aws_sqs = exports.aws_ses = exports.aws_s3 = exports.aws_route53 = exports.aws_patterns_workspaces = exports.wordpress = exports.website = exports.domain_redirect = exports.aws_monitoring = exports.aws_lambda = exports.aws_ecs = exports.aws_dynamodb = exports.aws_directory_service = exports.aws_codepipeline = exports.aws_cloudwatch = exports.aws_cloudfront = exports.aws_centergauge = exports.aws_cdk = exports.aws_bedrock = exports.aws_apigatewayv2 = void 0;
|
|
3
|
+
exports.helpers = exports.aws_workspaces = exports.aws_wafv2 = exports.aws_vpc = exports.aws_ssm_patch = exports.aws_ssm_activation = exports.aws_ssm = exports.aws_sqs = exports.aws_ses = exports.aws_s3 = exports.aws_route53 = exports.aws_rds = exports.aws_patterns_workspaces = exports.wordpress = exports.website = exports.domain_redirect = exports.aws_monitoring = exports.aws_lambda = exports.aws_ecs = exports.aws_dynamodb = exports.aws_directory_service = exports.aws_codepipeline = exports.aws_cloudwatch = exports.aws_cloudfront = exports.aws_centergauge = exports.aws_cdk = exports.aws_bedrock = exports.aws_apigatewayv2 = void 0;
|
|
4
4
|
exports.aws_apigatewayv2 = require("./aws-apigatewayv2/index");
|
|
5
5
|
exports.aws_bedrock = require("./aws-bedrock/index");
|
|
6
6
|
exports.aws_cdk = require("./aws-cdk/index");
|
|
@@ -17,6 +17,7 @@ exports.domain_redirect = require("./aws-patterns-domain-redirect/index");
|
|
|
17
17
|
exports.website = require("./aws-patterns-website/index");
|
|
18
18
|
exports.wordpress = require("./aws-patterns-wordpress/index");
|
|
19
19
|
exports.aws_patterns_workspaces = require("./aws-patterns-workspaces/index");
|
|
20
|
+
exports.aws_rds = require("./aws-rds/index");
|
|
20
21
|
exports.aws_route53 = require("./aws-route53/index");
|
|
21
22
|
exports.aws_s3 = require("./aws-s3/index");
|
|
22
23
|
exports.aws_ses = require("./aws-ses/index");
|
|
@@ -28,4 +29,4 @@ exports.aws_vpc = require("./aws-vpc/index");
|
|
|
28
29
|
exports.aws_wafv2 = require("./aws-wafv2/index");
|
|
29
30
|
exports.aws_workspaces = require("./aws-workspaces/index");
|
|
30
31
|
exports.helpers = require("./helpers/index");
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0RBQTZEO0FBQzdELHFEQUFtRDtBQUNuRCw2Q0FBMkM7QUFDM0MsNkRBQTJEO0FBQzNELDJEQUF5RDtBQUN6RCwyREFBeUQ7QUFDekQsK0RBQTZEO0FBQzdELHlFQUF1RTtBQUN2RSx1REFBcUQ7QUFDckQsNkNBQTJDO0FBQzNDLG1EQUFpRDtBQUNqRCwyREFBeUQ7QUFDekQsMEVBQXdFO0FBQ3hFLDBEQUF3RDtBQUN4RCw4REFBNEQ7QUFDNUQsNkVBQTJFO0FBQzNFLDZDQUEyQztBQUMzQyxxREFBbUQ7QUFDbkQsMkNBQXlDO0FBQ3pDLDZDQUEyQztBQUMzQyw2Q0FBMkM7QUFDM0MsNkNBQTJDO0FBQzNDLG1FQUFpRTtBQUNqRSx5REFBdUQ7QUFDdkQsNkNBQTJDO0FBQzNDLGlEQUErQztBQUMvQywyREFBeUQ7QUFDekQsNkNBQTJDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogYXMgYXdzX2FwaWdhdGV3YXl2MiBmcm9tICcuL2F3cy1hcGlnYXRld2F5djIvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX2JlZHJvY2sgZnJvbSAnLi9hd3MtYmVkcm9jay9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3NfY2RrIGZyb20gJy4vYXdzLWNkay9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3NfY2VudGVyZ2F1Z2UgZnJvbSAnLi9hd3MtY2VudGVyZ2F1Z2UvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX2Nsb3VkZnJvbnQgZnJvbSAnLi9hd3MtY2xvdWRmcm9udC9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3NfY2xvdWR3YXRjaCBmcm9tICcuL2F3cy1jbG91ZHdhdGNoL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c19jb2RlcGlwZWxpbmUgZnJvbSAnLi9hd3MtY29kZXBpcGVsaW5lL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c19kaXJlY3Rvcnlfc2VydmljZSBmcm9tICcuL2F3cy1kaXJlY3Rvcnktc2VydmljZS9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3NfZHluYW1vZGIgZnJvbSAnLi9hd3MtZHluYW1vZGIvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX2VjcyBmcm9tICcuL2F3cy1lY3MvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX2xhbWJkYSBmcm9tICcuL2F3cy1sYW1iZGEvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX21vbml0b3JpbmcgZnJvbSAnLi9hd3MtbW9uaXRvcmluZy9pbmRleCc7XG5leHBvcnQgKiBhcyBkb21haW5fcmVkaXJlY3QgZnJvbSAnLi9hd3MtcGF0dGVybnMtZG9tYWluLXJlZGlyZWN0L2luZGV4JztcbmV4cG9ydCAqIGFzIHdlYnNpdGUgZnJvbSAnLi9hd3MtcGF0dGVybnMtd2Vic2l0ZS9pbmRleCc7XG5leHBvcnQgKiBhcyB3b3JkcHJlc3MgZnJvbSAnLi9hd3MtcGF0dGVybnMtd29yZHByZXNzL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c19wYXR0ZXJuc193b3Jrc3BhY2VzIGZyb20gJy4vYXdzLXBhdHRlcm5zLXdvcmtzcGFjZXMvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3JkcyBmcm9tICcuL2F3cy1yZHMvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3JvdXRlNTMgZnJvbSAnLi9hd3Mtcm91dGU1My9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3NfczMgZnJvbSAnLi9hd3MtczMvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3NlcyBmcm9tICcuL2F3cy1zZXMvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3NxcyBmcm9tICcuL2F3cy1zcXMvaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3NzbSBmcm9tICcuL2F3cy1zc20vaW5kZXgnO1xuZXhwb3J0ICogYXMgYXdzX3NzbV9hY3RpdmF0aW9uIGZyb20gJy4vYXdzLXNzbS1hY3RpdmF0aW9uL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c19zc21fcGF0Y2ggZnJvbSAnLi9hd3Mtc3NtLXBhdGNoL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c192cGMgZnJvbSAnLi9hd3MtdnBjL2luZGV4JztcbmV4cG9ydCAqIGFzIGF3c193YWZ2MiBmcm9tICcuL2F3cy13YWZ2Mi9pbmRleCc7XG5leHBvcnQgKiBhcyBhd3Nfd29ya3NwYWNlcyBmcm9tICcuL2F3cy13b3Jrc3BhY2VzL2luZGV4JztcbmV4cG9ydCAqIGFzIGhlbHBlcnMgZnJvbSAnLi9oZWxwZXJzL2luZGV4JztcbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "truemark-cdk-lib",
|
|
3
3
|
"description": "AWS CDK constructs created by TrueMark",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.27.0",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
7
7
|
"typesVersions": {
|
|
@@ -48,6 +48,9 @@
|
|
|
48
48
|
"aws-patterns-wordpress": [
|
|
49
49
|
"./dist/aws-patterns-wordpress/index.d.ts"
|
|
50
50
|
],
|
|
51
|
+
"aws-rds": [
|
|
52
|
+
"./dist/aws-rds/index.d.ts"
|
|
53
|
+
],
|
|
51
54
|
"aws-route53": [
|
|
52
55
|
"./dist/aws-route53/index.d.ts"
|
|
53
56
|
],
|
|
@@ -186,6 +189,10 @@
|
|
|
186
189
|
"types": "./dist/aws-patterns-wordpress/index.d.ts",
|
|
187
190
|
"default": "./dist/aws-patterns-wordpress/index.js"
|
|
188
191
|
},
|
|
192
|
+
"./aws-rds": {
|
|
193
|
+
"types": "./dist/aws-rds/index.d.ts",
|
|
194
|
+
"default": "./dist/aws-rds/index.js"
|
|
195
|
+
},
|
|
189
196
|
"./aws-route53": {
|
|
190
197
|
"types": "./dist/aws-route53/index.d.ts",
|
|
191
198
|
"default": "./dist/aws-route53/index.js"
|