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
package/lambda/handler.ts
CHANGED
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
EngineRoleProperties,
|
|
25
25
|
EngineSchemaProperties,
|
|
26
26
|
EngineSqlProperties,
|
|
27
|
+
EngineIamGrantProperties,
|
|
27
28
|
} from "./types"
|
|
28
29
|
import { RdsSqlResource } from "../src/enum"
|
|
29
30
|
|
|
@@ -70,6 +71,13 @@ function toSqlEngineProps(props: ResourceProperties): EngineSqlProperties {
|
|
|
70
71
|
return props
|
|
71
72
|
}
|
|
72
73
|
|
|
74
|
+
function toIamGrantEngineProps(props: ResourceProperties): EngineIamGrantProperties {
|
|
75
|
+
if (props.Resource !== RdsSqlResource.IAM_GRANT) {
|
|
76
|
+
throw new Error(`Expected IAM_GRANT resource, got ${props.Resource}`)
|
|
77
|
+
}
|
|
78
|
+
return props
|
|
79
|
+
}
|
|
80
|
+
|
|
73
81
|
export const handler = async (
|
|
74
82
|
event:
|
|
75
83
|
| CloudFormationCustomResourceCreateEvent<ResourceProperties>
|
|
@@ -86,37 +94,58 @@ export const handler = async (
|
|
|
86
94
|
if (!Object.values(RdsSqlResource).includes(resource)) {
|
|
87
95
|
throw `Resource type '${resource}' not recognised.`
|
|
88
96
|
}
|
|
89
|
-
if
|
|
90
|
-
|
|
91
|
-
|
|
97
|
+
// Check if we're dealing with DSQL based on environment variables
|
|
98
|
+
const dsqlEndpoint = process.env.DSQL_ENDPOINT
|
|
99
|
+
const dsqlPort = process.env.DSQL_PORT
|
|
92
100
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
})
|
|
101
|
+
let engine: string
|
|
102
|
+
let secretValues: any = {}
|
|
96
103
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
if (dsqlEndpoint) {
|
|
105
|
+
// DSQL configuration - use environment variables
|
|
106
|
+
log(`Using DSQL endpoint: ${dsqlEndpoint}`)
|
|
107
|
+
engine = "dsql"
|
|
108
|
+
secretValues = {
|
|
109
|
+
host: dsqlEndpoint,
|
|
110
|
+
port: parseInt(dsqlPort || "5432", 10),
|
|
111
|
+
username: "admin", // DSQL always uses admin user
|
|
112
|
+
engine: "dsql",
|
|
113
|
+
}
|
|
114
|
+
} else {
|
|
115
|
+
// Traditional RDS configuration - use secrets
|
|
116
|
+
if (!event.ResourceProperties.SecretArn) {
|
|
117
|
+
throw "SecretArn is a required property"
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const command = new GetSecretValueCommand({
|
|
121
|
+
SecretId: event.ResourceProperties.SecretArn,
|
|
122
|
+
})
|
|
123
|
+
|
|
124
|
+
log(`Fetching secret ${event.ResourceProperties.SecretArn}`)
|
|
125
|
+
const secret: GetSecretValueCommandOutput = await backOff(
|
|
126
|
+
async () => {
|
|
127
|
+
try {
|
|
128
|
+
const result = await secrets_client.send(command)
|
|
129
|
+
return result
|
|
130
|
+
} catch (e) {
|
|
131
|
+
log("Error fetching secret %o", e)
|
|
132
|
+
throw e
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
numOfAttempts: 10,
|
|
137
|
+
startingDelay: 500,
|
|
106
138
|
}
|
|
107
|
-
|
|
108
|
-
{
|
|
109
|
-
|
|
110
|
-
startingDelay: 500,
|
|
139
|
+
)
|
|
140
|
+
if (!secret.SecretString) {
|
|
141
|
+
throw `No secret string in ${event.ResourceProperties.SecretArn}`
|
|
111
142
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
143
|
+
secretValues = JSON.parse(secret.SecretString)
|
|
144
|
+
|
|
145
|
+
// Determine the database engine type
|
|
146
|
+
engine = secretValues.engine || "postgresql" // Default to postgresql if not specified
|
|
115
147
|
}
|
|
116
|
-
const secretValues = JSON.parse(secret.SecretString)
|
|
117
148
|
|
|
118
|
-
// Determine the database engine type
|
|
119
|
-
const engine = secretValues.engine || "postgresql" // Default to postgresql if not specified
|
|
120
149
|
const dbEngine = EngineFactory.createEngine(engine)
|
|
121
150
|
|
|
122
151
|
let sql: string | string[] | undefined
|
|
@@ -144,6 +173,12 @@ export const handler = async (
|
|
|
144
173
|
case RdsSqlResource.SQL:
|
|
145
174
|
sql = dbEngine.createSql(resourceId, toSqlEngineProps(event.ResourceProperties))
|
|
146
175
|
break
|
|
176
|
+
case RdsSqlResource.IAM_GRANT:
|
|
177
|
+
sql = dbEngine.createIamGrant(
|
|
178
|
+
resourceId,
|
|
179
|
+
toIamGrantEngineProps(event.ResourceProperties)
|
|
180
|
+
)
|
|
181
|
+
break
|
|
147
182
|
case RdsSqlResource.PARAMETER_PASSWORD:
|
|
148
183
|
await handleParameterPassword(event.ResourceProperties)
|
|
149
184
|
break
|
|
@@ -185,6 +220,16 @@ export const handler = async (
|
|
|
185
220
|
toSqlEngineProps(event.ResourceProperties)
|
|
186
221
|
)
|
|
187
222
|
break
|
|
223
|
+
case RdsSqlResource.IAM_GRANT:
|
|
224
|
+
const iamUpdateEvent =
|
|
225
|
+
event as CloudFormationCustomResourceUpdateEvent<ResourceProperties>
|
|
226
|
+
sql = dbEngine.updateIamGrant(
|
|
227
|
+
resourceId,
|
|
228
|
+
oldResourceId,
|
|
229
|
+
toIamGrantEngineProps(event.ResourceProperties),
|
|
230
|
+
toIamGrantEngineProps(iamUpdateEvent.OldResourceProperties)
|
|
231
|
+
)
|
|
232
|
+
break
|
|
188
233
|
case RdsSqlResource.PARAMETER_PASSWORD:
|
|
189
234
|
await handleParameterPassword(event.ResourceProperties)
|
|
190
235
|
sql = undefined // No SQL to execute
|
|
@@ -212,6 +257,12 @@ export const handler = async (
|
|
|
212
257
|
case RdsSqlResource.SQL:
|
|
213
258
|
sql = dbEngine.deleteSql(resourceId, toSqlEngineProps(event.ResourceProperties))
|
|
214
259
|
break
|
|
260
|
+
case RdsSqlResource.IAM_GRANT:
|
|
261
|
+
sql = dbEngine.deleteIamGrant(
|
|
262
|
+
resourceId,
|
|
263
|
+
toIamGrantEngineProps(event.ResourceProperties)
|
|
264
|
+
)
|
|
265
|
+
break
|
|
215
266
|
case RdsSqlResource.PARAMETER_PASSWORD:
|
|
216
267
|
await deleteParameterPassword(event.ResourceProperties)
|
|
217
268
|
break
|
|
@@ -222,7 +273,10 @@ export const handler = async (
|
|
|
222
273
|
|
|
223
274
|
if (sql) {
|
|
224
275
|
let database: string
|
|
225
|
-
if (
|
|
276
|
+
if (engine === "dsql") {
|
|
277
|
+
// DSQL always uses 'postgres' database
|
|
278
|
+
database = "postgres"
|
|
279
|
+
} else if (resource === RdsSqlResource.ROLE) {
|
|
226
280
|
database = secretValues.dbname
|
|
227
281
|
} else {
|
|
228
282
|
database = databaseName ?? secretValues.dbname // connect to given database if possible, else to database mentioned in secret
|
|
@@ -232,7 +286,7 @@ export const handler = async (
|
|
|
232
286
|
host: secretValues.host,
|
|
233
287
|
port: secretValues.port,
|
|
234
288
|
user: secretValues.username,
|
|
235
|
-
password: secretValues.password,
|
|
289
|
+
password: secretValues.password || "", // DSQL will generate token in engine
|
|
236
290
|
database: database,
|
|
237
291
|
}
|
|
238
292
|
|
package/lambda/types.ts
CHANGED
|
@@ -24,6 +24,10 @@ export interface EngineSqlProperties {
|
|
|
24
24
|
readonly Rollback?: string
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
export interface EngineIamGrantProperties {
|
|
28
|
+
readonly ResourceArn?: string
|
|
29
|
+
}
|
|
30
|
+
|
|
27
31
|
// Common CloudFormation properties shared by all resources
|
|
28
32
|
export interface CommonProperties
|
|
29
33
|
extends CloudFormationCustomResourceResourcePropertiesCommon {
|
|
@@ -52,6 +56,11 @@ export interface SqlProperties extends CommonProperties, EngineSqlProperties {
|
|
|
52
56
|
readonly Resource: RdsSqlResource.SQL
|
|
53
57
|
}
|
|
54
58
|
|
|
59
|
+
export interface IamGrantProperties extends CommonProperties, EngineIamGrantProperties {
|
|
60
|
+
readonly Resource: RdsSqlResource.IAM_GRANT
|
|
61
|
+
readonly ResourceArn: string
|
|
62
|
+
}
|
|
63
|
+
|
|
55
64
|
// Parameter password specific properties
|
|
56
65
|
export interface ParameterPasswordProperties extends CommonProperties {
|
|
57
66
|
readonly Resource: RdsSqlResource.PARAMETER_PASSWORD
|
|
@@ -65,6 +74,7 @@ export type ResourceProperties =
|
|
|
65
74
|
| RoleProperties
|
|
66
75
|
| SchemaProperties
|
|
67
76
|
| SqlProperties
|
|
77
|
+
| IamGrantProperties
|
|
68
78
|
| ParameterPasswordProperties
|
|
69
79
|
|
|
70
80
|
// Custom resource response interface
|
package/lib/database.js
CHANGED
|
@@ -4,8 +4,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.Database = void 0;
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
6
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
const dsql = require("aws-cdk-lib/aws-dsql");
|
|
7
8
|
const constructs_1 = require("constructs");
|
|
8
9
|
const enum_1 = require("./enum");
|
|
10
|
+
/**
|
|
11
|
+
* Helper function to determine if a cluster is a DSQL cluster
|
|
12
|
+
*/
|
|
13
|
+
function isDsqlCluster(cluster) {
|
|
14
|
+
return cluster instanceof dsql.CfnCluster;
|
|
15
|
+
}
|
|
9
16
|
class ImportedDatabase extends constructs_1.Construct {
|
|
10
17
|
constructor(scope, id, props) {
|
|
11
18
|
super(scope, id);
|
|
@@ -22,12 +29,16 @@ class Database extends aws_cdk_lib_1.CustomResource {
|
|
|
22
29
|
});
|
|
23
30
|
}
|
|
24
31
|
constructor(scope, id, props) {
|
|
32
|
+
// Check if using DSQL provider and forbid database creation
|
|
33
|
+
if (isDsqlCluster(props.provider.cluster)) {
|
|
34
|
+
throw new Error("Database creation is not supported with DSQL. DSQL always uses 'postgres' database.");
|
|
35
|
+
}
|
|
25
36
|
super(scope, id, {
|
|
26
37
|
serviceToken: props.provider.serviceToken,
|
|
27
38
|
properties: {
|
|
28
39
|
Resource: enum_1.RdsSqlResource.DATABASE,
|
|
29
40
|
ResourceId: props.databaseName,
|
|
30
|
-
SecretArn: props.provider.secret.secretArn,
|
|
41
|
+
...(props.provider.secret ? { SecretArn: props.provider.secret.secretArn } : {}),
|
|
31
42
|
Owner: props.owner?.roleName,
|
|
32
43
|
},
|
|
33
44
|
});
|
|
@@ -40,5 +51,5 @@ class Database extends aws_cdk_lib_1.CustomResource {
|
|
|
40
51
|
}
|
|
41
52
|
exports.Database = Database;
|
|
42
53
|
_a = JSII_RTTI_SYMBOL_1;
|
|
43
|
-
Database[_a] = { fqn: "cdk-rds-sql.Database", version: "7.0
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
Database[_a] = { fqn: "cdk-rds-sql.Database", version: "7.1.0" };
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBNEM7QUFDNUMsNkNBQTRDO0FBRTVDLDJDQUFzQztBQUN0QyxpQ0FBdUM7QUFJdkM7O0dBRUc7QUFDSCxTQUFTLGFBQWEsQ0FDcEIsT0FBK0Q7SUFFL0QsT0FBTyxPQUFPLFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQTtBQUMzQyxDQUFDO0FBeUJELE1BQU0sZ0JBQWlCLFNBQVEsc0JBQVM7SUFHdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQTtJQUN4QyxDQUFDO0NBQ0Y7QUFFRCxNQUFhLFFBQVMsU0FBUSw0QkFBYztJQUMxQzs7T0FFRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxZQUFvQjtRQUN4RSxPQUFPLElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNyQyxZQUFZLEVBQUUsWUFBWTtTQUMzQixDQUFDLENBQUE7SUFDSixDQUFDO0lBSUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUM1RCw0REFBNEQ7UUFDNUQsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzFDLE1BQU0sSUFBSSxLQUFLLENBQ2IscUZBQXFGLENBQ3RGLENBQUE7UUFDSCxDQUFDO1FBRUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZO1lBQ3pDLFVBQVUsRUFBRTtnQkFDVixRQUFRLEVBQUUscUJBQWMsQ0FBQyxRQUFRO2dCQUNqQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQzlCLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEYsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUTthQUM3QjtTQUNGLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUE7UUFDdEMsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3RDLENBQUM7SUFDSCxDQUFDOztBQWxDSCw0QkFtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXN0b21SZXNvdXJjZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgKiBhcyBkc3FsIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZHNxbFwiXG5pbXBvcnQgeyBJRGF0YWJhc2VDbHVzdGVyLCBJRGF0YWJhc2VJbnN0YW5jZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtcmRzXCJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCB7IFJkc1NxbFJlc291cmNlIH0gZnJvbSBcIi4vZW51bVwiXG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCIuL3Byb3ZpZGVyXCJcbmltcG9ydCB7IFJvbGUgfSBmcm9tIFwiLi9yb2xlXCJcblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGEgY2x1c3RlciBpcyBhIERTUUwgY2x1c3RlclxuICovXG5mdW5jdGlvbiBpc0RzcWxDbHVzdGVyKFxuICBjbHVzdGVyOiBJRGF0YWJhc2VDbHVzdGVyIHwgSURhdGFiYXNlSW5zdGFuY2UgfCBkc3FsLkNmbkNsdXN0ZXJcbik6IGNsdXN0ZXIgaXMgZHNxbC5DZm5DbHVzdGVyIHtcbiAgcmV0dXJuIGNsdXN0ZXIgaW5zdGFuY2VvZiBkc3FsLkNmbkNsdXN0ZXJcbn1cblxuaW50ZXJmYWNlIERhdGFiYXNlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIGRhdGFiYXNlIHRvIGNyZWF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRhdGFiYXNlIG93bmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgb3duZXI/OiBSb2xlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VQcm9wcyBleHRlbmRzIERhdGFiYXNlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBQcm92aWRlci5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyOiBQcm92aWRlclxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEYXRhYmFzZSB7XG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZTogc3RyaW5nXG59XG5cbmNsYXNzIEltcG9ydGVkRGF0YWJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJRGF0YWJhc2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0YWJhc2VOYW1lOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRGF0YWJhc2VBdHRyaWJ1dGVzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuICAgIHRoaXMuZGF0YWJhc2VOYW1lID0gcHJvcHMuZGF0YWJhc2VOYW1lXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGFiYXNlIGV4dGVuZHMgQ3VzdG9tUmVzb3VyY2UgaW1wbGVtZW50cyBJRGF0YWJhc2Uge1xuICAvKipcbiAgICogUmV0dXJuIGEgRGF0YWJhc2UgYmFzZWQgdXBvbiBuYW1lIG9ubHkuIFVzZSBmb3IgaW1wb3J0aW5nIGV4aXN0aW5nIGRhdGFiYXNlcy5cbiAgICovXG4gIHN0YXRpYyBmcm9tRGF0YWJhc2VOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGRhdGFiYXNlTmFtZTogc3RyaW5nKTogSURhdGFiYXNlIHtcbiAgICByZXR1cm4gbmV3IEltcG9ydGVkRGF0YWJhc2Uoc2NvcGUsIGlkLCB7XG4gICAgICBkYXRhYmFzZU5hbWU6IGRhdGFiYXNlTmFtZSxcbiAgICB9KVxuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGRhdGFiYXNlTmFtZTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFiYXNlUHJvcHMpIHtcbiAgICAvLyBDaGVjayBpZiB1c2luZyBEU1FMIHByb3ZpZGVyIGFuZCBmb3JiaWQgZGF0YWJhc2UgY3JlYXRpb25cbiAgICBpZiAoaXNEc3FsQ2x1c3Rlcihwcm9wcy5wcm92aWRlci5jbHVzdGVyKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkRhdGFiYXNlIGNyZWF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBEU1FMLiBEU1FMIGFsd2F5cyB1c2VzICdwb3N0Z3JlcycgZGF0YWJhc2UuXCJcbiAgICAgIClcbiAgICB9XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogcHJvcHMucHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBSZXNvdXJjZTogUmRzU3FsUmVzb3VyY2UuREFUQUJBU0UsXG4gICAgICAgIFJlc291cmNlSWQ6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgLi4uKHByb3BzLnByb3ZpZGVyLnNlY3JldCA/IHsgU2VjcmV0QXJuOiBwcm9wcy5wcm92aWRlci5zZWNyZXQuc2VjcmV0QXJuIH0gOiB7fSksXG4gICAgICAgIE93bmVyOiBwcm9wcy5vd25lcj8ucm9sZU5hbWUsXG4gICAgICB9LFxuICAgIH0pXG4gICAgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kocHJvcHMucHJvdmlkZXIpXG4gICAgdGhpcy5kYXRhYmFzZU5hbWUgPSBwcm9wcy5kYXRhYmFzZU5hbWVcbiAgICBpZiAocHJvcHMub3duZXIpIHtcbiAgICAgIHRoaXMubm9kZS5hZGREZXBlbmRlbmN5KHByb3BzLm93bmVyKVxuICAgIH1cbiAgfVxufVxuIl19
|
package/lib/enum.d.ts
CHANGED
package/lib/enum.js
CHANGED
|
@@ -8,5 +8,6 @@ var RdsSqlResource;
|
|
|
8
8
|
RdsSqlResource["SQL"] = "sql";
|
|
9
9
|
RdsSqlResource["DATABASE"] = "database";
|
|
10
10
|
RdsSqlResource["PARAMETER_PASSWORD"] = "parameter_password";
|
|
11
|
+
RdsSqlResource["IAM_GRANT"] = "iam_grant";
|
|
11
12
|
})(RdsSqlResource || (exports.RdsSqlResource = RdsSqlResource = {}));
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQVksY0FPWDtBQVBELFdBQVksY0FBYztJQUN4QixtQ0FBaUIsQ0FBQTtJQUNqQiwrQkFBYSxDQUFBO0lBQ2IsNkJBQVcsQ0FBQTtJQUNYLHVDQUFxQixDQUFBO0lBQ3JCLDJEQUF5QyxDQUFBO0lBQ3pDLHlDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFQVyxjQUFjLDhCQUFkLGNBQWMsUUFPekIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBSZHNTcWxSZXNvdXJjZSB7XG4gIFNDSEVNQSA9IFwic2NoZW1hXCIsXG4gIFJPTEUgPSBcInJvbGVcIixcbiAgU1FMID0gXCJzcWxcIixcbiAgREFUQUJBU0UgPSBcImRhdGFiYXNlXCIsXG4gIFBBUkFNRVRFUl9QQVNTV09SRCA9IFwicGFyYW1ldGVyX3Bhc3N3b3JkXCIsXG4gIElBTV9HUkFOVCA9IFwiaWFtX2dyYW50XCIsXG59XG4iXX0=
|