cdk-rds-sql 7.0.2 → 7.1.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/.jsii +309 -75
- package/.pre-commit-config.yaml +4 -0
- package/.prettierignore +6 -0
- package/README.md +107 -16
- package/lambda/engine.abstract.ts +16 -0
- package/lambda/engine.dsql.ts +302 -0
- package/lambda/engine.factory.ts +3 -0
- package/lambda/engine.mysql.ts +24 -0
- package/lambda/engine.postgresql.ts +24 -0
- package/lambda/handler.ts +81 -27
- package/lambda/types.ts +10 -0
- package/lib/database.js +14 -3
- package/lib/enum.d.ts +2 -1
- package/lib/enum.js +2 -1
- package/lib/handler/handler.js +24063 -23774
- package/lib/iam-grant.d.ts +20 -0
- package/lib/iam-grant.js +35 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/provider.d.ts +15 -6
- package/lib/provider.js +77 -23
- package/lib/role.custom-resource.js +2 -2
- package/lib/role.d.ts +5 -1
- package/lib/role.js +75 -65
- package/lib/schema.d.ts +3 -1
- package/lib/schema.js +3 -3
- package/lib/sql.js +3 -3
- package/package.json +13 -9
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { CustomResource } from "aws-cdk-lib";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import { Provider } from "./provider";
|
|
4
|
+
export interface IamGrantProps {
|
|
5
|
+
/**
|
|
6
|
+
* Provider.
|
|
7
|
+
*/
|
|
8
|
+
readonly provider: Provider;
|
|
9
|
+
/**
|
|
10
|
+
* Database role name to grant IAM access to.
|
|
11
|
+
*/
|
|
12
|
+
readonly roleName: string;
|
|
13
|
+
/**
|
|
14
|
+
* IAM resource ARN (role, user, or other IAM principal).
|
|
15
|
+
*/
|
|
16
|
+
readonly resourceArn: string;
|
|
17
|
+
}
|
|
18
|
+
export declare class IamGrant extends CustomResource {
|
|
19
|
+
constructor(scope: Construct, id: string, props: IamGrantProps);
|
|
20
|
+
}
|
package/lib/iam-grant.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.IamGrant = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
const dsql = require("aws-cdk-lib/aws-dsql");
|
|
8
|
+
const enum_1 = require("./enum");
|
|
9
|
+
/**
|
|
10
|
+
* Helper function to determine if a cluster is a DSQL cluster
|
|
11
|
+
*/
|
|
12
|
+
function isDsqlCluster(cluster) {
|
|
13
|
+
return cluster instanceof dsql.CfnCluster;
|
|
14
|
+
}
|
|
15
|
+
class IamGrant extends aws_cdk_lib_1.CustomResource {
|
|
16
|
+
constructor(scope, id, props) {
|
|
17
|
+
// IAM grants are only supported on DSQL
|
|
18
|
+
if (!isDsqlCluster(props.provider.cluster)) {
|
|
19
|
+
throw new Error("IAM grants are only supported with DSQL clusters. Use regular database authentication for RDS/Aurora clusters.");
|
|
20
|
+
}
|
|
21
|
+
super(scope, id, {
|
|
22
|
+
serviceToken: props.provider.serviceToken,
|
|
23
|
+
properties: {
|
|
24
|
+
Resource: enum_1.RdsSqlResource.IAM_GRANT,
|
|
25
|
+
ResourceId: props.roleName,
|
|
26
|
+
ResourceArn: props.resourceArn,
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
this.node.addDependency(props.provider);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.IamGrant = IamGrant;
|
|
33
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
34
|
+
IamGrant[_a] = { fqn: "cdk-rds-sql.IamGrant", version: "7.1.0" };
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLWdyYW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2lhbS1ncmFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE0QztBQUM1Qyw2Q0FBNEM7QUFFNUMsaUNBQXVDO0FBb0J2Qzs7R0FFRztBQUNILFNBQVMsYUFBYSxDQUFDLE9BQVk7SUFDakMsT0FBTyxPQUFPLFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQTtBQUMzQyxDQUFDO0FBRUQsTUFBYSxRQUFTLFNBQVEsNEJBQWM7SUFDMUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUM1RCx3Q0FBd0M7UUFDeEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FDYixnSEFBZ0gsQ0FDakgsQ0FBQTtRQUNILENBQUM7UUFFRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFlBQVksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVk7WUFDekMsVUFBVSxFQUFFO2dCQUNWLFFBQVEsRUFBRSxxQkFBYyxDQUFDLFNBQVM7Z0JBQ2xDLFVBQVUsRUFBRSxLQUFLLENBQUMsUUFBUTtnQkFDMUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2FBQy9CO1NBQ0YsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3pDLENBQUM7O0FBbEJILDRCQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1c3RvbVJlc291cmNlIH0gZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCAqIGFzIGRzcWwgZnJvbSBcImF3cy1jZGstbGliL2F3cy1kc3FsXCJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCB7IFJkc1NxbFJlc291cmNlIH0gZnJvbSBcIi4vZW51bVwiXG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCIuL3Byb3ZpZGVyXCJcblxuZXhwb3J0IGludGVyZmFjZSBJYW1HcmFudFByb3BzIHtcbiAgLyoqXG4gICAqIFByb3ZpZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IFByb3ZpZGVyXG5cbiAgLyoqXG4gICAqIERhdGFiYXNlIHJvbGUgbmFtZSB0byBncmFudCBJQU0gYWNjZXNzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZU5hbWU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBJQU0gcmVzb3VyY2UgQVJOIChyb2xlLCB1c2VyLCBvciBvdGhlciBJQU0gcHJpbmNpcGFsKS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc291cmNlQXJuOiBzdHJpbmdcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGEgY2x1c3RlciBpcyBhIERTUUwgY2x1c3RlclxuICovXG5mdW5jdGlvbiBpc0RzcWxDbHVzdGVyKGNsdXN0ZXI6IGFueSk6IGNsdXN0ZXIgaXMgZHNxbC5DZm5DbHVzdGVyIHtcbiAgcmV0dXJuIGNsdXN0ZXIgaW5zdGFuY2VvZiBkc3FsLkNmbkNsdXN0ZXJcbn1cblxuZXhwb3J0IGNsYXNzIElhbUdyYW50IGV4dGVuZHMgQ3VzdG9tUmVzb3VyY2Uge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSWFtR3JhbnRQcm9wcykge1xuICAgIC8vIElBTSBncmFudHMgYXJlIG9ubHkgc3VwcG9ydGVkIG9uIERTUUxcbiAgICBpZiAoIWlzRHNxbENsdXN0ZXIocHJvcHMucHJvdmlkZXIuY2x1c3RlcikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJJQU0gZ3JhbnRzIGFyZSBvbmx5IHN1cHBvcnRlZCB3aXRoIERTUUwgY2x1c3RlcnMuIFVzZSByZWd1bGFyIGRhdGFiYXNlIGF1dGhlbnRpY2F0aW9uIGZvciBSRFMvQXVyb3JhIGNsdXN0ZXJzLlwiXG4gICAgICApXG4gICAgfVxuXG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHByb3BzLnByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgUmVzb3VyY2U6IFJkc1NxbFJlc291cmNlLklBTV9HUkFOVCxcbiAgICAgICAgUmVzb3VyY2VJZDogcHJvcHMucm9sZU5hbWUsXG4gICAgICAgIFJlc291cmNlQXJuOiBwcm9wcy5yZXNvdXJjZUFybixcbiAgICAgIH0sXG4gICAgfSlcbiAgICB0aGlzLm5vZGUuYWRkRGVwZW5kZW5jeShwcm9wcy5wcm92aWRlcilcbiAgfVxufVxuIl19
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -20,4 +20,5 @@ __exportStar(require("./sql"), exports);
|
|
|
20
20
|
__exportStar(require("./schema"), exports);
|
|
21
21
|
__exportStar(require("./role"), exports);
|
|
22
22
|
__exportStar(require("./database"), exports);
|
|
23
|
-
|
|
23
|
+
__exportStar(require("./iam-grant"), exports);
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUFzQjtBQUN0Qiw2Q0FBMEI7QUFDMUIsd0NBQXFCO0FBQ3JCLDJDQUF3QjtBQUN4Qix5Q0FBc0I7QUFDdEIsNkNBQTBCO0FBQzFCLDhDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2VudW1cIlxuZXhwb3J0ICogZnJvbSBcIi4vcHJvdmlkZXJcIlxuZXhwb3J0ICogZnJvbSBcIi4vc3FsXCJcbmV4cG9ydCAqIGZyb20gXCIuL3NjaGVtYVwiXG5leHBvcnQgKiBmcm9tIFwiLi9yb2xlXCJcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlXCJcbmV4cG9ydCAqIGZyb20gXCIuL2lhbS1ncmFudFwiXG4iXX0=
|
package/lib/provider.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Duration } from "aws-cdk-lib";
|
|
2
|
+
import * as dsql from "aws-cdk-lib/aws-dsql";
|
|
2
3
|
import { IVpc, SubnetSelection } from "aws-cdk-lib/aws-ec2";
|
|
3
4
|
import { IFunction } from "aws-cdk-lib/aws-lambda";
|
|
4
5
|
import * as lambda from "aws-cdk-lib/aws-lambda-nodejs";
|
|
@@ -11,10 +12,12 @@ export interface RdsSqlProps {
|
|
|
11
12
|
* VPC network to place the provider lambda.
|
|
12
13
|
*
|
|
13
14
|
* Normally this is the VPC of your database.
|
|
15
|
+
* Required when your database is only accessible in a VPC.
|
|
16
|
+
* Not required for DSQL as it uses public endpoints with IAM authentication.
|
|
14
17
|
*
|
|
15
18
|
* @default - Function is not placed within a VPC.
|
|
16
19
|
*/
|
|
17
|
-
readonly vpc
|
|
20
|
+
readonly vpc?: IVpc;
|
|
18
21
|
/**
|
|
19
22
|
* Where to place the network provider lambda within the VPC.
|
|
20
23
|
*
|
|
@@ -22,15 +25,21 @@ export interface RdsSqlProps {
|
|
|
22
25
|
*/
|
|
23
26
|
readonly vpcSubnets?: SubnetSelection;
|
|
24
27
|
/**
|
|
25
|
-
* Your database.
|
|
28
|
+
* Your database cluster or instance.
|
|
29
|
+
* Supports both traditional RDS/Aurora clusters and DSQL clusters.
|
|
30
|
+
* - For RDS/Aurora: security groups will be configured to allow access
|
|
31
|
+
* - For DSQL: IAM authentication will be used instead of secrets
|
|
26
32
|
*/
|
|
27
|
-
readonly cluster: IDatabaseCluster | IDatabaseInstance;
|
|
33
|
+
readonly cluster: IDatabaseCluster | IDatabaseInstance | dsql.CfnCluster;
|
|
28
34
|
/**
|
|
29
35
|
* Secret that grants access to your database.
|
|
30
36
|
*
|
|
31
37
|
* Usually this is your cluster's master secret.
|
|
38
|
+
* Not required when relying on IAM authentication (such as DSQL).
|
|
39
|
+
*
|
|
40
|
+
* @default - undefined for DSQL clusters using IAM authentication
|
|
32
41
|
*/
|
|
33
|
-
readonly secret
|
|
42
|
+
readonly secret?: ISecret;
|
|
34
43
|
/**
|
|
35
44
|
* Timeout for lambda to do its work.
|
|
36
45
|
*
|
|
@@ -62,9 +71,9 @@ export interface RdsSqlProps {
|
|
|
62
71
|
}
|
|
63
72
|
export declare class Provider extends Construct {
|
|
64
73
|
readonly serviceToken: string;
|
|
65
|
-
readonly secret
|
|
74
|
+
readonly secret?: ISecret;
|
|
66
75
|
readonly handler: IFunction;
|
|
67
|
-
readonly cluster: IDatabaseCluster | IDatabaseInstance;
|
|
76
|
+
readonly cluster: IDatabaseCluster | IDatabaseInstance | dsql.CfnCluster;
|
|
68
77
|
/**
|
|
69
78
|
* The engine like "postgres" or "mysql"
|
|
70
79
|
*
|
package/lib/provider.js
CHANGED
|
@@ -6,19 +6,41 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
6
6
|
const fs_1 = require("fs");
|
|
7
7
|
const path = require("path");
|
|
8
8
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
9
|
+
const dsql = require("aws-cdk-lib/aws-dsql");
|
|
9
10
|
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
10
11
|
const iam = require("aws-cdk-lib/aws-iam");
|
|
11
12
|
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
12
13
|
const lambda = require("aws-cdk-lib/aws-lambda-nodejs");
|
|
13
14
|
const customResources = require("aws-cdk-lib/custom-resources");
|
|
14
15
|
const constructs_1 = require("constructs");
|
|
16
|
+
/**
|
|
17
|
+
* Helper function to determine if a cluster is a DSQL cluster
|
|
18
|
+
*/
|
|
19
|
+
function isDsqlCluster(cluster) {
|
|
20
|
+
return cluster instanceof dsql.CfnCluster;
|
|
21
|
+
}
|
|
15
22
|
class Provider extends constructs_1.Construct {
|
|
16
23
|
constructor(scope, id, props) {
|
|
17
24
|
super(scope, id);
|
|
25
|
+
// Validate configuration
|
|
26
|
+
const isDsql = isDsqlCluster(props.cluster);
|
|
27
|
+
if (!isDsql && !props.secret) {
|
|
28
|
+
throw new Error("Either secret (for traditional RDS) or cluster with DSQL must be provided");
|
|
29
|
+
}
|
|
30
|
+
if (!isDsql && !props.vpc) {
|
|
31
|
+
throw new Error("VPC is required for traditional RDS databases");
|
|
32
|
+
}
|
|
33
|
+
if (isDsql && props.secret) {
|
|
34
|
+
throw new Error("secret should not be provided when using DSQL cluster (uses IAM authentication)");
|
|
35
|
+
}
|
|
18
36
|
this.secret = props.secret;
|
|
19
37
|
this.cluster = props.cluster;
|
|
20
38
|
// Determine engine from cluster/instance instead of hardcoding
|
|
21
|
-
if (
|
|
39
|
+
if (isDsql) {
|
|
40
|
+
// DSQL is always PostgreSQL-compatible
|
|
41
|
+
this.engine = "dsql";
|
|
42
|
+
}
|
|
43
|
+
else if ("clusterIdentifier" in props.cluster) {
|
|
22
44
|
// It's a DatabaseCluster
|
|
23
45
|
const clusterEngine = props.cluster.engine;
|
|
24
46
|
this.engine =
|
|
@@ -42,21 +64,35 @@ class Provider extends constructs_1.Construct {
|
|
|
42
64
|
onEventHandler: this.handler,
|
|
43
65
|
});
|
|
44
66
|
this.serviceToken = provider.serviceToken;
|
|
45
|
-
|
|
46
|
-
if (
|
|
47
|
-
//
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
67
|
+
// Handle database connection setup
|
|
68
|
+
if (isDsql) {
|
|
69
|
+
// For DSQL, grant IAM permissions instead of VPC security groups
|
|
70
|
+
const dsqlCluster = props.cluster;
|
|
71
|
+
this.handler.addToRolePolicy(new iam.PolicyStatement({
|
|
72
|
+
effect: iam.Effect.ALLOW,
|
|
73
|
+
actions: ["dsql:DbConnectAdmin"],
|
|
74
|
+
resources: [dsqlCluster.attrResourceArn],
|
|
75
|
+
}));
|
|
52
76
|
}
|
|
53
77
|
else {
|
|
54
|
-
|
|
55
|
-
this.
|
|
78
|
+
// Traditional RDS setup with security groups and secrets
|
|
79
|
+
this.secret.grantRead(this.handler);
|
|
80
|
+
if (this.secret.encryptionKey) {
|
|
81
|
+
// It seems we need to grant explicit permission
|
|
82
|
+
this.secret.encryptionKey.grantDecrypt(this.handler);
|
|
83
|
+
}
|
|
84
|
+
if (props.cluster.connections.securityGroups.length === 0) {
|
|
85
|
+
throw new Error("Cluster does not have a security group.");
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
const securityGroup = props.cluster.connections.securityGroups[0];
|
|
89
|
+
this.handler.node.defaultChild?.node.addDependency(securityGroup);
|
|
90
|
+
}
|
|
56
91
|
}
|
|
57
92
|
this.node.addDependency(props.cluster);
|
|
58
93
|
}
|
|
59
94
|
newCustomResourceHandler(scope, id, props) {
|
|
95
|
+
const isDsql = isDsqlCluster(props.cluster);
|
|
60
96
|
const handlerDir = path.join(__dirname, "handler");
|
|
61
97
|
const index_ts = path.join(handlerDir, "index.ts");
|
|
62
98
|
const index_js = path.join(handlerDir, "index.js");
|
|
@@ -78,6 +114,19 @@ class Provider extends constructs_1.Construct {
|
|
|
78
114
|
};
|
|
79
115
|
}
|
|
80
116
|
const logger = props.logger ?? false;
|
|
117
|
+
// Build environment variables
|
|
118
|
+
const environment = {
|
|
119
|
+
LOGGER: logger.toString(),
|
|
120
|
+
...ssl_options,
|
|
121
|
+
};
|
|
122
|
+
// Add DSQL-specific environment variables
|
|
123
|
+
if (isDsql) {
|
|
124
|
+
const dsqlCluster = props.cluster;
|
|
125
|
+
const clusterId = dsqlCluster.attrIdentifier;
|
|
126
|
+
const region = aws_cdk_lib_1.Stack.of(scope).region;
|
|
127
|
+
environment.DSQL_ENDPOINT = `${clusterId}.dsql.${region}.on.aws`;
|
|
128
|
+
environment.DSQL_PORT = "5432";
|
|
129
|
+
}
|
|
81
130
|
const deleteParameterPolicy = new iam.PolicyStatement({
|
|
82
131
|
actions: ["ssm:DeleteParameter"],
|
|
83
132
|
resources: [
|
|
@@ -91,10 +140,15 @@ class Provider extends constructs_1.Construct {
|
|
|
91
140
|
});
|
|
92
141
|
const fn = new lambda.NodejsFunction(scope, id, {
|
|
93
142
|
...props.functionProps,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
143
|
+
// Only configure VPC for traditional RDS
|
|
144
|
+
...(isDsql
|
|
145
|
+
? {}
|
|
146
|
+
: {
|
|
147
|
+
vpc: props.vpc,
|
|
148
|
+
vpcSubnets: props.vpcSubnets ?? {
|
|
149
|
+
subnetType: aws_ec2_1.SubnetType.PRIVATE_ISOLATED,
|
|
150
|
+
},
|
|
151
|
+
}),
|
|
98
152
|
entry: entry,
|
|
99
153
|
runtime: aws_lambda_1.Runtime.NODEJS_22_X,
|
|
100
154
|
timeout: props.timeout ?? props.functionProps?.timeout ?? aws_cdk_lib_1.Duration.seconds(300),
|
|
@@ -114,26 +168,26 @@ class Provider extends constructs_1.Construct {
|
|
|
114
168
|
},
|
|
115
169
|
},
|
|
116
170
|
},
|
|
117
|
-
environment
|
|
118
|
-
LOGGER: logger.toString(),
|
|
119
|
-
...ssl_options,
|
|
120
|
-
},
|
|
171
|
+
environment,
|
|
121
172
|
initialPolicy: [
|
|
122
173
|
deleteParameterPolicy,
|
|
123
174
|
...(props.functionProps?.initialPolicy ?? []),
|
|
124
175
|
],
|
|
125
176
|
});
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
props.
|
|
177
|
+
// Only configure security groups for traditional RDS (not DSQL)
|
|
178
|
+
if (!isDsql &&
|
|
179
|
+
(!props.functionProps?.securityGroups ||
|
|
180
|
+
props.functionProps?.securityGroups.length === 0)) {
|
|
181
|
+
const rdsCluster = props.cluster;
|
|
182
|
+
rdsCluster.connections.allowDefaultPortFrom(fn, "Allow the rds sql handler to connect to db");
|
|
129
183
|
}
|
|
130
184
|
return fn;
|
|
131
185
|
}
|
|
132
186
|
}
|
|
133
187
|
exports.Provider = Provider;
|
|
134
188
|
_a = JSII_RTTI_SYMBOL_1;
|
|
135
|
-
Provider[_a] = { fqn: "cdk-rds-sql.Provider", version: "7.0
|
|
189
|
+
Provider[_a] = { fqn: "cdk-rds-sql.Provider", version: "7.1.0" };
|
|
136
190
|
function slugify(x) {
|
|
137
191
|
return x.replace(/[^a-zA-Z0-9]/g, "");
|
|
138
192
|
}
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQkFBK0I7QUFDL0IsNkJBQTRCO0FBQzVCLDZDQUE2QztBQUM3QyxpREFBdUU7QUFDdkUsMkNBQTBDO0FBQzFDLHVEQUEyRDtBQUMzRCx3REFBdUQ7QUFJdkQsZ0VBQStEO0FBQy9ELDJDQUFzQztBQWdFdEMsTUFBYSxRQUFTLFNBQVEsc0JBQVM7SUFhckMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQjtRQUMxRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQTtRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUE7UUFFNUIsK0RBQStEO1FBQy9ELElBQUksbUJBQW1CLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3pDLHlCQUF5QjtZQUN6QixNQUFNLGFBQWEsR0FBSSxLQUFLLENBQUMsT0FBNEIsQ0FBQyxNQUFNLENBQUE7WUFDaEUsSUFBSSxDQUFDLE1BQU07Z0JBQ1QsYUFBYSxJQUFJLGFBQWEsQ0FBQyxZQUFZLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQTtRQUNsRixDQUFDO2FBQU0sSUFBSSxvQkFBb0IsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakQsMEJBQTBCO1lBQzFCLE1BQU0sY0FBYyxHQUFJLEtBQUssQ0FBQyxPQUE2QixDQUFDLE1BQU0sQ0FBQTtZQUNsRSxJQUFJLENBQUMsTUFBTTtnQkFDVCxjQUFjLElBQUksY0FBYyxDQUFDLFlBQVksS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFBO1FBQ3BGLENBQUM7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QUM7b0JBQ0QsYUFBYTt3QkFDWCxPQUFPLEVBQUUsQ0FBQTtvQkFDWCxDQUFDO2lCQUNGO2FBQ0Y7WUFDRCxXQUFXLEVBQUU7Z0JBQ1gsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pCLEdBQUcsV0FBVzthQUNmO1lBQ0QsYUFBYSxFQUFFO2dCQUNiLHFCQUFxQjtnQkFDckIsR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsYUFBYSxJQUFJLEVBQUUsQ0FBQzthQUM5QztTQUNGLENBQUMsQ0FBQTtRQUVGLElBQ0UsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLGNBQWM7WUFDcEMsS0FBSyxDQUFDLGFBQWEsRUFBRSxjQUFjLENBQUMsTUFBTSxLQUFLLENBQUMsRUFDaEQsQ0FBQztZQUNELEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUM1QyxFQUFFLEVBQ0YsNENBQTRDLENBQzdDLENBQUE7UUFDSCxDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDOztBQW5KSCw0QkFvSkM7OztBQUVELFNBQVMsT0FBTyxDQUFDLENBQVM7SUFDeEIsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJmc1wiXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IER1cmF0aW9uLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgeyBJVnBjLCBTdWJuZXRUeXBlLCBTdWJuZXRTZWxlY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIlxuaW1wb3J0IHsgSUZ1bmN0aW9uLCBSdW50aW1lIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIlxuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiXG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvblByb3BzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCJcbmltcG9ydCB7IElEYXRhYmFzZUNsdXN0ZXIsIElEYXRhYmFzZUluc3RhbmNlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIlxuaW1wb3J0IHsgSVNlY3JldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIlxuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCJcblxuZXhwb3J0IGludGVyZmFjZSBSZHNTcWxQcm9wcyB7XG4gIC8qKlxuICAgKiBWUEMgbmV0d29yayB0byBwbGFjZSB0aGUgcHJvdmlkZXIgbGFtYmRhLlxuICAgKlxuICAgKiBOb3JtYWxseSB0aGlzIGlzIHRoZSBWUEMgb2YgeW91ciBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBGdW5jdGlvbiBpcyBub3QgcGxhY2VkIHdpdGhpbiBhIFZQQy5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogSVZwY1xuXG4gIC8qKlxuICAgKiBXaGVyZSB0byBwbGFjZSB0aGUgbmV0d29yayBwcm92aWRlciBsYW1iZGEgd2l0aGluIHRoZSBWUEMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGlzb2xhdGVkIHN1Ym5ldCBpZiBub3Qgc3BlY2lmaWVkXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogU3VibmV0U2VsZWN0aW9uXG5cbiAgLyoqXG4gICAqIFlvdXIgZGF0YWJhc2UuXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVyOiBJRGF0YWJhc2VDbHVzdGVyIHwgSURhdGFiYXNlSW5zdGFuY2VcblxuICAvKipcbiAgICogU2VjcmV0IHRoYXQgZ3JhbnRzIGFjY2VzcyB0byB5b3VyIGRhdGFiYXNlLlxuICAgKlxuICAgKiBVc3VhbGx5IHRoaXMgaXMgeW91ciBjbHVzdGVyJ3MgbWFzdGVyIHNlY3JldC5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3JldDogSVNlY3JldFxuXG4gIC8qKlxuICAgKiBUaW1lb3V0IGZvciBsYW1iZGEgdG8gZG8gaXRzIHdvcmsuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gNSBtaW51dGVzXG4gICAqL1xuICByZWFkb25seSB0aW1lb3V0PzogRHVyYXRpb25cblxuICAvKipcbiAgICogTG9nIFNRTCBzdGF0ZW1lbnRzLiBUaGlzIGluY2x1ZGVzIHBhc3N3b3Jkcy4gVXNlIG9ubHkgZm9yIGRlYnVnZ2luZy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9nZ2VyPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGZ1bmN0aW9uIGN1c3RvbWl6YXRpb24uXG4gICAqXG4gICAqIFRoaXMgZW5hYmxlcyBhZGRpdGlvbmFsIGZ1bmN0aW9uIGN1c3RvbWl6YXRpb24gc3VjaCBhcyB0aGUgbG9nIGdyb3VwLiBIb3dldmVyLFxuICAgKiBsYW1iZGEgZnVuY3Rpb24gcHJvcGVydGllcyBjb250cm9sbGVkIGJ5IG90aGVyIHtSZHNTcWxQcm9wc30gcGFyYW1ldGVycyB3aWxsIHRydW1wXG4gICAqIG9waW9ucyBzZXQgdmlhIHRoaXMgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGVtcHR5XG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvblByb3BzPzogTm9kZWpzRnVuY3Rpb25Qcm9wc1xuXG4gIC8qKlxuICAgKiBVc2UgU1NMP1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNzbD86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNsYXNzIFByb3ZpZGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2VUb2tlbjogc3RyaW5nXG4gIHB1YmxpYyByZWFkb25seSBzZWNyZXQ6IElTZWNyZXRcbiAgcHVibGljIHJlYWRvbmx5IGhhbmRsZXI6IElGdW5jdGlvblxuICBwdWJsaWMgcmVhZG9ubHkgY2x1c3RlcjogSURhdGFiYXNlQ2x1c3RlciB8IElEYXRhYmFzZUluc3RhbmNlXG5cbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgbGlrZSBcInBvc3RncmVzXCIgb3IgXCJteXNxbFwiXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gaWYgd2UgY2Fubm90IGRldGVybWluZSB0aGlzIFwicG9zdGdyZXNcIlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVuZ2luZTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJkc1NxbFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuICAgIHRoaXMuc2VjcmV0ID0gcHJvcHMuc2VjcmV0XG4gICAgdGhpcy5jbHVzdGVyID0gcHJvcHMuY2x1c3RlclxuXG4gICAgLy8gRGV0ZXJtaW5lIGVuZ2luZSBmcm9tIGNsdXN0ZXIvaW5zdGFuY2UgaW5zdGVhZCBvZiBoYXJkY29kaW5nXG4gICAgaWYgKFwiY2x1c3RlcklkZW50aWZpZXJcIiBpbiBwcm9wcy5jbHVzdGVyKSB7XG4gICAgICAvLyBJdCdzIGEgRGF0YWJhc2VDbHVzdGVyXG4gICAgICBjb25zdCBjbHVzdGVyRW5naW5lID0gKHByb3BzLmNsdXN0ZXIgYXMgSURhdGFiYXNlQ2x1c3RlcikuZW5naW5lXG4gICAgICB0aGlzLmVuZ2luZSA9XG4gICAgICAgIGNsdXN0ZXJFbmdpbmUgJiYgY2x1c3RlckVuZ2luZS5lbmdpbmVGYW1pbHkgPT09IFwiTVlTUUxcIiA/IFwibXlzcWxcIiA6IFwicG9zdGdyZXNcIlxuICAgIH0gZWxzZSBpZiAoXCJpbnN0YW5jZUlkZW50aWZpZXJcIiBpbiBwcm9wcy5jbHVzdGVyKSB7XG4gICAgICAvLyBJdCdzIGEgRGF0YWJhc2VJbnN0YW5jZVxuICAgICAgY29uc3QgaW5zdGFuY2VFbmdpbmUgPSAocHJvcHMuY2x1c3RlciBhcyBJRGF0YWJhc2VJbnN0YW5jZSkuZW5naW5lXG4gICAgICB0aGlzLmVuZ2luZSA9XG4gICAgICAgIGluc3RhbmNlRW5naW5lICYmIGluc3RhbmNlRW5naW5lLmVuZ2luZUZhbWlseSA9PT0gXCJNWVNRTFwiID8gXCJteXNxbFwiIDogXCJwb3N0Z3Jlc1wiXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZhbGxiYWNrIHRvIHBvc3RncmVzIGlmIGVuZ2luZSBoYXNuJ3QgYmVlbiBwcm92aWRlZFxuICAgICAgdGhpcy5lbmdpbmUgPSBcInBvc3RncmVzXCJcbiAgICB9XG5cbiAgICBjb25zdCBmdW5jdGlvbk5hbWUgPSBcIlJkc1NxbFwiICsgc2x1Z2lmeShcIjI4YjllNzkxLWFmNjAtNGEzMy1iY2E4LWZmYjZmMzBlZjhjNVwiKVxuICAgIHRoaXMuaGFuZGxlciA9XG4gICAgICAoU3RhY2sub2YodGhpcykubm9kZS50cnlGaW5kQ2hpbGQoZnVuY3Rpb25OYW1lKSBhcyBJRnVuY3Rpb24pID8/XG4gICAgICB0aGlzLm5ld0N1c3RvbVJlc291cmNlSGFuZGxlcihzY29wZSwgZnVuY3Rpb25OYW1lLCBwcm9wcylcblxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IGN1c3RvbVJlc291cmNlcy5Qcm92aWRlcih0aGlzLCBcIlJkc1NxbFwiLCB7XG4gICAgICBvbkV2ZW50SGFuZGxlcjogdGhpcy5oYW5kbGVyLFxuICAgIH0pXG4gICAgdGhpcy5zZXJ2aWNlVG9rZW4gPSBwcm92aWRlci5zZXJ2aWNlVG9rZW5cbiAgICB0aGlzLnNlY3JldC5ncmFudFJlYWQodGhpcy5oYW5kbGVyKVxuICAgIGlmICh0aGlzLnNlY3JldC5lbmNyeXB0aW9uS2V5KSB7XG4gICAgICAvLyBJdCBzZWVtcyB3ZSBuZWVkIHRvIGdyYW50IGV4cGxpY2l0IHBlcm1pc3Npb25cbiAgICAgIHRoaXMuc2VjcmV0LmVuY3J5cHRpb25LZXkuZ3JhbnREZWNyeXB0KHRoaXMuaGFuZGxlcilcbiAgICB9XG4gICAgaWYgKHByb3BzLmNsdXN0ZXIuY29ubmVjdGlvbnMuc2VjdXJpdHlHcm91cHMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDbHVzdGVyIGRvZXMgbm90IGhhdmUgYSBzZWN1cml0eSBncm91cC5cIilcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2VjdXJpdHlHcm91cCA9IHByb3BzLmNsdXN0ZXIuY29ubmVjdGlvbnMuc2VjdXJpdHlHcm91cHNbMF0hXG4gICAgICB0aGlzLmhhbmRsZXIubm9kZS5kZWZhdWx0Q2hpbGQ/Lm5vZGUuYWRkRGVwZW5kZW5jeShzZWN1cml0eUdyb3VwKVxuICAgIH1cbiAgICB0aGlzLm5vZGUuYWRkRGVwZW5kZW5jeShwcm9wcy5jbHVzdGVyKVxuICB9XG5cbiAgcHJvdGVjdGVkIG5ld0N1c3RvbVJlc291cmNlSGFuZGxlcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFJkc1NxbFByb3BzXG4gICk6IGxhbWJkYS5Ob2RlanNGdW5jdGlvbiB7XG4gICAgY29uc3QgaGFuZGxlckRpciA9IHBhdGguam9pbihfX2Rpcm5hbWUsIFwiaGFuZGxlclwiKVxuICAgIGNvbnN0IGluZGV4X3RzID0gcGF0aC5qb2luKGhhbmRsZXJEaXIsIFwiaW5kZXgudHNcIilcbiAgICBjb25zdCBpbmRleF9qcyA9IHBhdGguam9pbihoYW5kbGVyRGlyLCBcImluZGV4LmpzXCIpXG4gICAgbGV0IGVudHJ5OiBzdHJpbmdcblxuICAgIGlmIChleGlzdHNTeW5jKGluZGV4X3RzKSkge1xuICAgICAgZW50cnkgPSBpbmRleF90c1xuICAgIH0gZWxzZSBpZiAoZXhpc3RzU3luYyhpbmRleF9qcykpIHtcbiAgICAgIGVudHJ5ID0gaW5kZXhfanNcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVWdseSBoYWNrIHRvIHN1cHBvcnQgU1NUIChwb3NzaWJseSBjYXVzZWQgYnkgbXkgaGFjayB0byBtYWtlIFNTVCB3b3JrIHdpdGggQ29tbW9uSlMgbGlicmFyaWVzKVxuICAgICAgZW50cnkgPSBwYXRoLmpvaW4oXG4gICAgICAgIHBhdGguZGlybmFtZShwcm9jZXNzLmVudi5ucG1fcGFja2FnZV9qc29uIHx8IHByb2Nlc3MuY3dkKCkpLFxuICAgICAgICBcIm5vZGVfbW9kdWxlcy9jZGstcmRzLXNxbC9saWIvaGFuZGxlci9pbmRleC5qc1wiXG4gICAgICApXG4gICAgfVxuICAgIGxldCBzc2xfb3B0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHVuZGVmaW5lZFxuICAgIGlmIChwcm9wcy5zc2wgIT09IHVuZGVmaW5lZCAmJiAhcHJvcHMuc3NsKSB7XG4gICAgICBzc2xfb3B0aW9ucyA9IHtcbiAgICAgICAgU1NMOiBKU09OLnN0cmluZ2lmeShwcm9wcy5zc2wpLFxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBsb2dnZXIgPSBwcm9wcy5sb2dnZXIgPz8gZmFsc2VcblxuICAgIGNvbnN0IGRlbGV0ZVBhcmFtZXRlclBvbGljeSA9IG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFtcInNzbTpEZWxldGVQYXJhbWV0ZXJcIl0sXG4gICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgYGFybjphd3M6c3NtOiR7U3RhY2sub2Yoc2NvcGUpLnJlZ2lvbn06JHtTdGFjay5vZihzY29wZSkuYWNjb3VudH06cGFyYW1ldGVyLypgLFxuICAgICAgXSxcbiAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgICAgICAgXCJzc206UmVzb3VyY2VUYWcvY3JlYXRlZC1ieVwiOiBcImNkay1yZHMtc3FsXCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pXG5cbiAgICBjb25zdCBmbiA9IG5ldyBsYW1iZGEuTm9kZWpzRnVuY3Rpb24oc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcy5mdW5jdGlvblByb3BzLFxuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiBwcm9wcy52cGNTdWJuZXRzID8/IHtcbiAgICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QUklWQVRFX0lTT0xBVEVELFxuICAgICAgfSxcbiAgICAgIGVudHJ5OiBlbnRyeSxcbiAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuTk9ERUpTXzIyX1gsXG4gICAgICB0aW1lb3V0OiBwcm9wcy50aW1lb3V0ID8/IHByb3BzLmZ1bmN0aW9uUHJvcHM/LnRpbWVvdXQgPz8gRHVyYXRpb24uc2Vjb25kcygzMDApLFxuICAgICAgYnVuZGxpbmc6IHtcbiAgICAgICAgLy8gSW5jbHVkZSB0aGUgbWlncmF0aW9ucyBkaXJlY3RvcnkgaW4gdGhlIGJ1bmRsZVxuICAgICAgICBjb21tYW5kSG9va3M6IHtcbiAgICAgICAgICBiZWZvcmVCdW5kbGluZyhfOiBzdHJpbmcsIG91dHB1dERpcjogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgYGN1cmwgLS1zaWxlbnQgLWZMIGh0dHBzOi8vdHJ1c3RzdG9yZS5wa2kucmRzLmFtYXpvbmF3cy5jb20vZ2xvYmFsL2dsb2JhbC1idW5kbGUucGVtIC1vICR7cGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG91dHB1dERpcixcbiAgICAgICAgICAgICAgICBcImdsb2JhbC1idW5kbGUucGVtXCJcbiAgICAgICAgICAgICAgKX1gLFxuICAgICAgICAgICAgXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgYWZ0ZXJCdW5kbGluZygpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgICB9LFxuICAgICAgICAgIGJlZm9yZUluc3RhbGwoKTogc3RyaW5nW10ge1xuICAgICAgICAgICAgcmV0dXJuIFtdXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBMT0dHRVI6IGxvZ2dlci50b1N0cmluZygpLFxuICAgICAgICAuLi5zc2xfb3B0aW9ucyxcbiAgICAgIH0sXG4gICAgICBpbml0aWFsUG9saWN5OiBbXG4gICAgICAgIGRlbGV0ZVBhcmFtZXRlclBvbGljeSxcbiAgICAgICAgLi4uKHByb3BzLmZ1bmN0aW9uUHJvcHM/LmluaXRpYWxQb2xpY3kgPz8gW10pLFxuICAgICAgXSxcbiAgICB9KVxuXG4gICAgaWYgKFxuICAgICAgIXByb3BzLmZ1bmN0aW9uUHJvcHM/LnNlY3VyaXR5R3JvdXBzIHx8XG4gICAgICBwcm9wcy5mdW5jdGlvblByb3BzPy5zZWN1cml0eUdyb3Vwcy5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIHByb3BzLmNsdXN0ZXIuY29ubmVjdGlvbnMuYWxsb3dEZWZhdWx0UG9ydEZyb20oXG4gICAgICAgIGZuLFxuICAgICAgICBcIkFsbG93IHRoZSByZHMgc3FsIGhhbmRsZXIgdG8gY29ubmVjdCB0byBkYlwiXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIGZuXG4gIH1cbn1cblxuZnVuY3Rpb24gc2x1Z2lmeSh4OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4geC5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgXCJcIilcbn1cbiJdfQ==
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQkFBK0I7QUFDL0IsNkJBQTRCO0FBQzVCLDZDQUE2QztBQUM3Qyw2Q0FBNEM7QUFDNUMsaURBQXVFO0FBQ3ZFLDJDQUEwQztBQUMxQyx1REFBMkQ7QUFDM0Qsd0RBQXVEO0FBSXZELGdFQUErRDtBQUMvRCwyQ0FBc0M7QUFFdEM7O0dBRUc7QUFDSCxTQUFTLGFBQWEsQ0FDcEIsT0FBK0Q7SUFFL0QsT0FBTyxPQUFPLFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQTtBQUMzQyxDQUFDO0FBd0VELE1BQWEsUUFBUyxTQUFRLHNCQUFTO0lBYXJDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQix5QkFBeUI7UUFDekIsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUMzQyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdCLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkVBQTJFLENBQzVFLENBQUE7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUE7UUFDbEUsQ0FBQztRQUNELElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksS0FBSyxDQUNiLGlGQUFpRixDQUNsRixDQUFBO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQTtRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUss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RSxVQUFVLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUN6QyxFQUFFLEVBQ0YsNENBQTRDLENBQzdDLENBQUE7UUFDSCxDQUFDO1FBRUQsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDOztBQTNNSCw0QkE0TUM7OztBQUVELFNBQVMsT0FBTyxDQUFDLENBQVM7SUFDeEIsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUN2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYyB9IGZyb20gXCJmc1wiXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IER1cmF0aW9uLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgKiBhcyBkc3FsIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZHNxbFwiXG5pbXBvcnQgeyBJVnBjLCBTdWJuZXRUeXBlLCBTdWJuZXRTZWxlY3Rpb24gfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIlxuaW1wb3J0IHsgSUZ1bmN0aW9uLCBSdW50aW1lIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIlxuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqc1wiXG5pbXBvcnQgeyBOb2RlanNGdW5jdGlvblByb3BzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGEtbm9kZWpzXCJcbmltcG9ydCB7IElEYXRhYmFzZUNsdXN0ZXIsIElEYXRhYmFzZUluc3RhbmNlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIlxuaW1wb3J0IHsgSVNlY3JldCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIlxuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCJcblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGEgY2x1c3RlciBpcyBhIERTUUwgY2x1c3RlclxuICovXG5mdW5jdGlvbiBpc0RzcWxDbHVzdGVyKFxuICBjbHVzdGVyOiBJRGF0YWJhc2VDbHVzdGVyIHwgSURhdGFiYXNlSW5zdGFuY2UgfCBkc3FsLkNmbkNsdXN0ZXJcbik6IGNsdXN0ZXIgaXMgZHNxbC5DZm5DbHVzdGVyIHtcbiAgcmV0dXJuIGNsdXN0ZXIgaW5zdGFuY2VvZiBkc3FsLkNmbkNsdXN0ZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZHNTcWxQcm9wcyB7XG4gIC8qKlxuICAgKiBWUEMgbmV0d29yayB0byBwbGFjZSB0aGUgcHJvdmlkZXIgbGFtYmRhLlxuICAgKlxuICAgKiBOb3JtYWxseSB0aGlzIGlzIHRoZSBWUEMgb2YgeW91ciBkYXRhYmFzZS5cbiAgICogUmVxdWlyZWQgd2hlbiB5b3VyIGRhdGFiYXNlIGlzIG9ubHkgYWNjZXNzaWJsZSBpbiBhIFZQQy5cbiAgICogTm90IHJlcXVpcmVkIGZvciBEU1FMIGFzIGl0IHVzZXMgcHVibGljIGVuZHBvaW50cyB3aXRoIElBTSBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBGdW5jdGlvbiBpcyBub3QgcGxhY2VkIHdpdGhpbiBhIFZQQy5cbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IElWcGNcblxuICAvKipcbiAgICogV2hlcmUgdG8gcGxhY2UgdGhlIG5ldHdvcmsgcHJvdmlkZXIgbGFtYmRhIHdpdGhpbiB0aGUgVlBDLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBpc29sYXRlZCBzdWJuZXQgaWYgbm90IHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgdnBjU3VibmV0cz86IFN1Ym5ldFNlbGVjdGlvblxuXG4gIC8qKlxuICAgKiBZb3VyIGRhdGFiYXNlIGNsdXN0ZXIgb3IgaW5zdGFuY2UuXG4gICAqIFN1cHBvcnRzIGJvdGggdHJhZGl0aW9uYWwgUkRTL0F1cm9yYSBjbHVzdGVycyBhbmQgRFNRTCBjbHVzdGVycy5cbiAgICogLSBGb3IgUkRTL0F1cm9yYTogc2VjdXJpdHkgZ3JvdXBzIHdpbGwgYmUgY29uZmlndXJlZCB0byBhbGxvdyBhY2Nlc3NcbiAgICogLSBGb3IgRFNRTDogSUFNIGF1dGhlbnRpY2F0aW9uIHdpbGwgYmUgdXNlZCBpbnN0ZWFkIG9mIHNlY3JldHNcbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXI6IElEYXRhYmFzZUNsdXN0ZXIgfCBJRGF0YWJhc2VJbnN0YW5jZSB8IGRzcWwuQ2ZuQ2x1c3RlclxuXG4gIC8qKlxuICAgKiBTZWNyZXQgdGhhdCBncmFudHMgYWNjZXNzIHRvIHlvdXIgZGF0YWJhc2UuXG4gICAqXG4gICAqIFVzdWFsbHkgdGhpcyBpcyB5b3VyIGNsdXN0ZXIncyBtYXN0ZXIgc2VjcmV0LlxuICAgKiBOb3QgcmVxdWlyZWQgd2hlbiByZWx5aW5nIG9uIElBTSBhdXRoZW50aWNhdGlvbiAoc3VjaCBhcyBEU1FMKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1bmRlZmluZWQgZm9yIERTUUwgY2x1c3RlcnMgdXNpbmcgSUFNIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICByZWFkb25seSBzZWNyZXQ/OiBJU2VjcmV0XG5cbiAgLyoqXG4gICAqIFRpbWVvdXQgZm9yIGxhbWJkYSB0byBkbyBpdHMgd29yay5cbiAgICpcbiAgICogQGRlZmF1bHQgLSA1IG1pbnV0ZXNcbiAgICovXG4gIHJlYWRvbmx5IHRpbWVvdXQ/OiBEdXJhdGlvblxuXG4gIC8qKlxuICAgKiBMb2cgU1FMIHN0YXRlbWVudHMuIFRoaXMgaW5jbHVkZXMgcGFzc3dvcmRzLiBVc2Ugb25seSBmb3IgZGVidWdnaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBsb2dnZXI/OiBib29sZWFuXG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZnVuY3Rpb24gY3VzdG9taXphdGlvbi5cbiAgICpcbiAgICogVGhpcyBlbmFibGVzIGFkZGl0aW9uYWwgZnVuY3Rpb24gY3VzdG9taXphdGlvbiBzdWNoIGFzIHRoZSBsb2cgZ3JvdXAuIEhvd2V2ZXIsXG4gICAqIGxhbWJkYSBmdW5jdGlvbiBwcm9wZXJ0aWVzIGNvbnRyb2xsZWQgYnkgb3RoZXIge1Jkc1NxbFByb3BzfSBwYXJhbWV0ZXJzIHdpbGwgdHJ1bXBcbiAgICogb3Bpb25zIHNldCB2aWEgdGhpcyBwYXJhbWV0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZW1wdHlcbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uUHJvcHM/OiBOb2RlanNGdW5jdGlvblByb3BzXG5cbiAgLyoqXG4gICAqIFVzZSBTU0w/XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3NsPzogYm9vbGVhblxufVxuXG5leHBvcnQgY2xhc3MgUHJvdmlkZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZVRva2VuOiBzdHJpbmdcbiAgcHVibGljIHJlYWRvbmx5IHNlY3JldD86IElTZWNyZXRcbiAgcHVibGljIHJlYWRvbmx5IGhhbmRsZXI6IElGdW5jdGlvblxuICBwdWJsaWMgcmVhZG9ubHkgY2x1c3RlcjogSURhdGFiYXNlQ2x1c3RlciB8IElEYXRhYmFzZUluc3RhbmNlIHwgZHNxbC5DZm5DbHVzdGVyXG5cbiAgLyoqXG4gICAqIFRoZSBlbmdpbmUgbGlrZSBcInBvc3RncmVzXCIgb3IgXCJteXNxbFwiXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gaWYgd2UgY2Fubm90IGRldGVybWluZSB0aGlzIFwicG9zdGdyZXNcIlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGVuZ2luZTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJkc1NxbFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgLy8gVmFsaWRhdGUgY29uZmlndXJhdGlvblxuICAgIGNvbnN0IGlzRHNxbCA9IGlzRHNxbENsdXN0ZXIocHJvcHMuY2x1c3RlcilcbiAgICBpZiAoIWlzRHNxbCAmJiAhcHJvcHMuc2VjcmV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiRWl0aGVyIHNlY3JldCAoZm9yIHRyYWRpdGlvbmFsIFJEUykgb3IgY2x1c3RlciB3aXRoIERTUUwgbXVzdCBiZSBwcm92aWRlZFwiXG4gICAgICApXG4gICAgfVxuICAgIGlmICghaXNEc3FsICYmICFwcm9wcy52cGMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlZQQyBpcyByZXF1aXJlZCBmb3IgdHJhZGl0aW9uYWwgUkRTIGRhdGFiYXNlc1wiKVxuICAgIH1cbiAgICBpZiAoaXNEc3FsICYmIHByb3BzLnNlY3JldCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcInNlY3JldCBzaG91bGQgbm90IGJlIHByb3ZpZGVkIHdoZW4gdXNpbmcgRFNRTCBjbHVzdGVyICh1c2VzIElBTSBhdXRoZW50aWNhdGlvbilcIlxuICAgICAgKVxuICAgIH1cblxuICAgIHRoaXMuc2VjcmV0ID0gcHJvcHMuc2VjcmV0XG4gICAgdGhpcy5jbHVzdGVyID0gcHJvcHMuY2x1c3RlclxuXG4gICAgLy8gRGV0ZXJtaW5lIGVuZ2luZSBmcm9tIGNsdXN0ZXIvaW5zdGFuY2UgaW5zdGVhZCBvZiBoYXJkY29kaW5nXG4gICAgaWYgKGlzRHNxbCkge1xuICAgICAgLy8gRFNRTCBpcyBhbHdheXMgUG9zdGdyZVNRTC1jb21wYXRpYmxlXG4gICAgICB0aGlzLmVuZ2luZSA9IFwiZHNxbFwiXG4gICAgfSBlbHNlIGlmIChcImNsdXN0ZXJJZGVudGlmaWVyXCIgaW4gcHJvcHMuY2x1c3Rlcikge1xuICAgICAgLy8gSXQncyBhIERhdGFiYXNlQ2x1c3RlclxuICAgICAgY29uc3QgY2x1c3RlckVuZ2luZSA9IChwcm9wcy5jbHVzdGVyIGFzIElEYXRhYmFzZUNsdXN0ZXIpLmVuZ2luZVxuICAgICAgdGhpcy5lbmdpbmUgPVxuICAgICAgICBjbHVzdGVyRW5naW5lICYmIGNsdXN0ZXJFbmdpbmUuZW5naW5lRmFtaWx5ID09PSBcIk1ZU1FMXCIgPyBcIm15c3FsXCIgOiBcInBvc3RncmVzXCJcbiAgICB9IGVsc2UgaWYgKFwiaW5zdGFuY2VJZGVudGlmaWVyXCIgaW4gcHJvcHMuY2x1c3Rlcikge1xuICAgICAgLy8gSXQncyBhIERhdGFiYXNlSW5zdGFuY2VcbiAgICAgIGNvbnN0IGluc3RhbmNlRW5naW5lID0gKHByb3BzLmNsdXN0ZXIgYXMgSURhdGFiYXNlSW5zdGFuY2UpLmVuZ2luZVxuICAgICAgdGhpcy5lbmdpbmUgPVxuICAgICAgICBpbnN0YW5jZUVuZ2luZSAmJiBpbnN0YW5jZUVuZ2luZS5lbmdpbmVGYW1pbHkgPT09IFwiTVlTUUxcIiA/IFwibXlzcWxcIiA6IFwicG9zdGdyZXNcIlxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGYWxsYmFjayB0byBwb3N0Z3JlcyBpZiBlbmdpbmUgaGFzbid0IGJlZW4gcHJvdmlkZWRcbiAgICAgIHRoaXMuZW5naW5lID0gXCJwb3N0Z3Jlc1wiXG4gICAgfVxuXG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gXCJSZHNTcWxcIiArIHNsdWdpZnkoXCIyOGI5ZTc5MS1hZjYwLTRhMzMtYmNhOC1mZmI2ZjMwZWY4YzVcIilcbiAgICB0aGlzLmhhbmRsZXIgPVxuICAgICAgKFN0YWNrLm9mKHRoaXMpLm5vZGUudHJ5RmluZENoaWxkKGZ1bmN0aW9uTmFtZSkgYXMgSUZ1bmN0aW9uKSA/P1xuICAgICAgdGhpcy5uZXdDdXN0b21SZXNvdXJjZUhhbmRsZXIoc2NvcGUsIGZ1bmN0aW9uTmFtZSwgcHJvcHMpXG5cbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBjdXN0b21SZXNvdXJjZXMuUHJvdmlkZXIodGhpcywgXCJSZHNTcWxcIiwge1xuICAgICAgb25FdmVudEhhbmRsZXI6IHRoaXMuaGFuZGxlcixcbiAgICB9KVxuICAgIHRoaXMuc2VydmljZVRva2VuID0gcHJvdmlkZXIuc2VydmljZVRva2VuXG5cbiAgICAvLyBIYW5kbGUgZGF0YWJhc2UgY29ubmVjdGlvbiBzZXR1cFxuICAgIGlmIChpc0RzcWwpIHtcbiAgICAgIC8vIEZvciBEU1FMLCBncmFudCBJQU0gcGVybWlzc2lvbnMgaW5zdGVhZCBvZiBWUEMgc2VjdXJpdHkgZ3JvdXBzXG4gICAgICBjb25zdCBkc3FsQ2x1c3RlciA9IHByb3BzLmNsdXN0ZXIgYXMgZHNxbC5DZm5DbHVzdGVyXG4gICAgICB0aGlzLmhhbmRsZXIuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFtcImRzcWw6RGJDb25uZWN0QWRtaW5cIl0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbZHNxbENsdXN0ZXIuYXR0clJlc291cmNlQXJuXSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVHJhZGl0aW9uYWwgUkRTIHNldHVwIHdpdGggc2VjdXJpdHkgZ3JvdXBzIGFuZCBzZWNyZXRzXG4gICAgICB0aGlzLnNlY3JldCEuZ3JhbnRSZWFkKHRoaXMuaGFuZGxlcilcbiAgICAgIGlmICh0aGlzLnNlY3JldCEuZW5jcnlwdGlvbktleSkge1xuICAgICAgICAvLyBJdCBzZWVtcyB3ZSBuZWVkIHRvIGdyYW50IGV4cGxpY2l0IHBlcm1pc3Npb25cbiAgICAgICAgdGhpcy5zZWNyZXQhLmVuY3J5cHRpb25LZXkuZ3JhbnREZWNyeXB0KHRoaXMuaGFuZGxlcilcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5jbHVzdGVyLmNvbm5lY3Rpb25zLnNlY3VyaXR5R3JvdXBzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDbHVzdGVyIGRvZXMgbm90IGhhdmUgYSBzZWN1cml0eSBncm91cC5cIilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNlY3VyaXR5R3JvdXAgPSBwcm9wcy5jbHVzdGVyLmNvbm5lY3Rpb25zLnNlY3VyaXR5R3JvdXBzWzBdIVxuICAgICAgICB0aGlzLmhhbmRsZXIubm9kZS5kZWZhdWx0Q2hpbGQ/Lm5vZGUuYWRkRGVwZW5kZW5jeShzZWN1cml0eUdyb3VwKVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm5vZGUuYWRkRGVwZW5kZW5jeShwcm9wcy5jbHVzdGVyKVxuICB9XG5cbiAgcHJvdGVjdGVkIG5ld0N1c3RvbVJlc291cmNlSGFuZGxlcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IFJkc1NxbFByb3BzXG4gICk6IGxhbWJkYS5Ob2RlanNGdW5jdGlvbiB7XG4gICAgY29uc3QgaXNEc3FsID0gaXNEc3FsQ2x1c3Rlcihwcm9wcy5jbHVzdGVyKVxuICAgIGNvbnN0IGhhbmRsZXJEaXIgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCBcImhhbmRsZXJcIilcbiAgICBjb25zdCBpbmRleF90cyA9IHBhdGguam9pbihoYW5kbGVyRGlyLCBcImluZGV4LnRzXCIpXG4gICAgY29uc3QgaW5kZXhfanMgPSBwYXRoLmpvaW4oaGFuZGxlckRpciwgXCJpbmRleC5qc1wiKVxuICAgIGxldCBlbnRyeTogc3RyaW5nXG5cbiAgICBpZiAoZXhpc3RzU3luYyhpbmRleF90cykpIHtcbiAgICAgIGVudHJ5ID0gaW5kZXhfdHNcbiAgICB9IGVsc2UgaWYgKGV4aXN0c1N5bmMoaW5kZXhfanMpKSB7XG4gICAgICBlbnRyeSA9IGluZGV4X2pzXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVnbHkgaGFjayB0byBzdXBwb3J0IFNTVCAocG9zc2libHkgY2F1c2VkIGJ5IG15IGhhY2sgdG8gbWFrZSBTU1Qgd29yayB3aXRoIENvbW1vbkpTIGxpYnJhcmllcylcbiAgICAgIGVudHJ5ID0gcGF0aC5qb2luKFxuICAgICAgICBwYXRoLmRpcm5hbWUocHJvY2Vzcy5lbnYubnBtX3BhY2thZ2VfanNvbiB8fCBwcm9jZXNzLmN3ZCgpKSxcbiAgICAgICAgXCJub2RlX21vZHVsZXMvY2RrLXJkcy1zcWwvbGliL2hhbmRsZXIvaW5kZXguanNcIlxuICAgICAgKVxuICAgIH1cbiAgICBsZXQgc3NsX29wdGlvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCB1bmRlZmluZWRcbiAgICBpZiAocHJvcHMuc3NsICE9PSB1bmRlZmluZWQgJiYgIXByb3BzLnNzbCkge1xuICAgICAgc3NsX29wdGlvbnMgPSB7XG4gICAgICAgIFNTTDogSlNPTi5zdHJpbmdpZnkocHJvcHMuc3NsKSxcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgbG9nZ2VyID0gcHJvcHMubG9nZ2VyID8/IGZhbHNlXG5cbiAgICAvLyBCdWlsZCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICBjb25zdCBlbnZpcm9ubWVudDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIExPR0dFUjogbG9nZ2VyLnRvU3RyaW5nKCksXG4gICAgICAuLi5zc2xfb3B0aW9ucyxcbiAgICB9XG5cbiAgICAvLyBBZGQgRFNRTC1zcGVjaWZpYyBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICBpZiAoaXNEc3FsKSB7XG4gICAgICBjb25zdCBkc3FsQ2x1c3RlciA9IHByb3BzLmNsdXN0ZXIgYXMgZHNxbC5DZm5DbHVzdGVyXG4gICAgICBjb25zdCBjbHVzdGVySWQgPSBkc3FsQ2x1c3Rlci5hdHRySWRlbnRpZmllclxuICAgICAgY29uc3QgcmVnaW9uID0gU3RhY2sub2Yoc2NvcGUpLnJlZ2lvblxuICAgICAgZW52aXJvbm1lbnQuRFNRTF9FTkRQT0lOVCA9IGAke2NsdXN0ZXJJZH0uZHNxbC4ke3JlZ2lvbn0ub24uYXdzYFxuICAgICAgZW52aXJvbm1lbnQuRFNRTF9QT1JUID0gXCI1NDMyXCJcbiAgICB9XG5cbiAgICBjb25zdCBkZWxldGVQYXJhbWV0ZXJQb2xpY3kgPSBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbXCJzc206RGVsZXRlUGFyYW1ldGVyXCJdLFxuICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgIGBhcm46YXdzOnNzbToke1N0YWNrLm9mKHNjb3BlKS5yZWdpb259OiR7U3RhY2sub2Yoc2NvcGUpLmFjY291bnR9OnBhcmFtZXRlci8qYCxcbiAgICAgIF0sXG4gICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgIFwic3NtOlJlc291cmNlVGFnL2NyZWF0ZWQtYnlcIjogXCJjZGstcmRzLXNxbFwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgY29uc3QgZm4gPSBuZXcgbGFtYmRhLk5vZGVqc0Z1bmN0aW9uKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMuZnVuY3Rpb25Qcm9wcyxcbiAgICAgIC8vIE9ubHkgY29uZmlndXJlIFZQQyBmb3IgdHJhZGl0aW9uYWwgUkRTXG4gICAgICAuLi4oaXNEc3FsXG4gICAgICAgID8ge31cbiAgICAgICAgOiB7XG4gICAgICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgICAgIHZwY1N1Ym5ldHM6IHByb3BzLnZwY1N1Ym5ldHMgPz8ge1xuICAgICAgICAgICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURUQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgZW50cnk6IGVudHJ5LFxuICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfMjJfWCxcbiAgICAgIHRpbWVvdXQ6IHByb3BzLnRpbWVvdXQgPz8gcHJvcHMuZnVuY3Rpb25Qcm9wcz8udGltZW91dCA/PyBEdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgICBidW5kbGluZzoge1xuICAgICAgICAvLyBJbmNsdWRlIHRoZSBtaWdyYXRpb25zIGRpcmVjdG9yeSBpbiB0aGUgYnVuZGxlXG4gICAgICAgIGNvbW1hbmRIb29rczoge1xuICAgICAgICAgIGJlZm9yZUJ1bmRsaW5nKF86IHN0cmluZywgb3V0cHV0RGlyOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBgY3VybCAtLXNpbGVudCAtZkwgaHR0cHM6Ly90cnVzdHN0b3JlLnBraS5yZHMuYW1hem9uYXdzLmNvbS9nbG9iYWwvZ2xvYmFsLWJ1bmRsZS5wZW0gLW8gJHtwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3V0cHV0RGlyLFxuICAgICAgICAgICAgICAgIFwiZ2xvYmFsLWJ1bmRsZS5wZW1cIlxuICAgICAgICAgICAgICApfWAsXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhZnRlckJ1bmRsaW5nKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgICAgIHJldHVybiBbXVxuICAgICAgICAgIH0sXG4gICAgICAgICAgYmVmb3JlSW5zdGFsbCgpOiBzdHJpbmdbXSB7XG4gICAgICAgICAgICByZXR1cm4gW11cbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGVudmlyb25tZW50LFxuICAgICAgaW5pdGlhbFBvbGljeTogW1xuICAgICAgICBkZWxldGVQYXJhbWV0ZXJQb2xpY3ksXG4gICAgICAgIC4uLihwcm9wcy5mdW5jdGlvblByb3BzPy5pbml0aWFsUG9saWN5ID8/IFtdKSxcbiAgICAgIF0sXG4gICAgfSlcblxuICAgIC8vIE9ubHkgY29uZmlndXJlIHNlY3VyaXR5IGdyb3VwcyBmb3IgdHJhZGl0aW9uYWwgUkRTIChub3QgRFNRTClcbiAgICBpZiAoXG4gICAgICAhaXNEc3FsICYmXG4gICAgICAoIXByb3BzLmZ1bmN0aW9uUHJvcHM/LnNlY3VyaXR5R3JvdXBzIHx8XG4gICAgICAgIHByb3BzLmZ1bmN0aW9uUHJvcHM/LnNlY3VyaXR5R3JvdXBzLmxlbmd0aCA9PT0gMClcbiAgICApIHtcbiAgICAgIGNvbnN0IHJkc0NsdXN0ZXIgPSBwcm9wcy5jbHVzdGVyIGFzIElEYXRhYmFzZUNsdXN0ZXIgfCBJRGF0YWJhc2VJbnN0YW5jZVxuICAgICAgcmRzQ2x1c3Rlci5jb25uZWN0aW9ucy5hbGxvd0RlZmF1bHRQb3J0RnJvbShcbiAgICAgICAgZm4sXG4gICAgICAgIFwiQWxsb3cgdGhlIHJkcyBzcWwgaGFuZGxlciB0byBjb25uZWN0IHRvIGRiXCJcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gZm5cbiAgfVxufVxuXG5mdW5jdGlvbiBzbHVnaWZ5KHg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB4LnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCBcIlwiKVxufVxuIl19
|
|
@@ -13,7 +13,7 @@ class Role extends aws_cdk_lib_1.CustomResource {
|
|
|
13
13
|
properties: {
|
|
14
14
|
Resource: enum_1.RdsSqlResource.ROLE,
|
|
15
15
|
ResourceId: props.roleName,
|
|
16
|
-
SecretArn: props.provider.secret.secretArn,
|
|
16
|
+
...(props.provider.secret ? { SecretArn: props.provider.secret.secretArn } : {}),
|
|
17
17
|
PasswordArn: props.passwordArn,
|
|
18
18
|
DatabaseName: props.database ? props.database.databaseName : props.databaseName,
|
|
19
19
|
EnableIamAuth: props.enableIamAuth,
|
|
@@ -25,4 +25,4 @@ class Role extends aws_cdk_lib_1.CustomResource {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
exports.Role = Role;
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5jdXN0b20tcmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcm9sZS5jdXN0b20tcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTRDO0FBRzVDLGlDQUF1QztBQStDdkMsTUFBYSxJQUFLLFNBQVEsNEJBQWM7SUFDdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFnQjtRQUN4RCxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pDLE1BQU0seUNBQXlDLENBQUE7UUFDakQsQ0FBQztRQUNELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsWUFBWSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWTtZQUN6QyxVQUFVLEVBQUU7Z0JBQ1YsUUFBUSxFQUFFLHFCQUFjLENBQUMsSUFBSTtnQkFDN0IsVUFBVSxFQUFFLEtBQUssQ0FBQyxRQUFRO2dCQUMxQixHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hGLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsWUFBWSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWTtnQkFDL0UsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO2FBQ25DO1NBQ0YsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3ZDLElBQUksS0FBSyxDQUFDLFFBQVE7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDN0QsQ0FBQztDQUNGO0FBbkJELG9CQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1c3RvbVJlc291cmNlIH0gZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCB7IElEYXRhYmFzZSB9IGZyb20gXCIuL2RhdGFiYXNlXCJcbmltcG9ydCB7IFJkc1NxbFJlc291cmNlIH0gZnJvbSBcIi4vZW51bVwiXG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCIuL3Byb3ZpZGVyXCJcblxuZXhwb3J0IGludGVyZmFjZSBSb2xlUHJvcHMge1xuICAvKipcbiAgICogUHJvdmlkZXIuXG4gICAqL1xuICByZWFkb25seSBwcm92aWRlcjogUHJvdmlkZXJcblxuICAvKipcbiAgICogU1FMLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZU5hbWU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBBIG5ldyBzZWNyZXQgaXMgY3JlYXRlZCBmb3IgdGhpcyB1c2VyLlxuICAgKlxuICAgKiBPcHRpb25hbGx5IGVuY3J5cHQgaXQgd2l0aCB0aGUgZ2l2ZW4ga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkgcGFzc3dvcmRBcm46IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkYXRhYmFzZSB0aGlzIHVzZXIgaXMgZXhwZWN0ZWQgdG8gdXNlLlxuICAgKlxuICAgKiBTcGVjaWZ5IG5vbmUgb2YgYGRhdGFiYXNlYCBvciBgZGF0YWJhc2VOYW1lYCBvciBvbmx5IG9uZSBvZiB0aGVtLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBjb25uZWN0aW9uIHRvIGFueSBkYXRhYmFzZSBpcyBncmFudGVkXG4gICAqL1xuICByZWFkb25seSBkYXRhYmFzZT86IElEYXRhYmFzZVxuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkYXRhYmFzZSBuYW1lIHRoaXMgdXNlciBpcyBleHBlY3RlZCB0byB1c2UuXG4gICAqXG4gICAqIFNwZWNpZnkgbm9uZSBvZiBgZGF0YWJhc2VgIG9yIGBkYXRhYmFzZU5hbWVgIG9yIG9ubHkgb25lIG9mIHRoZW0uXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGNvbm5lY3Rpb24gdG8gYW55IGRhdGFiYXNlIGlzIGdyYW50ZWRcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZT86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBFbmFibGUgSUFNIGF1dGhlbnRpY2F0aW9uIGZvciB0aGlzIHJvbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlIC0gdXNlIHBhc3N3b3JkIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICByZWFkb25seSBlbmFibGVJYW1BdXRoPzogYm9vbGVhblxufVxuXG5leHBvcnQgY2xhc3MgUm9sZSBleHRlbmRzIEN1c3RvbVJlc291cmNlIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJvbGVQcm9wcykge1xuICAgIGlmIChwcm9wcy5kYXRhYmFzZSAmJiBwcm9wcy5kYXRhYmFzZU5hbWUpIHtcbiAgICAgIHRocm93IFwiU3BlY2lmeSBlaXRoZXIgZGF0YWJhc2Ugb3IgZGF0YWJhc2VOYW1lXCJcbiAgICB9XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHByb3BzLnByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgUmVzb3VyY2U6IFJkc1NxbFJlc291cmNlLlJPTEUsXG4gICAgICAgIFJlc291cmNlSWQ6IHByb3BzLnJvbGVOYW1lLFxuICAgICAgICAuLi4ocHJvcHMucHJvdmlkZXIuc2VjcmV0ID8geyBTZWNyZXRBcm46IHByb3BzLnByb3ZpZGVyLnNlY3JldC5zZWNyZXRBcm4gfSA6IHt9KSxcbiAgICAgICAgUGFzc3dvcmRBcm46IHByb3BzLnBhc3N3b3JkQXJuLFxuICAgICAgICBEYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlID8gcHJvcHMuZGF0YWJhc2UuZGF0YWJhc2VOYW1lIDogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICBFbmFibGVJYW1BdXRoOiBwcm9wcy5lbmFibGVJYW1BdXRoLFxuICAgICAgfSxcbiAgICB9KVxuICAgIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHByb3BzLnByb3ZpZGVyKVxuICAgIGlmIChwcm9wcy5kYXRhYmFzZSkgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kocHJvcHMuZGF0YWJhc2UpXG4gIH1cbn1cbiJdfQ==
|
package/lib/role.d.ts
CHANGED
|
@@ -65,6 +65,9 @@ export interface RoleProps {
|
|
|
65
65
|
* configured for AWS IAM database authentication. The secret
|
|
66
66
|
* will not contain a password field.
|
|
67
67
|
*
|
|
68
|
+
* Note: For DSQL clusters, this property is ignored as DSQL always
|
|
69
|
+
* uses IAM authentication.
|
|
70
|
+
*
|
|
68
71
|
* @default false - use password authentication
|
|
69
72
|
*/
|
|
70
73
|
readonly enableIamAuth?: boolean;
|
|
@@ -76,7 +79,8 @@ export declare class Role extends Construct {
|
|
|
76
79
|
readonly roleName: string;
|
|
77
80
|
/**
|
|
78
81
|
* The generated secret.
|
|
82
|
+
* Only available for non-DSQL clusters as DSQL uses IAM authentication.
|
|
79
83
|
*/
|
|
80
|
-
readonly secret
|
|
84
|
+
readonly secret?: ISecret;
|
|
81
85
|
constructor(scope: Construct, id: string, props: RoleProps);
|
|
82
86
|
}
|