cdk-rds-sql 7.2.3 → 7.3.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/.claude/hooks/lint +37 -0
- package/.claude/settings.json +1 -1
- package/.jsii +8 -8
- package/.pre-commit-config.yaml +8 -0
- package/CLAUDE.md +3 -0
- package/lambda/engine.abstract.ts +4 -1
- package/lambda/engine.dsql.ts +106 -61
- package/lambda/engine.mysql.test.ts +2 -2
- package/lambda/engine.mysql.ts +1 -1
- package/lambda/engine.postgresql.ts +1 -1
- package/lambda/handler.ts +5 -5
- package/lib/database.js +1 -1
- package/lib/handler/handler.js +84 -51
- package/lib/iam-grant.d.ts +1 -0
- package/lib/iam-grant.js +14 -3
- package/lib/provider.js +1 -1
- package/lib/role.js +1 -1
- package/lib/schema.js +1 -1
- package/lib/sql.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -o errexit -o pipefail -o nounset
|
|
4
|
+
|
|
5
|
+
# Script claude should use for linting.
|
|
6
|
+
|
|
7
|
+
# Make sure we're in the root
|
|
8
|
+
if [ ! -z "${CLAUDE_PROJECT_DIR:-}" ]
|
|
9
|
+
then
|
|
10
|
+
cd $CLAUDE_PROJECT_DIR
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
# No file edited, leave
|
|
14
|
+
if [ ! -e ".claude/hooks/.edited" ]
|
|
15
|
+
then
|
|
16
|
+
exit 0
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
# Read hook input from stdin and check for stop_hook_active flag
|
|
20
|
+
if command -v jq >/dev/null 2>&1; then
|
|
21
|
+
input=$(cat)
|
|
22
|
+
stop_hook_active=$(echo "$input" | jq -r '.stop_hook_active // false')
|
|
23
|
+
if [ "$stop_hook_active" = "true" ]; then
|
|
24
|
+
exit 0
|
|
25
|
+
fi
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
format=$(npx projen eslint)
|
|
29
|
+
|
|
30
|
+
# Capture stdout and check exit code for the main linting command
|
|
31
|
+
if ! output=$(npx projen typecheck 2>&1); then
|
|
32
|
+
echo "$output" >&2
|
|
33
|
+
exit 2
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# We're done, remove .edited
|
|
37
|
+
rm .claude/hooks/.edited
|
package/.claude/settings.json
CHANGED
package/.jsii
CHANGED
|
@@ -4447,7 +4447,7 @@
|
|
|
4447
4447
|
},
|
|
4448
4448
|
"locationInModule": {
|
|
4449
4449
|
"filename": "src/iam-grant.ts",
|
|
4450
|
-
"line":
|
|
4450
|
+
"line": 34
|
|
4451
4451
|
},
|
|
4452
4452
|
"parameters": [
|
|
4453
4453
|
{
|
|
@@ -4473,7 +4473,7 @@
|
|
|
4473
4473
|
"kind": "class",
|
|
4474
4474
|
"locationInModule": {
|
|
4475
4475
|
"filename": "src/iam-grant.ts",
|
|
4476
|
-
"line":
|
|
4476
|
+
"line": 24
|
|
4477
4477
|
},
|
|
4478
4478
|
"name": "IamGrant",
|
|
4479
4479
|
"symbolId": "src/iam-grant:IamGrant"
|
|
@@ -4488,7 +4488,7 @@
|
|
|
4488
4488
|
"kind": "interface",
|
|
4489
4489
|
"locationInModule": {
|
|
4490
4490
|
"filename": "src/iam-grant.ts",
|
|
4491
|
-
"line":
|
|
4491
|
+
"line": 7
|
|
4492
4492
|
},
|
|
4493
4493
|
"name": "IamGrantProps",
|
|
4494
4494
|
"properties": [
|
|
@@ -4501,7 +4501,7 @@
|
|
|
4501
4501
|
"immutable": true,
|
|
4502
4502
|
"locationInModule": {
|
|
4503
4503
|
"filename": "src/iam-grant.ts",
|
|
4504
|
-
"line":
|
|
4504
|
+
"line": 11
|
|
4505
4505
|
},
|
|
4506
4506
|
"name": "provider",
|
|
4507
4507
|
"type": {
|
|
@@ -4517,7 +4517,7 @@
|
|
|
4517
4517
|
"immutable": true,
|
|
4518
4518
|
"locationInModule": {
|
|
4519
4519
|
"filename": "src/iam-grant.ts",
|
|
4520
|
-
"line":
|
|
4520
|
+
"line": 21
|
|
4521
4521
|
},
|
|
4522
4522
|
"name": "resourceArn",
|
|
4523
4523
|
"type": {
|
|
@@ -4533,7 +4533,7 @@
|
|
|
4533
4533
|
"immutable": true,
|
|
4534
4534
|
"locationInModule": {
|
|
4535
4535
|
"filename": "src/iam-grant.ts",
|
|
4536
|
-
"line":
|
|
4536
|
+
"line": 16
|
|
4537
4537
|
},
|
|
4538
4538
|
"name": "roleName",
|
|
4539
4539
|
"type": {
|
|
@@ -5594,6 +5594,6 @@
|
|
|
5594
5594
|
"symbolId": "src/sql:SqlProps"
|
|
5595
5595
|
}
|
|
5596
5596
|
},
|
|
5597
|
-
"version": "7.
|
|
5598
|
-
"fingerprint": "
|
|
5597
|
+
"version": "7.3.0",
|
|
5598
|
+
"fingerprint": "2ui58tECqN24bGWJrarg5OBFgO6a0ndTHOc1a/i7VuA="
|
|
5599
5599
|
}
|
package/.pre-commit-config.yaml
CHANGED
|
@@ -27,6 +27,14 @@ repos:
|
|
|
27
27
|
exclude: (.mergify.yml|.projen/|.github|tsconfig.dev.json|.gitignore|LICENSE|.gitattributes|.eslintrc.json)
|
|
28
28
|
stages:
|
|
29
29
|
- pre-commit
|
|
30
|
+
- repo: local
|
|
31
|
+
hooks:
|
|
32
|
+
- id: projen
|
|
33
|
+
name: run-projen
|
|
34
|
+
language: system
|
|
35
|
+
entry: sh -c 'npx projen'
|
|
36
|
+
files: \.ts$
|
|
37
|
+
pass_filenames: false
|
|
30
38
|
- repo: local
|
|
31
39
|
hooks:
|
|
32
40
|
- id: build-typescript
|
package/CLAUDE.md
CHANGED
|
@@ -51,7 +51,10 @@ export abstract class AbstractEngine {
|
|
|
51
51
|
props: EngineRoleProperties,
|
|
52
52
|
oldProps: EngineRoleProperties
|
|
53
53
|
): Promise<string | string[]>
|
|
54
|
-
abstract deleteRole(
|
|
54
|
+
abstract deleteRole(
|
|
55
|
+
resourceId: string,
|
|
56
|
+
props: EngineRoleProperties
|
|
57
|
+
): Promise<string | string[]>
|
|
55
58
|
|
|
56
59
|
abstract createSchema(
|
|
57
60
|
resourceId: string,
|
package/lambda/engine.dsql.ts
CHANGED
|
@@ -37,19 +37,7 @@ export class DsqlEngine extends AbstractEngine {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
async createRole(resourceId: string, props: EngineRoleProperties): Promise<string[]> {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
// DSQL always uses IAM authentication, no passwords
|
|
43
|
-
sql.push(pgFormat("CREATE ROLE %I WITH LOGIN", resourceId))
|
|
44
|
-
|
|
45
|
-
if (props?.DatabaseName) {
|
|
46
|
-
sql.push(
|
|
47
|
-
pgFormat("GRANT CONNECT ON DATABASE %I TO %I", props.DatabaseName, resourceId)
|
|
48
|
-
)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
sql.push("COMMIT")
|
|
52
|
-
return sql
|
|
40
|
+
return this.generateCreateRoleSql(resourceId, props?.DatabaseName)
|
|
53
41
|
}
|
|
54
42
|
|
|
55
43
|
async updateRole(
|
|
@@ -61,31 +49,26 @@ export class DsqlEngine extends AbstractEngine {
|
|
|
61
49
|
const sql: string[] = []
|
|
62
50
|
|
|
63
51
|
if (oldResourceId !== resourceId) {
|
|
64
|
-
// DSQL doesn't support RENAME, so we
|
|
65
|
-
//
|
|
52
|
+
// DSQL doesn't support RENAME, so we create new role and drop old one
|
|
53
|
+
// Create new role with old database permissions first
|
|
54
|
+
sql.push(...this.generateCreateRoleSql(resourceId, oldProps?.DatabaseName))
|
|
66
55
|
|
|
67
|
-
//
|
|
68
|
-
sql.push(
|
|
69
|
-
|
|
56
|
+
// Add special marker for IAM grant revocation
|
|
57
|
+
sql.push(`-- REVOKE_IAM_GRANTS_FOR_ROLE: ${oldResourceId}`)
|
|
58
|
+
|
|
59
|
+
// Drop old role
|
|
60
|
+
sql.push(...this.generateDropRoleSql(oldResourceId))
|
|
70
61
|
|
|
71
|
-
//
|
|
72
|
-
if (oldProps?.DatabaseName) {
|
|
62
|
+
// If database changed as well, grant new database permissions
|
|
63
|
+
if (props?.DatabaseName && props.DatabaseName !== oldProps?.DatabaseName) {
|
|
64
|
+
sql.push("BEGIN")
|
|
73
65
|
sql.push(
|
|
74
|
-
pgFormat(
|
|
75
|
-
"GRANT CONNECT ON DATABASE %I TO %I",
|
|
76
|
-
oldProps.DatabaseName,
|
|
77
|
-
resourceId
|
|
78
|
-
)
|
|
66
|
+
pgFormat("GRANT CONNECT ON DATABASE %I TO %I", props.DatabaseName, resourceId)
|
|
79
67
|
)
|
|
68
|
+
sql.push("COMMIT")
|
|
80
69
|
}
|
|
81
|
-
sql.push("COMMIT")
|
|
82
|
-
|
|
83
|
-
// Second transaction: Drop the old role
|
|
84
|
-
sql.push("BEGIN")
|
|
85
|
-
sql.push(pgFormat("DROP ROLE IF EXISTS %I", oldResourceId))
|
|
86
|
-
sql.push("COMMIT")
|
|
87
70
|
} else {
|
|
88
|
-
//
|
|
71
|
+
// Only permissions are changing (no rename)
|
|
89
72
|
sql.push("BEGIN")
|
|
90
73
|
|
|
91
74
|
// Handle database permission changes
|
|
@@ -124,37 +107,21 @@ export class DsqlEngine extends AbstractEngine {
|
|
|
124
107
|
sql.push("COMMIT")
|
|
125
108
|
}
|
|
126
109
|
|
|
127
|
-
// Handle case where role was renamed AND database changed to a different one
|
|
128
|
-
if (
|
|
129
|
-
oldResourceId !== resourceId &&
|
|
130
|
-
props?.DatabaseName &&
|
|
131
|
-
props.DatabaseName !== oldProps?.DatabaseName
|
|
132
|
-
) {
|
|
133
|
-
sql.push("BEGIN")
|
|
134
|
-
sql.push(
|
|
135
|
-
pgFormat("GRANT CONNECT ON DATABASE %I TO %I", props.DatabaseName, resourceId)
|
|
136
|
-
)
|
|
137
|
-
sql.push("COMMIT")
|
|
138
|
-
}
|
|
139
|
-
|
|
140
110
|
return sql
|
|
141
111
|
}
|
|
142
112
|
|
|
143
|
-
deleteRole(
|
|
144
|
-
|
|
113
|
+
async deleteRole(
|
|
114
|
+
resourceId: string,
|
|
115
|
+
props: EngineRoleProperties
|
|
116
|
+
): Promise<string | string[]> {
|
|
117
|
+
const sql: string[] = []
|
|
145
118
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
resourceId
|
|
152
|
-
)
|
|
153
|
-
)
|
|
154
|
-
}
|
|
119
|
+
// Add special marker for IAM grant revocation
|
|
120
|
+
sql.push(`-- REVOKE_IAM_GRANTS_FOR_ROLE: ${resourceId}`)
|
|
121
|
+
|
|
122
|
+
// Add the regular drop role SQL
|
|
123
|
+
sql.push(...this.generateDropRoleSql(resourceId, props?.DatabaseName))
|
|
155
124
|
|
|
156
|
-
sql.push(pgFormat("DROP ROLE IF EXISTS %I", resourceId))
|
|
157
|
-
sql.push("COMMIT")
|
|
158
125
|
return sql
|
|
159
126
|
}
|
|
160
127
|
|
|
@@ -304,9 +271,31 @@ export class DsqlEngine extends AbstractEngine {
|
|
|
304
271
|
|
|
305
272
|
for (const statement of statements) {
|
|
306
273
|
if (statement.trim()) {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
274
|
+
// Handle special IAM grant revocation marker
|
|
275
|
+
if (statement.startsWith("-- REVOKE_IAM_GRANTS_FOR_ROLE:")) {
|
|
276
|
+
const roleName = statement
|
|
277
|
+
.replace("-- REVOKE_IAM_GRANTS_FOR_ROLE:", "")
|
|
278
|
+
.trim()
|
|
279
|
+
await this.revokeIamGrantsForRole(client, roleName)
|
|
280
|
+
} else if (statement.includes("AWS IAM REVOKE")) {
|
|
281
|
+
this.log(`Executing SQL: ${statement}`)
|
|
282
|
+
try {
|
|
283
|
+
const result = await client.query(statement)
|
|
284
|
+
results.push(result)
|
|
285
|
+
} catch (error: any) {
|
|
286
|
+
if (error.message && error.message.includes("does not exist")) {
|
|
287
|
+
this.log(
|
|
288
|
+
`Ignoring error for IAM REVOKE (role doesn't exist): ${error.message}`
|
|
289
|
+
)
|
|
290
|
+
} else {
|
|
291
|
+
throw error
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
} else {
|
|
295
|
+
this.log(`Executing SQL: ${statement}`)
|
|
296
|
+
const result = await client.query(statement)
|
|
297
|
+
results.push(result)
|
|
298
|
+
}
|
|
310
299
|
}
|
|
311
300
|
}
|
|
312
301
|
|
|
@@ -338,4 +327,60 @@ export class DsqlEngine extends AbstractEngine {
|
|
|
338
327
|
pgFormat("REVOKE ALL ON SCHEMA %I FROM %I", schema, roleName),
|
|
339
328
|
]
|
|
340
329
|
}
|
|
330
|
+
|
|
331
|
+
private generateCreateRoleSql(roleName: string, databaseName?: string): string[] {
|
|
332
|
+
const sql = ["BEGIN"]
|
|
333
|
+
sql.push(pgFormat("CREATE ROLE %I WITH LOGIN", roleName))
|
|
334
|
+
|
|
335
|
+
if (databaseName) {
|
|
336
|
+
sql.push(pgFormat("GRANT CONNECT ON DATABASE %I TO %I", databaseName, roleName))
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
sql.push("COMMIT")
|
|
340
|
+
return sql
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
private generateDropRoleSql(roleName: string, databaseName?: string): string[] {
|
|
344
|
+
const sql = ["BEGIN"]
|
|
345
|
+
|
|
346
|
+
if (databaseName) {
|
|
347
|
+
sql.push(
|
|
348
|
+
pgFormat("REVOKE ALL PRIVILEGES ON DATABASE %I FROM %I", databaseName, roleName)
|
|
349
|
+
)
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
sql.push(pgFormat("DROP ROLE IF EXISTS %I", roleName))
|
|
353
|
+
sql.push("COMMIT")
|
|
354
|
+
return sql
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
private async revokeIamGrantsForRole(client: any, roleName: string): Promise<void> {
|
|
358
|
+
try {
|
|
359
|
+
this.log(`Querying IAM grants for role: ${roleName}`)
|
|
360
|
+
|
|
361
|
+
// Query the IAM role mappings for this role
|
|
362
|
+
const result = await client.query(
|
|
363
|
+
pgFormat(
|
|
364
|
+
"SELECT arn FROM sys.iam_pg_role_mappings WHERE pg_role_name = %L",
|
|
365
|
+
roleName
|
|
366
|
+
)
|
|
367
|
+
)
|
|
368
|
+
|
|
369
|
+
if (result.rows && result.rows.length > 0) {
|
|
370
|
+
this.log(`Found ${result.rows.length} IAM grants to revoke for role: ${roleName}`)
|
|
371
|
+
|
|
372
|
+
// Revoke each IAM grant
|
|
373
|
+
for (const row of result.rows) {
|
|
374
|
+
const revokeStatement = pgFormat("AWS IAM REVOKE %I FROM %L", roleName, row.arn)
|
|
375
|
+
this.log(`Executing IAM revoke: ${revokeStatement}`)
|
|
376
|
+
await client.query(revokeStatement)
|
|
377
|
+
}
|
|
378
|
+
} else {
|
|
379
|
+
this.log(`No IAM grants found for role: ${roleName}`)
|
|
380
|
+
}
|
|
381
|
+
} catch (error) {
|
|
382
|
+
this.log(`Error revoking IAM grants for role ${roleName}: ${error}`)
|
|
383
|
+
// Don't throw here - the role might not have any IAM grants, which is fine
|
|
384
|
+
}
|
|
385
|
+
}
|
|
341
386
|
}
|
|
@@ -54,8 +54,8 @@ describe("MySQL Engine", () => {
|
|
|
54
54
|
expect(sql[2]).toContain("FLUSH PRIVILEGES")
|
|
55
55
|
})
|
|
56
56
|
|
|
57
|
-
it("should generate correct SQL for deleting a role", () => {
|
|
58
|
-
const sql = engine.deleteRole("testrole", { DatabaseName: "testdb" })
|
|
57
|
+
it("should generate correct SQL for deleting a role", async () => {
|
|
58
|
+
const sql = await engine.deleteRole("testrole", { DatabaseName: "testdb" })
|
|
59
59
|
expect(Array.isArray(sql)).toBe(true)
|
|
60
60
|
expect(sql[0]).toContain("REVOKE ALL PRIVILEGES")
|
|
61
61
|
expect(sql[1]).toContain("DROP USER IF EXISTS")
|
package/lambda/engine.mysql.ts
CHANGED
|
@@ -137,7 +137,7 @@ export class MysqlEngine extends AbstractEngine {
|
|
|
137
137
|
return sql
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
deleteRole(resourceId: string, props: EngineRoleProperties): string[] {
|
|
140
|
+
async deleteRole(resourceId: string, props: EngineRoleProperties): Promise<string[]> {
|
|
141
141
|
const sql: string[] = []
|
|
142
142
|
|
|
143
143
|
if (props?.DatabaseName) {
|
|
@@ -177,7 +177,7 @@ END$$;`,
|
|
|
177
177
|
return sql
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
-
deleteRole(resourceId: string, props: EngineRoleProperties): string[] {
|
|
180
|
+
async deleteRole(resourceId: string, props: EngineRoleProperties): Promise<string[]> {
|
|
181
181
|
return [
|
|
182
182
|
"start transaction",
|
|
183
183
|
pgFormat(
|
package/lambda/handler.ts
CHANGED
|
@@ -177,7 +177,7 @@ export const handler = async (
|
|
|
177
177
|
break
|
|
178
178
|
case RdsSqlResource.IAM_GRANT:
|
|
179
179
|
sql = dbEngine.createIamGrant(
|
|
180
|
-
|
|
180
|
+
event.ResourceProperties.RoleName,
|
|
181
181
|
toIamGrantEngineProps(event.ResourceProperties)
|
|
182
182
|
)
|
|
183
183
|
break
|
|
@@ -226,8 +226,8 @@ export const handler = async (
|
|
|
226
226
|
const iamUpdateEvent =
|
|
227
227
|
event as CloudFormationCustomResourceUpdateEvent<ResourceProperties>
|
|
228
228
|
sql = dbEngine.updateIamGrant(
|
|
229
|
-
|
|
230
|
-
|
|
229
|
+
event.ResourceProperties.RoleName,
|
|
230
|
+
iamUpdateEvent.OldResourceProperties.RoleName,
|
|
231
231
|
toIamGrantEngineProps(event.ResourceProperties),
|
|
232
232
|
toIamGrantEngineProps(iamUpdateEvent.OldResourceProperties)
|
|
233
233
|
)
|
|
@@ -245,7 +245,7 @@ export const handler = async (
|
|
|
245
245
|
sql = dbEngine.deleteDatabase(resourceId, secretValues.username)
|
|
246
246
|
break
|
|
247
247
|
case RdsSqlResource.ROLE:
|
|
248
|
-
sql = dbEngine.deleteRole(
|
|
248
|
+
sql = await dbEngine.deleteRole(
|
|
249
249
|
resourceId,
|
|
250
250
|
toRoleEngineProps(event.ResourceProperties)
|
|
251
251
|
)
|
|
@@ -261,7 +261,7 @@ export const handler = async (
|
|
|
261
261
|
break
|
|
262
262
|
case RdsSqlResource.IAM_GRANT:
|
|
263
263
|
sql = dbEngine.deleteIamGrant(
|
|
264
|
-
|
|
264
|
+
event.ResourceProperties.RoleName,
|
|
265
265
|
toIamGrantEngineProps(event.ResourceProperties)
|
|
266
266
|
)
|
|
267
267
|
break
|
package/lib/database.js
CHANGED
|
@@ -45,5 +45,5 @@ class Database extends aws_cdk_lib_1.CustomResource {
|
|
|
45
45
|
}
|
|
46
46
|
exports.Database = Database;
|
|
47
47
|
_a = JSII_RTTI_SYMBOL_1;
|
|
48
|
-
Database[_a] = { fqn: "cdk-rds-sql.Database", version: "7.
|
|
48
|
+
Database[_a] = { fqn: "cdk-rds-sql.Database", version: "7.3.0" };
|
|
49
49
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBNEM7QUFDNUMsMkNBQXNDO0FBQ3RDLGlDQUF1QztBQUN2Qyx5Q0FBc0Q7QUEwQnRELE1BQU0sZ0JBQWlCLFNBQVEsc0JBQVM7SUFHdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQTtJQUN4QyxDQUFDO0NBQ0Y7QUFFRCxNQUFhLFFBQVMsU0FBUSw0QkFBYztJQUMxQzs7T0FFRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxZQUFvQjtRQUN4RSxPQUFPLElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNyQyxZQUFZLEVBQUUsWUFBWTtTQUMzQixDQUFDLENBQUE7SUFDSixDQUFDO0lBSUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUM1RCw0REFBNEQ7UUFDNUQsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyx5QkFBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xELE1BQU0sSUFBSSxLQUFLLENBQ2IscUZBQXFGLENBQ3RGLENBQUE7UUFDSCxDQUFDO1FBRUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZO1lBQ3pDLFVBQVUsRUFBRTtnQkFDVixRQUFRLEVBQUUscUJBQWMsQ0FBQyxRQUFRO2dCQUNqQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQzlCLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEYsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUTthQUM3QjtTQUNGLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUE7UUFDdEMsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3RDLENBQUM7SUFDSCxDQUFDOztBQWxDSCw0QkFtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXN0b21SZXNvdXJjZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiXG5pbXBvcnQgeyBSZHNTcWxSZXNvdXJjZSB9IGZyb20gXCIuL2VudW1cIlxuaW1wb3J0IHsgSVByb3ZpZGVyLCBEYXRhYmFzZUVuZ2luZSB9IGZyb20gXCIuL3Byb3ZpZGVyXCJcbmltcG9ydCB7IFJvbGUgfSBmcm9tIFwiLi9yb2xlXCJcblxuaW50ZXJmYWNlIERhdGFiYXNlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIGRhdGFiYXNlIHRvIGNyZWF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRhdGFiYXNlIG93bmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgb3duZXI/OiBSb2xlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VQcm9wcyBleHRlbmRzIERhdGFiYXNlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBQcm92aWRlci5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyOiBJUHJvdmlkZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGF0YWJhc2Uge1xuICByZWFkb25seSBkYXRhYmFzZU5hbWU6IHN0cmluZ1xufVxuXG5jbGFzcyBJbXBvcnRlZERhdGFiYXNlIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSURhdGFiYXNlIHtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGFiYXNlTmFtZTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFiYXNlQXR0cmlidXRlcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcbiAgICB0aGlzLmRhdGFiYXNlTmFtZSA9IHByb3BzLmRhdGFiYXNlTmFtZVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhYmFzZSBleHRlbmRzIEN1c3RvbVJlc291cmNlIGltcGxlbWVudHMgSURhdGFiYXNlIHtcbiAgLyoqXG4gICAqIFJldHVybiBhIERhdGFiYXNlIGJhc2VkIHVwb24gbmFtZSBvbmx5LiBVc2UgZm9yIGltcG9ydGluZyBleGlzdGluZyBkYXRhYmFzZXMuXG4gICAqL1xuICBzdGF0aWMgZnJvbURhdGFiYXNlTmFtZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBkYXRhYmFzZU5hbWU6IHN0cmluZyk6IElEYXRhYmFzZSB7XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZERhdGFiYXNlKHNjb3BlLCBpZCwge1xuICAgICAgZGF0YWJhc2VOYW1lOiBkYXRhYmFzZU5hbWUsXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBkYXRhYmFzZU5hbWU6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhYmFzZVByb3BzKSB7XG4gICAgLy8gQ2hlY2sgaWYgdXNpbmcgRFNRTCBwcm92aWRlciBhbmQgZm9yYmlkIGRhdGFiYXNlIGNyZWF0aW9uXG4gICAgaWYgKHByb3BzLnByb3ZpZGVyLmVuZ2luZSA9PT0gRGF0YWJhc2VFbmdpbmUuRFNRTCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkRhdGFiYXNlIGNyZWF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBEU1FMLiBEU1FMIGFsd2F5cyB1c2VzICdwb3N0Z3JlcycgZGF0YWJhc2UuXCJcbiAgICAgIClcbiAgICB9XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogcHJvcHMucHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBSZXNvdXJjZTogUmRzU3FsUmVzb3VyY2UuREFUQUJBU0UsXG4gICAgICAgIFJlc291cmNlSWQ6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgLi4uKHByb3BzLnByb3ZpZGVyLnNlY3JldCA/IHsgU2VjcmV0QXJuOiBwcm9wcy5wcm92aWRlci5zZWNyZXQuc2VjcmV0QXJuIH0gOiB7fSksXG4gICAgICAgIE93bmVyOiBwcm9wcy5vd25lcj8ucm9sZU5hbWUsXG4gICAgICB9LFxuICAgIH0pXG4gICAgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kocHJvcHMucHJvdmlkZXIpXG4gICAgdGhpcy5kYXRhYmFzZU5hbWUgPSBwcm9wcy5kYXRhYmFzZU5hbWVcbiAgICBpZiAocHJvcHMub3duZXIpIHtcbiAgICAgIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHByb3BzLm93bmVyKVxuICAgIH1cbiAgfVxufVxuIl19
|
package/lib/handler/handler.js
CHANGED
|
@@ -25452,34 +25452,21 @@ var DsqlEngine = class extends AbstractEngine {
|
|
|
25452
25452
|
);
|
|
25453
25453
|
}
|
|
25454
25454
|
async createRole(resourceId, props) {
|
|
25455
|
-
|
|
25456
|
-
sql.push((0, import_node_pg_format.format)("CREATE ROLE %I WITH LOGIN", resourceId));
|
|
25457
|
-
if (props?.DatabaseName) {
|
|
25458
|
-
sql.push(
|
|
25459
|
-
(0, import_node_pg_format.format)("GRANT CONNECT ON DATABASE %I TO %I", props.DatabaseName, resourceId)
|
|
25460
|
-
);
|
|
25461
|
-
}
|
|
25462
|
-
sql.push("COMMIT");
|
|
25463
|
-
return sql;
|
|
25455
|
+
return this.generateCreateRoleSql(resourceId, props?.DatabaseName);
|
|
25464
25456
|
}
|
|
25465
25457
|
async updateRole(resourceId, oldResourceId, props, oldProps) {
|
|
25466
25458
|
const sql = [];
|
|
25467
25459
|
if (oldResourceId !== resourceId) {
|
|
25468
|
-
sql.push(
|
|
25469
|
-
sql.push(
|
|
25470
|
-
|
|
25460
|
+
sql.push(...this.generateCreateRoleSql(resourceId, oldProps?.DatabaseName));
|
|
25461
|
+
sql.push(`-- REVOKE_IAM_GRANTS_FOR_ROLE: ${oldResourceId}`);
|
|
25462
|
+
sql.push(...this.generateDropRoleSql(oldResourceId));
|
|
25463
|
+
if (props?.DatabaseName && props.DatabaseName !== oldProps?.DatabaseName) {
|
|
25464
|
+
sql.push("BEGIN");
|
|
25471
25465
|
sql.push(
|
|
25472
|
-
(0, import_node_pg_format.format)(
|
|
25473
|
-
"GRANT CONNECT ON DATABASE %I TO %I",
|
|
25474
|
-
oldProps.DatabaseName,
|
|
25475
|
-
resourceId
|
|
25476
|
-
)
|
|
25466
|
+
(0, import_node_pg_format.format)("GRANT CONNECT ON DATABASE %I TO %I", props.DatabaseName, resourceId)
|
|
25477
25467
|
);
|
|
25468
|
+
sql.push("COMMIT");
|
|
25478
25469
|
}
|
|
25479
|
-
sql.push("COMMIT");
|
|
25480
|
-
sql.push("BEGIN");
|
|
25481
|
-
sql.push((0, import_node_pg_format.format)("DROP ROLE IF EXISTS %I", oldResourceId));
|
|
25482
|
-
sql.push("COMMIT");
|
|
25483
25470
|
} else {
|
|
25484
25471
|
sql.push("BEGIN");
|
|
25485
25472
|
if (oldProps?.DatabaseName && props?.DatabaseName && oldProps.DatabaseName !== props.DatabaseName) {
|
|
@@ -25508,28 +25495,12 @@ var DsqlEngine = class extends AbstractEngine {
|
|
|
25508
25495
|
}
|
|
25509
25496
|
sql.push("COMMIT");
|
|
25510
25497
|
}
|
|
25511
|
-
if (oldResourceId !== resourceId && props?.DatabaseName && props.DatabaseName !== oldProps?.DatabaseName) {
|
|
25512
|
-
sql.push("BEGIN");
|
|
25513
|
-
sql.push(
|
|
25514
|
-
(0, import_node_pg_format.format)("GRANT CONNECT ON DATABASE %I TO %I", props.DatabaseName, resourceId)
|
|
25515
|
-
);
|
|
25516
|
-
sql.push("COMMIT");
|
|
25517
|
-
}
|
|
25518
25498
|
return sql;
|
|
25519
25499
|
}
|
|
25520
|
-
deleteRole(resourceId, props) {
|
|
25521
|
-
const sql = [
|
|
25522
|
-
|
|
25523
|
-
|
|
25524
|
-
(0, import_node_pg_format.format)(
|
|
25525
|
-
"REVOKE ALL PRIVILEGES ON DATABASE %I FROM %I",
|
|
25526
|
-
props.DatabaseName,
|
|
25527
|
-
resourceId
|
|
25528
|
-
)
|
|
25529
|
-
);
|
|
25530
|
-
}
|
|
25531
|
-
sql.push((0, import_node_pg_format.format)("DROP ROLE IF EXISTS %I", resourceId));
|
|
25532
|
-
sql.push("COMMIT");
|
|
25500
|
+
async deleteRole(resourceId, props) {
|
|
25501
|
+
const sql = [];
|
|
25502
|
+
sql.push(`-- REVOKE_IAM_GRANTS_FOR_ROLE: ${resourceId}`);
|
|
25503
|
+
sql.push(...this.generateDropRoleSql(resourceId, props?.DatabaseName));
|
|
25533
25504
|
return sql;
|
|
25534
25505
|
}
|
|
25535
25506
|
createSchema(resourceId, props) {
|
|
@@ -25646,9 +25617,28 @@ var DsqlEngine = class extends AbstractEngine {
|
|
|
25646
25617
|
const results = [];
|
|
25647
25618
|
for (const statement of statements) {
|
|
25648
25619
|
if (statement.trim()) {
|
|
25649
|
-
|
|
25650
|
-
|
|
25651
|
-
|
|
25620
|
+
if (statement.startsWith("-- REVOKE_IAM_GRANTS_FOR_ROLE:")) {
|
|
25621
|
+
const roleName = statement.replace("-- REVOKE_IAM_GRANTS_FOR_ROLE:", "").trim();
|
|
25622
|
+
await this.revokeIamGrantsForRole(client, roleName);
|
|
25623
|
+
} else if (statement.includes("AWS IAM REVOKE")) {
|
|
25624
|
+
this.log(`Executing SQL: ${statement}`);
|
|
25625
|
+
try {
|
|
25626
|
+
const result = await client.query(statement);
|
|
25627
|
+
results.push(result);
|
|
25628
|
+
} catch (error) {
|
|
25629
|
+
if (error.message && error.message.includes("does not exist")) {
|
|
25630
|
+
this.log(
|
|
25631
|
+
`Ignoring error for IAM REVOKE (role doesn't exist): ${error.message}`
|
|
25632
|
+
);
|
|
25633
|
+
} else {
|
|
25634
|
+
throw error;
|
|
25635
|
+
}
|
|
25636
|
+
}
|
|
25637
|
+
} else {
|
|
25638
|
+
this.log(`Executing SQL: ${statement}`);
|
|
25639
|
+
const result = await client.query(statement);
|
|
25640
|
+
results.push(result);
|
|
25641
|
+
}
|
|
25652
25642
|
}
|
|
25653
25643
|
}
|
|
25654
25644
|
this.log("SQL execution completed");
|
|
@@ -25677,6 +25667,49 @@ var DsqlEngine = class extends AbstractEngine {
|
|
|
25677
25667
|
(0, import_node_pg_format.format)("REVOKE ALL ON SCHEMA %I FROM %I", schema, roleName)
|
|
25678
25668
|
];
|
|
25679
25669
|
}
|
|
25670
|
+
generateCreateRoleSql(roleName, databaseName) {
|
|
25671
|
+
const sql = ["BEGIN"];
|
|
25672
|
+
sql.push((0, import_node_pg_format.format)("CREATE ROLE %I WITH LOGIN", roleName));
|
|
25673
|
+
if (databaseName) {
|
|
25674
|
+
sql.push((0, import_node_pg_format.format)("GRANT CONNECT ON DATABASE %I TO %I", databaseName, roleName));
|
|
25675
|
+
}
|
|
25676
|
+
sql.push("COMMIT");
|
|
25677
|
+
return sql;
|
|
25678
|
+
}
|
|
25679
|
+
generateDropRoleSql(roleName, databaseName) {
|
|
25680
|
+
const sql = ["BEGIN"];
|
|
25681
|
+
if (databaseName) {
|
|
25682
|
+
sql.push(
|
|
25683
|
+
(0, import_node_pg_format.format)("REVOKE ALL PRIVILEGES ON DATABASE %I FROM %I", databaseName, roleName)
|
|
25684
|
+
);
|
|
25685
|
+
}
|
|
25686
|
+
sql.push((0, import_node_pg_format.format)("DROP ROLE IF EXISTS %I", roleName));
|
|
25687
|
+
sql.push("COMMIT");
|
|
25688
|
+
return sql;
|
|
25689
|
+
}
|
|
25690
|
+
async revokeIamGrantsForRole(client, roleName) {
|
|
25691
|
+
try {
|
|
25692
|
+
this.log(`Querying IAM grants for role: ${roleName}`);
|
|
25693
|
+
const result = await client.query(
|
|
25694
|
+
(0, import_node_pg_format.format)(
|
|
25695
|
+
"SELECT arn FROM sys.iam_pg_role_mappings WHERE pg_role_name = %L",
|
|
25696
|
+
roleName
|
|
25697
|
+
)
|
|
25698
|
+
);
|
|
25699
|
+
if (result.rows && result.rows.length > 0) {
|
|
25700
|
+
this.log(`Found ${result.rows.length} IAM grants to revoke for role: ${roleName}`);
|
|
25701
|
+
for (const row of result.rows) {
|
|
25702
|
+
const revokeStatement = (0, import_node_pg_format.format)("AWS IAM REVOKE %I FROM %L", roleName, row.arn);
|
|
25703
|
+
this.log(`Executing IAM revoke: ${revokeStatement}`);
|
|
25704
|
+
await client.query(revokeStatement);
|
|
25705
|
+
}
|
|
25706
|
+
} else {
|
|
25707
|
+
this.log(`No IAM grants found for role: ${roleName}`);
|
|
25708
|
+
}
|
|
25709
|
+
} catch (error) {
|
|
25710
|
+
this.log(`Error revoking IAM grants for role ${roleName}: ${error}`);
|
|
25711
|
+
}
|
|
25712
|
+
}
|
|
25680
25713
|
};
|
|
25681
25714
|
|
|
25682
25715
|
// lambda/engine.mysql.ts
|
|
@@ -25770,7 +25803,7 @@ var MysqlEngine = class extends AbstractEngine {
|
|
|
25770
25803
|
}
|
|
25771
25804
|
return sql;
|
|
25772
25805
|
}
|
|
25773
|
-
deleteRole(resourceId, props) {
|
|
25806
|
+
async deleteRole(resourceId, props) {
|
|
25774
25807
|
const sql = [];
|
|
25775
25808
|
if (props?.DatabaseName) {
|
|
25776
25809
|
sql.push(
|
|
@@ -25979,7 +26012,7 @@ END$$;`,
|
|
|
25979
26012
|
sql.push("commit");
|
|
25980
26013
|
return sql;
|
|
25981
26014
|
}
|
|
25982
|
-
deleteRole(resourceId, props) {
|
|
26015
|
+
async deleteRole(resourceId, props) {
|
|
25983
26016
|
return [
|
|
25984
26017
|
"start transaction",
|
|
25985
26018
|
(0, import_node_pg_format2.format)(
|
|
@@ -26249,7 +26282,7 @@ var handler = async (event) => {
|
|
|
26249
26282
|
break;
|
|
26250
26283
|
case "iam_grant" /* IAM_GRANT */:
|
|
26251
26284
|
sql = dbEngine.createIamGrant(
|
|
26252
|
-
|
|
26285
|
+
event.ResourceProperties.RoleName,
|
|
26253
26286
|
toIamGrantEngineProps(event.ResourceProperties)
|
|
26254
26287
|
);
|
|
26255
26288
|
break;
|
|
@@ -26295,8 +26328,8 @@ var handler = async (event) => {
|
|
|
26295
26328
|
case "iam_grant" /* IAM_GRANT */:
|
|
26296
26329
|
const iamUpdateEvent = event;
|
|
26297
26330
|
sql = dbEngine.updateIamGrant(
|
|
26298
|
-
|
|
26299
|
-
|
|
26331
|
+
event.ResourceProperties.RoleName,
|
|
26332
|
+
iamUpdateEvent.OldResourceProperties.RoleName,
|
|
26300
26333
|
toIamGrantEngineProps(event.ResourceProperties),
|
|
26301
26334
|
toIamGrantEngineProps(iamUpdateEvent.OldResourceProperties)
|
|
26302
26335
|
);
|
|
@@ -26314,7 +26347,7 @@ var handler = async (event) => {
|
|
|
26314
26347
|
sql = dbEngine.deleteDatabase(resourceId, secretValues.username);
|
|
26315
26348
|
break;
|
|
26316
26349
|
case "role" /* ROLE */:
|
|
26317
|
-
sql = dbEngine.deleteRole(
|
|
26350
|
+
sql = await dbEngine.deleteRole(
|
|
26318
26351
|
resourceId,
|
|
26319
26352
|
toRoleEngineProps(event.ResourceProperties)
|
|
26320
26353
|
);
|
|
@@ -26330,7 +26363,7 @@ var handler = async (event) => {
|
|
|
26330
26363
|
break;
|
|
26331
26364
|
case "iam_grant" /* IAM_GRANT */:
|
|
26332
26365
|
sql = dbEngine.deleteIamGrant(
|
|
26333
|
-
|
|
26366
|
+
event.ResourceProperties.RoleName,
|
|
26334
26367
|
toIamGrantEngineProps(event.ResourceProperties)
|
|
26335
26368
|
);
|
|
26336
26369
|
break;
|
package/lib/iam-grant.d.ts
CHANGED
package/lib/iam-grant.js
CHANGED
|
@@ -3,10 +3,19 @@ var _a;
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.IamGrant = void 0;
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const crypto = require("crypto");
|
|
6
7
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
8
|
const enum_1 = require("./enum");
|
|
8
9
|
const provider_1 = require("./provider");
|
|
9
10
|
class IamGrant extends aws_cdk_lib_1.CustomResource {
|
|
11
|
+
static createUniqueResourceId(roleName, resourceArn) {
|
|
12
|
+
const hash = crypto
|
|
13
|
+
.createHash("sha256")
|
|
14
|
+
.update(resourceArn)
|
|
15
|
+
.digest("hex")
|
|
16
|
+
.substring(0, 8);
|
|
17
|
+
return `${roleName}:${hash}`;
|
|
18
|
+
}
|
|
10
19
|
constructor(scope, id, props) {
|
|
11
20
|
// IAM grants are only supported on DSQL
|
|
12
21
|
if (props.provider.engine !== provider_1.DatabaseEngine.DSQL) {
|
|
@@ -14,9 +23,11 @@ class IamGrant extends aws_cdk_lib_1.CustomResource {
|
|
|
14
23
|
}
|
|
15
24
|
super(scope, id, {
|
|
16
25
|
serviceToken: props.provider.serviceToken,
|
|
26
|
+
resourceType: "Custom::DsqlIamGrant",
|
|
17
27
|
properties: {
|
|
18
28
|
Resource: enum_1.RdsSqlResource.IAM_GRANT,
|
|
19
|
-
ResourceId: props.roleName,
|
|
29
|
+
ResourceId: IamGrant.createUniqueResourceId(props.roleName, props.resourceArn),
|
|
30
|
+
RoleName: props.roleName,
|
|
20
31
|
ResourceArn: props.resourceArn,
|
|
21
32
|
},
|
|
22
33
|
});
|
|
@@ -25,5 +36,5 @@ class IamGrant extends aws_cdk_lib_1.CustomResource {
|
|
|
25
36
|
}
|
|
26
37
|
exports.IamGrant = IamGrant;
|
|
27
38
|
_a = JSII_RTTI_SYMBOL_1;
|
|
28
|
-
IamGrant[_a] = { fqn: "cdk-rds-sql.IamGrant", version: "7.
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
IamGrant[_a] = { fqn: "cdk-rds-sql.IamGrant", version: "7.3.0" };
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLWdyYW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2lhbS1ncmFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGlDQUFnQztBQUNoQyw2Q0FBNEM7QUFFNUMsaUNBQXVDO0FBQ3ZDLHlDQUFzRDtBQW1CdEQsTUFBYSxRQUFTLFNBQVEsNEJBQWM7SUFDbEMsTUFBTSxDQUFDLHNCQUFzQixDQUFDLFFBQWdCLEVBQUUsV0FBbUI7UUFDekUsTUFBTSxJQUFJLEdBQUcsTUFBTTthQUNoQixVQUFVLENBQUMsUUFBUSxDQUFDO2FBQ3BCLE1BQU0sQ0FBQyxXQUFXLENBQUM7YUFDbkIsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUNiLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDbEIsT0FBTyxHQUFHLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQTtJQUM5QixDQUFDO0lBRUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUM1RCx3Q0FBd0M7UUFDeEMsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyx5QkFBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xELE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0hBQWdILENBQ2pILENBQUE7UUFDSCxDQUFDO1FBRUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZO1lBQ3pDLFlBQVksRUFBRSxzQkFBc0I7WUFDcEMsVUFBVSxFQUFFO2dCQUNWLFFBQVEsRUFBRSxxQkFBYyxDQUFDLFNBQVM7Z0JBQ2xDLFVBQVUsRUFBRSxRQUFRLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDO2dCQUM5RSxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7Z0JBQ3hCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVzthQUMvQjtTQUNGLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUN6QyxDQUFDOztBQTdCSCw0QkE4QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSBcImNyeXB0b1wiXG5pbXBvcnQgeyBDdXN0b21SZXNvdXJjZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiXG5pbXBvcnQgeyBSZHNTcWxSZXNvdXJjZSB9IGZyb20gXCIuL2VudW1cIlxuaW1wb3J0IHsgSVByb3ZpZGVyLCBEYXRhYmFzZUVuZ2luZSB9IGZyb20gXCIuL3Byb3ZpZGVyXCJcblxuZXhwb3J0IGludGVyZmFjZSBJYW1HcmFudFByb3BzIHtcbiAgLyoqXG4gICAqIFByb3ZpZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IElQcm92aWRlclxuXG4gIC8qKlxuICAgKiBEYXRhYmFzZSByb2xlIG5hbWUgdG8gZ3JhbnQgSUFNIGFjY2VzcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IHJvbGVOYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogSUFNIHJlc291cmNlIEFSTiAocm9sZSwgdXNlciwgb3Igb3RoZXIgSUFNIHByaW5jaXBhbCkuXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZUFybjogc3RyaW5nXG59XG5cbmV4cG9ydCBjbGFzcyBJYW1HcmFudCBleHRlbmRzIEN1c3RvbVJlc291cmNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlVW5pcXVlUmVzb3VyY2VJZChyb2xlTmFtZTogc3RyaW5nLCByZXNvdXJjZUFybjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBoYXNoID0gY3J5cHRvXG4gICAgICAuY3JlYXRlSGFzaChcInNoYTI1NlwiKVxuICAgICAgLnVwZGF0ZShyZXNvdXJjZUFybilcbiAgICAgIC5kaWdlc3QoXCJoZXhcIilcbiAgICAgIC5zdWJzdHJpbmcoMCwgOClcbiAgICByZXR1cm4gYCR7cm9sZU5hbWV9OiR7aGFzaH1gXG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSWFtR3JhbnRQcm9wcykge1xuICAgIC8vIElBTSBncmFudHMgYXJlIG9ubHkgc3VwcG9ydGVkIG9uIERTUUxcbiAgICBpZiAocHJvcHMucHJvdmlkZXIuZW5naW5lICE9PSBEYXRhYmFzZUVuZ2luZS5EU1FMKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiSUFNIGdyYW50cyBhcmUgb25seSBzdXBwb3J0ZWQgd2l0aCBEU1FMIGNsdXN0ZXJzLiBVc2UgcmVndWxhciBkYXRhYmFzZSBhdXRoZW50aWNhdGlvbiBmb3IgUkRTL0F1cm9yYSBjbHVzdGVycy5cIlxuICAgICAgKVxuICAgIH1cblxuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgc2VydmljZVRva2VuOiBwcm9wcy5wcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICByZXNvdXJjZVR5cGU6IFwiQ3VzdG9tOjpEc3FsSWFtR3JhbnRcIixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgUmVzb3VyY2U6IFJkc1NxbFJlc291cmNlLklBTV9HUkFOVCxcbiAgICAgICAgUmVzb3VyY2VJZDogSWFtR3JhbnQuY3JlYXRlVW5pcXVlUmVzb3VyY2VJZChwcm9wcy5yb2xlTmFtZSwgcHJvcHMucmVzb3VyY2VBcm4pLFxuICAgICAgICBSb2xlTmFtZTogcHJvcHMucm9sZU5hbWUsXG4gICAgICAgIFJlc291cmNlQXJuOiBwcm9wcy5yZXNvdXJjZUFybixcbiAgICAgIH0sXG4gICAgfSlcbiAgICB0aGlzLm5vZGUuYWRkRGVwZW5kZW5jeShwcm9wcy5wcm92aWRlcilcbiAgfVxufVxuIl19
|
package/lib/provider.js
CHANGED
|
@@ -209,7 +209,7 @@ class Provider extends constructs_1.Construct {
|
|
|
209
209
|
}
|
|
210
210
|
exports.Provider = Provider;
|
|
211
211
|
_a = JSII_RTTI_SYMBOL_1;
|
|
212
|
-
Provider[_a] = { fqn: "cdk-rds-sql.Provider", version: "7.
|
|
212
|
+
Provider[_a] = { fqn: "cdk-rds-sql.Provider", version: "7.3.0" };
|
|
213
213
|
class ImportedProvider extends constructs_1.Construct {
|
|
214
214
|
constructor(scope, id, attrs) {
|
|
215
215
|
super(scope, id);
|
package/lib/role.js
CHANGED
|
@@ -146,5 +146,5 @@ class Role extends constructs_1.Construct {
|
|
|
146
146
|
}
|
|
147
147
|
exports.Role = Role;
|
|
148
148
|
_a = JSII_RTTI_SYMBOL_1;
|
|
149
|
-
Role[_a] = { fqn: "cdk-rds-sql.Role", version: "7.
|
|
149
|
+
Role[_a] = { fqn: "cdk-rds-sql.Role", version: "7.3.0" };
|
|
150
150
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQWtFO0FBQ2xFLDJDQUEwQztBQUcxQyx1RUFBZ0U7QUFDaEUsMkNBQTBDO0FBQzFDLDJDQUFzQztBQUV0QyxpQ0FBdUM7QUFDdkMseUNBQXNEO0FBQ3RELGlFQUFtRTtBQStFbkUsOENBQThDO0FBQzlDLE1BQU0sVUFBVyxTQUFRLHNCQUFTO0lBQ2hDLFlBQ0UsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBT0M7UUFFRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLDRDQUE0QztRQUM1QyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQ3ZELElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUN4QixJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLGFBQWEsR0FBRyxFQUFFLEVBQUU7b0JBQ2hELGFBQWEsRUFBRSxHQUFHLEtBQUssQ0FBQyxlQUFlLEdBQUcsR0FBRyxFQUFFO29CQUMvQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFFBQVEsRUFBRTtpQkFDOUIsQ0FBQyxDQUFBO1lBQ0osQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFBO1FBRUYsNkRBQTZEO1FBQzdELE1BQU0scUJBQXFCLEdBQUcsR0FBRyxLQUFLLENBQUMsZUFBZSxVQUFVLENBQUE7UUFDaEUsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQ3ZFLFlBQVksRUFBRSxLQUFLLENBQUMsb0JBQW9CO1lBQ3hDLFVBQVUsRUFBRTtnQkFDVixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7Z0JBQzFCLFFBQVEsRUFBRSxxQkFB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Q0FBQyxZQUFZO1lBQ2hDLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLHlCQUFjLENBQUMsSUFBSTtTQUNwRixDQUFDLENBQUE7UUFFRixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUM3QyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzlCLGdEQUFnRDtnQkFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDaEUsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUE7SUFDaEMsQ0FBQzs7QUE1SEgsb0JBNkhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UsIFJlbW92YWxQb2xpY3ksIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCJcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBrbXMgZnJvbSBcImF3cy1jZGstbGliL2F3cy1rbXNcIlxuaW1wb3J0IHsgSURhdGFiYXNlQ2x1c3RlciwgSURhdGFiYXNlSW5zdGFuY2UgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJkc1wiXG5pbXBvcnQgeyBJU2VjcmV0LCBTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCJcbmltcG9ydCAqIGFzIHNzbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNzbVwiXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiXG5pbXBvcnQgeyBJRGF0YWJhc2UgfSBmcm9tIFwiLi9kYXRhYmFzZVwiXG5pbXBvcnQgeyBSZHNTcWxSZXNvdXJjZSB9IGZyb20gXCIuL2VudW1cIlxuaW1wb3J0IHsgSVByb3ZpZGVyLCBEYXRhYmFzZUVuZ2luZSB9IGZyb20gXCIuL3Byb3ZpZGVyXCJcbmltcG9ydCB7IFJvbGUgYXMgQ3VzdG9tUmVzb3VyY2VSb2xlIH0gZnJvbSBcIi4vcm9sZS5jdXN0b20tcmVzb3VyY2VcIlxuXG5leHBvcnQgaW50ZXJmYWNlIFJvbGVQcm9wcyB7XG4gIC8qKlxuICAgKiBQcm92aWRlci5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyOiBJUHJvdmlkZXJcblxuICAvKipcbiAgICogU1FMLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZU5hbWU6IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkYXRhYmFzZSB0aGlzIHVzZXIgaXMgZXhwZWN0ZWQgdG8gdXNlLlxuICAgKlxuICAgKiBJZiB0aGUgZGF0YWJhc2UgZXhpc3RzLCBjb25uZWN0IHByaXZpbGVnZXMgYXJlIGdyYW50ZWQuXG4gICAqXG4gICAqIFNwZWNpZnkgb25lIG9mIGBkYXRhYmFzZWAgb3IgYGRhdGFiYXNlTmFtZWAuIFRoaXMgaXMgdGhlIG5hbWVcbiAgICogdGhhdCB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgcm9sZSdzIHNlY3JldCBhcyB0aGUgZGF0YWJhc2UgbmFtZSB0b1xuICAgKiB1c2UuXG4gICAqL1xuICByZWFkb25seSBkYXRhYmFzZT86IElEYXRhYmFzZVxuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkYXRhYmFzZSBuYW1lIHRoaXMgdXNlciBpcyBleHBlY3RlZCB0byB1c2UuXG4gICAqXG4gICAqIElmIHRoZSBkYXRhYmFzZSBleGlzdHMsIGNvbm5lY3QgcHJpdmlsZWdlcyBhcmUgZ3JhbnRlZC5cbiAgICpcbiAgICogU3BlY2lmeSBvbmUgb2YgYGRhdGFiYXNlYCBvciBgZGF0YWJhc2VOYW1lYC4gVGhpcyBpcyB0aGUgbmFtZVxuICAgKiB0aGF0IHdpbGwgYmUgc3RvcmVkIGluIHRoZSByb2xlJ3Mgc2VjcmV0IGFzIHRoZSBkYXRhYmFzZSBuYW1lIHRvXG4gICAqIHVzZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZT86IHN0cmluZ1xuXG4gIC8qKlxuICAgKiBBIG5ldyBzZWNyZXQgaXMgY3JlYXRlZCBmb3IgdGhpcyB1c2VyLlxuICAgKlxuICAgKiBPcHRpb25hbGx5IGVuY3J5cHQgaXQgd2l0aCB0aGUgZ2l2ZW4ga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbktleT86IGttcy5JS2V5XG5cbiAgLyoqXG4gICAqIEEgbmV3IHNlY3JldCBpcyBjcmVhdGVkIGZvciB0aGlzIHVzZXIuXG4gICAqXG4gICAqIE9wdGlvbmFsbHkgYWRkIHNlY3JldCBuYW1lIHRvIHRoZSBzZWNyZXQuXG4gICAqL1xuICByZWFkb25seSBzZWNyZXROYW1lPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIFByZWZpeCBmb3IgU1NNIHBhcmFtZXRlcnMgdG8gc3RvcmUgY3JlZGVudGlhbHMgaW4gUGFyYW1ldGVyIFN0b3JlLlxuICAgKiBXaGVuIGRlZmluZWQsIGNyZWRlbnRpYWxzIHdpbGwgYWxzbyBiZSBzdG9yZWQgYXMgcGFyYW1ldGVycy5cbiAgICpcbiAgICogVGhlIHBhcmFtZXRlciBuYW1lcyBzdWNoIGFzIFwicGFzc3dvcmRcIiBpcyBzaW1wbHkgYXBwZW5kZWQgdG9cbiAgICogYHBhcmFtZXRlclByZWZpeGAsIHNvIG1ha2Ugc3VyZSB0aGUgcHJlZml4IGVuZHMgd2l0aCBhIHNsYXNoIGlmXG4gICAqICB5b3UgaGF2ZSB5b3VyIHBhcmFtZXRlciBuYW1lcyBzbGFzaCBzZXBhcmF0ZWQuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB0aGUgcGFzc3dvcmQgZnJvbSB0aGUgc2VjcmV0IGlzIGNvcGllZCBqdXN0IG9uY2UsIHRoZXlcbiAgICogYXJlIG5vdCBrZXB0IGluIHN5bmMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gY3JlZGVudGlhbHMgYXJlIG9ubHkgc3RvcmVkIGluIFNlY3JldHMgTWFuYWdlclxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVyUHJlZml4Pzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIEVuYWJsZSBJQU0gYXV0aGVudGljYXRpb24gZm9yIHRoaXMgcm9sZS5cbiAgICpcbiAgICogV2hlbiBlbmFibGVkLCB0aGUgcm9sZSB3aWxsIGJlIGNyZWF0ZWQgd2l0aG91dCBhIHBhc3N3b3JkIGFuZFxuICAgKiBjb25maWd1cmVkIGZvciBBV1MgSUFNIGRhdGFiYXNlIGF1dGhlbnRpY2F0aW9uLiBUaGUgc2VjcmV0XG4gICAqIHdpbGwgbm90IGNvbnRhaW4gYSBwYXNzd29yZCBmaWVsZC5cbiAgICpcbiAgICogTm90ZTogRm9yIERTUUwgY2x1c3RlcnMsIHRoaXMgcHJvcGVydHkgaXMgaWdub3JlZCBhcyBEU1FMIGFsd2F5c1xuICAgKiB1c2VzIElBTSBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2UgLSB1c2UgcGFzc3dvcmQgYXV0aGVudGljYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUlhbUF1dGg/OiBib29sZWFuXG59XG5cbi8vIFByaXZhdGUgUGFyYW1ldGVycyBjb25zdHJ1Y3QgKG5vdCBleHBvcnRlZClcbmNsYXNzIFBhcmFtZXRlcnMgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IHtcbiAgICAgIHByb3ZpZGVyOiBJUHJvdmlkZXJcbiAgICAgIHNlY3JldEFybjogc3RyaW5nXG4gICAgICBwYXJhbWV0ZXJQcmVmaXg6IHN0cmluZ1xuICAgICAgcGFzc3dvcmRBcm46IHN0cmluZ1xuICAgICAgcHJvdmlkZXJTZXJ2aWNlVG9rZW46IHN0cmluZ1xuICAgICAgcGFyYW1EYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gICAgfVxuICApIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICAvLyBDcmVhdGUgcGFyYW1ldGVycyBmb3IgZWFjaCBrZXktdmFsdWUgcGFpclxuICAgIE9iamVjdC5lbnRyaWVzKHByb3BzLnBhcmFtRGF0YSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXcgc3NtLlN0cmluZ1BhcmFtZXRlcih0aGlzLCBgUGFyYW1ldGVyLSR7a2V5fWAsIHtcbiAgICAgICAgICBwYXJhbWV0ZXJOYW1lOiBgJHtwcm9wcy5wYXJhbWV0ZXJQcmVmaXh9JHtrZXl9YCxcbiAgICAgICAgICBzdHJpbmdWYWx1ZTogdmFsdWUudG9TdHJpbmcoKSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgLy8gRm9yIHBhc3N3b3JkLCB1c2UgdGhlIGV4aXN0aW5nIHByb3ZpZGVyIHRvIHN0b3JlIGl0IGluIFNTTVxuICAgIGNvbnN0IHBhc3N3b3JkUGFyYW1ldGVyTmFtZSA9IGAke3Byb3BzLnBhcmFtZXRlclByZWZpeH1wYXNzd29yZGBcbiAgICBjb25zdCBwYXNzd29yZF9wYXJhbWV0ZXIgPSBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJQYXNzd29yZFBhcmFtZXRlclwiLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHByb3BzLnByb3ZpZGVyU2VydmljZVRva2VuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBTZWNyZXRBcm46IHByb3BzLnNlY3JldEFybixcbiAgICAgICAgUmVzb3VyY2U6IFJkc1NxbFJlc291cmNlLlBBUkFNRVRFUl9QQVNTV09SRCxcbiAgICAgICAgUGFzc3dvcmRBcm46IHByb3BzLnBhc3N3b3JkQXJuLFxuICAgICAgICBQYXJhbWV0ZXJOYW1lOiBwYXNzd29yZFBhcmFtZXRlck5hbWUsXG4gICAgICB9LFxuICAgIH0pXG4gICAgcGFzc3dvcmRfcGFyYW1ldGVyLm5vZGUuYWRkRGVwZW5kZW5jeShwcm9wcy5wcm92aWRlcilcblxuICAgIGNvbnN0IHBhcmFtQXJuID0gYGFybjphd3M6c3NtOiR7U3RhY2sub2YodGhpcykucmVnaW9ufToke1xuICAgICAgU3RhY2sub2YodGhpcykuYWNjb3VudFxuICAgIH06cGFyYW1ldGVyJHtcbiAgICAgIHBhc3N3b3JkUGFyYW1ldGVyTmFtZS5zdGFydHNXaXRoKFwiL1wiKSA/IFwiXCIgOiBcIi9cIlxuICAgIH0ke3Bhc3N3b3JkUGFyYW1ldGVyTmFtZX1gXG5cbiAgICBwcm9wcy5wcm92aWRlci5oYW5kbGVyLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1wic3NtOlB1dFBhcmFtZXRlclwiLCBcInNzbTpBZGRUYWdzVG9SZXNvdXJjZVwiLCBcInNzbTpHZXRQYXJhbWV0ZXJzXCJdLFxuICAgICAgICByZXNvdXJjZXM6IFtwYXJhbUFybl0sXG4gICAgICB9KVxuICAgIClcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUm9sZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgcm9sZSBuYW1lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGVOYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogVGhlIGdlbmVyYXRlZCBzZWNyZXQuXG4gICAqIE9ubHkgYXZhaWxhYmxlIGZvciBub24tRFNRTCBjbHVzdGVycyBhcyBEU1FMIHVzZXMgSUFNIGF1dGhlbnRpY2F0aW9uLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlY3JldD86IElTZWNyZXRcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUm9sZVByb3BzKSB7XG4gICAgaWYgKHByb3BzLnByb3ZpZGVyLmVuZ2luZSAhPT0gRGF0YWJhc2VFbmdpbmUuRFNRTCkge1xuICAgICAgaWYgKHByb3BzLmRhdGFiYXNlICYmIHByb3BzLmRhdGFiYXNlTmFtZSkge1xuICAgICAgICB0aHJvdyBcIlNwZWNpZnkgZWl0aGVyIGRhdGFiYXNlIG9yIGRhdGFiYXNlTmFtZVwiXG4gICAgICB9XG4gICAgICBpZiAoIXByb3BzLmRhdGFiYXNlICYmICFwcm9wcy5kYXRhYmFzZU5hbWUpIHtcbiAgICAgICAgLy8gSWYgbmVpdGhlciBpcyBzcGVjaWZpZWQsIHdlIG1pZ2h0IG5lZWQgYSBkZWZhdWx0IG9yIHRocm93IGFuIGVycm9yIGRlcGVuZGluZyBvbiBkZXNpcmVkIGJlaGF2aW9yLlxuICAgICAgICAvLyBGb3Igbm93LCBsZXQncyBhc3N1bWUgaXQncyBhbGxvd2VkIGJ1dCB0aGUgc2VjcmV0IHdvbid0IGhhdmUgYSBkYm5hbWUuXG4gICAgICAgIC8vIElmIGl0IHNob3VsZCBiZSByZXF1aXJlZCwgdW5jb21tZW50IHRoZSBsaW5lIGJlbG93OlxuICAgICAgICB0aHJvdyBcIlNwZWNpZnkgZWl0aGVyIGRhdGFiYXNlIG9yIGRhdGFiYXNlTmFtZVwiXG4gICAgICB9XG4gICAgfVxuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIC8vIERTUUwgZG9lc24ndCB1c2Ugc2VjcmV0cyAtIGl0IGFsd2F5cyB1c2VzIElBTSBhdXRoZW50aWNhdGlvblxuICAgIGlmIChwcm9wcy5wcm92aWRlci5lbmdpbmUgIT09IERhdGFiYXNlRW5naW5lLkRTUUwpIHtcbiAgICAgIC8vIEZvciBpbXBvcnRlZCBwcm92aWRlcnMgd2l0aG91dCBjbHVzdGVyIGRldGFpbHMsIHByb3ZpZGUgaGVscGZ1bCBlcnJvciBtZXNzYWdlXG4gICAgICBpZiAoIXByb3BzLnByb3ZpZGVyLmNsdXN0ZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiUm9sZSBjcmVhdGlvbiByZXF1aXJlcyBjbHVzdGVyIGluZm9ybWF0aW9uLiBXaGVuIGltcG9ydGluZyBhIHByb3ZpZGVyIHdpdGggXCIgK1xuICAgICAgICAgICAgXCJQcm92aWRlci5mcm9tUHJvdmlkZXJBdHRyaWJ1dGVzKCksIGluY2x1ZGUgdGhlICdjbHVzdGVyJyBwcm9wZXJ0eSBpZiB5b3UgcGxhbiBcIiArXG4gICAgICAgICAgICBcInRvIGNyZWF0ZSBuZXcgcm9sZXMuIEFsdGVybmF0aXZlbHksIHVzZSBleGlzdGluZyByb2xlcyBjcmVhdGVkIHdpdGggdGhlIG9yaWdpbmFsIHByb3ZpZGVyLlwiXG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgLy8gRm9yIFJEUy9BdXJvcmEgY2x1c3RlcnMgYW5kIGluc3RhbmNlcywgZ2V0IGVuZHBvaW50IGRldGFpbHNcbiAgICAgIGNvbnN0IGhvc3QgPSAocHJvcHMucHJvdmlkZXIuY2x1c3RlciBhcyBJRGF0YWJhc2VDbHVzdGVyKS5jbHVzdGVyRW5kcG9pbnRcbiAgICAgICAgPyAocHJvcHMucHJvdmlkZXIuY2x1c3RlciBhcyBJRGF0YWJhc2VDbHVzdGVyKS5jbHVzdGVyRW5kcG9pbnQuaG9zdG5hbWVcbiAgICAgICAgOiAocHJvcHMucHJvdmlkZXIuY2x1c3RlciBhcyBJRGF0YWJhc2VJbnN0YW5jZSkuaW5zdGFuY2VFbmRwb2ludC5ob3N0bmFtZVxuXG4gICAgICBjb25zdCBwb3J0ID0gKHByb3BzLnByb3ZpZGVyLmNsdXN0ZXIgYXMgSURhdGFiYXNlQ2x1c3RlcikuY2x1c3RlckVuZHBvaW50XG4gICAgICAgID8gKHByb3BzLnByb3ZpZGVyLmNsdXN0ZXIgYXMgSURhdGFiYXNlQ2x1c3RlcikuY2x1c3RlckVuZHBvaW50LnBvcnRcbiAgICAgICAgOiAocHJvcHMucHJvdmlkZXIuY2x1c3RlciBhcyBJRGF0YWJhc2VJbnN0YW5jZSkuaW5zdGFuY2VFbmRwb2ludC5wb3J0XG5cbiAgICAgIGNvbnN0IGlkZW50aWZpZXIgPSAocHJvcHMucHJvdmlkZXIuY2x1c3RlciBhcyBJRGF0YWJhc2VDbHVzdGVyKS5jbHVzdGVySWRlbnRpZmllclxuICAgICAgICA/IChwcm9wcy5wcm92aWRlci5jbHVzdGVyIGFzIElEYXRhYmFzZUNsdXN0ZXIpLmNsdXN0ZXJJZGVudGlmaWVyXG4gICAgICAgIDogKHByb3BzLnByb3ZpZGVyLmNsdXN0ZXIgYXMgSURhdGFiYXNlSW5zdGFuY2UpLmluc3RhbmNlSWRlbnRpZmllclxuXG4gICAgICBjb25zdCBzZWNyZXRUZW1wbGF0ZSA9IHtcbiAgICAgICAgZGJDbHVzdGVySWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgZW5naW5lOiBwcm9wcy5wcm92aWRlci5lbmdpbmUsXG4gICAgICAgIGhvc3Q6IGhvc3QsXG4gICAgICAgIHBvcnQ6IHBvcnQsXG4gICAgICAgIHVzZXJuYW1lOiBwcm9wcy5yb2xlTmFtZSxcbiAgICAgICAgZGJuYW1lOiBwcm9wcy5kYXRhYmFzZSA/IHByb3BzLmRhdGFiYXNlLmRhdGFiYXNlTmFtZSA6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWNyZXQgPSBuZXcgU2VjcmV0KHRoaXMsIFwiU2VjcmV0XCIsIHtcbiAgICAgICAgc2VjcmV0TmFtZTogcHJvcHMuc2VjcmV0TmFtZSxcbiAgICAgICAgZW5jcnlwdGlvbktleTogcHJvcHMuZW5jcnlwdGlvbktleSxcbiAgICAgICAgZGVzY3JpcHRpb246IGBHZW5lcmF0ZWQgc2VjcmV0IGZvciAke3Byb3BzLnByb3ZpZGVyLmVuZ2luZX0gcm9sZSAke3Byb3BzLnJvbGVOYW1lfWAsXG4gICAgICAgIC4uLihwcm9wcy5lbmFibGVJYW1BdXRoXG4gICAgICAgICAgPyB7XG4gICAgICAgICAgICAgIC8vIEZvciBJQU0gYXV0aCwgY3JlYXRlIHNlY3JldCB3aXRob3V0IHBhc3N3b3JkIGdlbmVyYXRpb25cbiAgICAgICAgICAgICAgc2VjcmV0U3RyaW5nVGVtcGxhdGU6IEpTT04uc3RyaW5naWZ5KHNlY3JldFRlbXBsYXRlKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgLy8gRm9yIHBhc3N3b3JkIGF1dGgsIGdlbmVyYXRlIHBhc3N3b3JkXG4gICAgICAgICAgICAgIGdlbmVyYXRlU2VjcmV0U3RyaW5nOiB7XG4gICAgICAgICAgICAgICAgcGFzc3dvcmRMZW5ndGg6IDMwLCAvLyBPcmFjbGUgcGFzc3dvcmQgY2Fubm90IGhhdmUgbW9yZSB0aGFuIDMwIGNoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICBzZWNyZXRTdHJpbmdUZW1wbGF0ZTogSlNPTi5zdHJpbmdpZnkoc2VjcmV0VGVtcGxhdGUpLFxuICAgICAgICAgICAgICAgIGdlbmVyYXRlU3RyaW5nS2V5OiBcInBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgZXhjbHVkZUNoYXJhY3RlcnM6IFwiICUrfmAjJCYqKCl8W117fTo7PD4/IScvQFxcXCJcXFxcXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgfSlcblxuICAgICAgLy8gQ3JlYXRlIFBhcmFtZXRlcnMgaWYgcGFyYW1ldGVyUHJlZml4IGlzIHByb3ZpZGVkXG4gICAgICBpZiAocHJvcHMucGFyYW1ldGVyUHJlZml4KSB7XG4gICAgICAgIGNvbnN0IHBhcmFtRGF0YSA9IHtcbiAgICAgICAgICBkYkNsdXN0ZXJJZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICAgIGVuZ2luZTogcHJvcHMucHJvdmlkZXIuZW5naW5lLFxuICAgICAgICAgIGhvc3Q6IGhvc3QsXG4gICAgICAgICAgcG9ydDogcG9ydCxcbiAgICAgICAgICB1c2VybmFtZTogcHJvcHMucm9sZU5hbWUsXG4gICAgICAgICAgZGJuYW1lOiBwcm9wcy5kYXRhYmFzZSA/IHByb3BzLmRhdGFiYXNlLmRhdGFiYXNlTmFtZSA6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgfVxuXG4gICAgICAgIG5ldyBQYXJhbWV0ZXJzKHRoaXMsIFwiUGFyYW1ldGVyc1wiLCB7XG4gICAgICAgICAgc2VjcmV0QXJuOiBwcm9wcy5wcm92aWRlci5zZWNyZXQ/LnNlY3JldEFybiB8fCBcIlwiLFxuICAgICAgICAgIHBhcmFtZXRlclByZWZpeDogcHJvcHMucGFyYW1ldGVyUHJlZml4LFxuICAgICAgICAgIHBhc3N3b3JkQXJuOiBwcm9wcy5lbmFibGVJYW1BdXRoID8gXCJcIiA6IHRoaXMuc2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgICBwcm92aWRlclNlcnZpY2VUb2tlbjogcHJvcHMucHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgICAgIHByb3ZpZGVyOiBwcm9wcy5wcm92aWRlcixcbiAgICAgICAgICBwYXJhbURhdGEsXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgcm9sZSA9IG5ldyBDdXN0b21SZXNvdXJjZVJvbGUodGhpcywgXCJQb3N0Z3Jlc1JvbGVcIiwge1xuICAgICAgcHJvdmlkZXI6IHByb3BzLnByb3ZpZGVyLFxuICAgICAgcm9sZU5hbWU6IHByb3BzLnJvbGVOYW1lLFxuICAgICAgcGFzc3dvcmRBcm46XG4gICAgICAgIHByb3BzLmVuYWJsZUlhbUF1dGggfHwgcHJvcHMucHJvdmlkZXIuZW5naW5lID09PSBEYXRhYmFzZUVuZ2luZS5EU1FMXG4gICAgICAgICAgPyBcIlwiXG4gICAgICAgICAgOiB0aGlzLnNlY3JldCEuc2VjcmV0QXJuLFxuICAgICAgZGF0YWJhc2U6IHByb3BzLmRhdGFiYXNlLFxuICAgICAgZGF0YWJhc2VOYW1lOiBwcm9wcy5kYXRhYmFzZU5hbWUsXG4gICAgICBlbmFibGVJYW1BdXRoOiBwcm9wcy5lbmFibGVJYW1BdXRoIHx8IHByb3BzLnByb3ZpZGVyLmVuZ2luZSA9PT0gRGF0YWJhc2VFbmdpbmUuRFNRTCxcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMuc2VjcmV0KSB7XG4gICAgICByb2xlLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLnNlY3JldClcbiAgICAgIHRoaXMuc2VjcmV0LmdyYW50UmVhZChwcm9wcy5wcm92aWRlci5oYW5kbGVyKVxuICAgICAgaWYgKHRoaXMuc2VjcmV0LmVuY3J5cHRpb25LZXkpIHtcbiAgICAgICAgLy8gSXQgc2VlbXMgd2UgbmVlZCB0byBncmFudCBleHBsaWNpdCBwZXJtaXNzaW9uXG4gICAgICAgIHRoaXMuc2VjcmV0LmVuY3J5cHRpb25LZXkuZ3JhbnREZWNyeXB0KHByb3BzLnByb3ZpZGVyLmhhbmRsZXIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yb2xlTmFtZSA9IHByb3BzLnJvbGVOYW1lXG4gIH1cbn1cbiJdfQ==
|
package/lib/schema.js
CHANGED
|
@@ -27,5 +27,5 @@ class Schema extends aws_cdk_lib_1.CustomResource {
|
|
|
27
27
|
}
|
|
28
28
|
exports.Schema = Schema;
|
|
29
29
|
_a = JSII_RTTI_SYMBOL_1;
|
|
30
|
-
Schema[_a] = { fqn: "cdk-rds-sql.Schema", version: "7.
|
|
30
|
+
Schema[_a] = { fqn: "cdk-rds-sql.Schema", version: "7.3.0" };
|
|
31
31
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE0QztBQUc1QyxpQ0FBdUM7QUE4QnZDLE1BQWEsTUFBTyxTQUFRLDRCQUFjO0lBR3hDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZO1lBQ3pDLFVBQVUsRUFBRTtnQkFDVixRQUFRLEVBQUUscUJBQWMsQ0FBQyxNQUFNO2dCQUMvQixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7Z0JBQzVCLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEYsWUFBWSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUN0RSxRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDdkQ7U0FDRixDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFBO1FBQ2xDLElBQUksS0FBSyxDQUFDLFFBQVE7WUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDM0QsSUFBSSxLQUFLLENBQUMsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNyRCxDQUFDOztBQWxCSCx3QkFtQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXN0b21SZXNvdXJjZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiXG5pbXBvcnQgeyBJRGF0YWJhc2UgfSBmcm9tIFwiLi9kYXRhYmFzZVwiXG5pbXBvcnQgeyBSZHNTcWxSZXNvdXJjZSB9IGZyb20gXCIuL2VudW1cIlxuaW1wb3J0IHsgSVByb3ZpZGVyIH0gZnJvbSBcIi4vcHJvdmlkZXJcIlxuaW1wb3J0IHsgUm9sZSB9IGZyb20gXCIuL3JvbGVcIlxuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVtYVByb3BzIHtcbiAgLyoqXG4gICAqIFByb3ZpZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IElQcm92aWRlclxuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgZGVmYXVsdCBkYXRhYmFzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YWJhc2U/OiBJRGF0YWJhc2VcblxuICAvKipcbiAgICogU2NoZW1hIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBzY2hlbWFOYW1lOiBzdHJpbmdcblxuICAvKipcbiAgICogT3B0aW9uYWwgcm9sZSB3aGljaCB3aWxsIGJlIGdyYW50ZWQgdXNhZ2UgYW5kIGNyZWF0ZSBwZXJtaXNzaW9uc1xuICAgKiB0byB0aGlzIHNjaGVtYS4gVGhpcyB3YXkgdGhlIHJvbGUgY2FuIHJlYWQgaXRzIG93biB0YWJsZXMsIGJ1dFxuICAgKiBjYW5ub3Qgc2VlIG9yIGFjY2VzcyB0YWJsZXMgY3JlYXRlZCBieSBvdGhlcnMuXG4gICAqL1xuICByZWFkb25seSByb2xlPzogUm9sZVxufVxuXG5leHBvcnQgY2xhc3MgU2NoZW1hIGV4dGVuZHMgQ3VzdG9tUmVzb3VyY2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgc2NoZW1hTmFtZTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNjaGVtYVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHByb3BzLnByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgUmVzb3VyY2U6IFJkc1NxbFJlc291cmNlLlNDSEVNQSxcbiAgICAgICAgUmVzb3VyY2VJZDogcHJvcHMuc2NoZW1hTmFtZSxcbiAgICAgICAgLi4uKHByb3BzLnByb3ZpZGVyLnNlY3JldCA/IHsgU2VjcmV0QXJuOiBwcm9wcy5wcm92aWRlci5zZWNyZXQuc2VjcmV0QXJuIH0gOiB7fSksXG4gICAgICAgIERhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2UgPyBwcm9wcy5kYXRhYmFzZS5kYXRhYmFzZU5hbWUgOiB1bmRlZmluZWQsXG4gICAgICAgIFJvbGVOYW1lOiBwcm9wcy5yb2xlID8gcHJvcHMucm9sZS5yb2xlTmFtZSA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgfSlcbiAgICB0aGlzLm5vZGUuYWRkRGVwZW5kZW5jeShwcm9wcy5wcm92aWRlcilcbiAgICB0aGlzLnNjaGVtYU5hbWUgPSBwcm9wcy5zY2hlbWFOYW1lXG4gICAgaWYgKHByb3BzLmRhdGFiYXNlKSB0aGlzLm5vZGUuYWRkRGVwZW5kZW5jeShwcm9wcy5kYXRhYmFzZSlcbiAgICBpZiAocHJvcHMucm9sZSkgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kocHJvcHMucm9sZSlcbiAgfVxufVxuIl19
|
package/lib/sql.js
CHANGED
|
@@ -24,5 +24,5 @@ class Sql extends aws_cdk_lib_1.CustomResource {
|
|
|
24
24
|
}
|
|
25
25
|
exports.Sql = Sql;
|
|
26
26
|
_a = JSII_RTTI_SYMBOL_1;
|
|
27
|
-
Sql[_a] = { fqn: "cdk-rds-sql.Sql", version: "7.
|
|
27
|
+
Sql[_a] = { fqn: "cdk-rds-sql.Sql", version: "7.3.0" };
|
|
28
28
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE0QztBQUc1QyxpQ0FBdUM7QUEyQnZDLE1BQWEsR0FBSSxTQUFRLDRCQUFjO0lBQ3JDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBZTtRQUN2RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFlBQVksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVk7WUFDekMsVUFBVSxFQUFFO2dCQUNWLFFBQVEsRUFBRSxxQkFBYyxDQUFDLEdBQUc7Z0JBQzVCLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEYsWUFBWSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUN0RSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7Z0JBQzFCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTthQUN6QjtTQUNGLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN2QyxJQUFJLEtBQUssQ0FBQyxRQUFRO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzdELENBQUM7O0FBZEgsa0JBZUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXN0b21SZXNvdXJjZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiXG5pbXBvcnQgeyBJRGF0YWJhc2UgfSBmcm9tIFwiLi9kYXRhYmFzZVwiXG5pbXBvcnQgeyBSZHNTcWxSZXNvdXJjZSB9IGZyb20gXCIuL2VudW1cIlxuaW1wb3J0IHsgSVByb3ZpZGVyIH0gZnJvbSBcIi4vcHJvdmlkZXJcIlxuXG5leHBvcnQgaW50ZXJmYWNlIFNxbFByb3BzIHtcbiAgLyoqXG4gICAqIFByb3ZpZGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IElQcm92aWRlclxuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBkYXRhYmFzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgZGVmYXVsdCBkYXRhYmFzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YWJhc2U/OiBJRGF0YWJhc2VcblxuICAvKipcbiAgICogU1FMLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGVtZW50Pzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHN0YXRtZW50IHRvIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIHJlc291cmNlIGlzIGRlbGV0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHJvbGxiYWNrPzogc3RyaW5nXG59XG5cbmV4cG9ydCBjbGFzcyBTcWwgZXh0ZW5kcyBDdXN0b21SZXNvdXJjZSB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTcWxQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgc2VydmljZVRva2VuOiBwcm9wcy5wcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIFJlc291cmNlOiBSZHNTcWxSZXNvdXJjZS5TUUwsXG4gICAgICAgIC4uLihwcm9wcy5wcm92aWRlci5zZWNyZXQgPyB7IFNlY3JldEFybjogcHJvcHMucHJvdmlkZXIuc2VjcmV0LnNlY3JldEFybiB9IDoge30pLFxuICAgICAgICBEYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlID8gcHJvcHMuZGF0YWJhc2UuZGF0YWJhc2VOYW1lIDogdW5kZWZpbmVkLFxuICAgICAgICBTdGF0ZW1lbnQ6IHByb3BzLnN0YXRlbWVudCxcbiAgICAgICAgUm9sbGJhY2s6IHByb3BzLnJvbGxiYWNrLFxuICAgICAgfSxcbiAgICB9KVxuICAgIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHByb3BzLnByb3ZpZGVyKVxuICAgIGlmIChwcm9wcy5kYXRhYmFzZSkgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kocHJvcHMuZGF0YWJhc2UpXG4gIH1cbn1cbiJdfQ==
|