cdk-rds-sql 7.0.2 → 7.2.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/settings.json +25 -0
- package/.jsii +590 -74
- 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 +83 -27
- package/lambda/types.ts +10 -0
- package/lib/database.d.ts +2 -2
- package/lib/database.js +8 -3
- package/lib/enum.d.ts +2 -1
- package/lib/enum.js +2 -1
- package/lib/handler/handler.js +24064 -23774
- package/lib/iam-grant.d.ts +20 -0
- package/lib/iam-grant.js +29 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/provider.d.ts +57 -7
- package/lib/provider.js +128 -27
- package/lib/role.custom-resource.d.ts +2 -2
- package/lib/role.custom-resource.js +2 -2
- package/lib/role.d.ts +7 -3
- package/lib/role.js +82 -65
- package/lib/schema.d.ts +5 -3
- package/lib/schema.js +3 -3
- package/lib/sql.d.ts +2 -2
- 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,60 @@ 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
|
+
// Use SecretArn from event properties, fallback to environment variable
|
|
117
|
+
const secretArn = event.ResourceProperties.SecretArn || process.env.SECRET_ARN
|
|
118
|
+
if (!secretArn) {
|
|
119
|
+
throw "SecretArn is required (not in event properties or environment)"
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
const command = new GetSecretValueCommand({
|
|
123
|
+
SecretId: secretArn,
|
|
124
|
+
})
|
|
125
|
+
|
|
126
|
+
log(`Fetching secret ${secretArn}`)
|
|
127
|
+
const secret: GetSecretValueCommandOutput = await backOff(
|
|
128
|
+
async () => {
|
|
129
|
+
try {
|
|
130
|
+
const result = await secrets_client.send(command)
|
|
131
|
+
return result
|
|
132
|
+
} catch (e) {
|
|
133
|
+
log("Error fetching secret %o", e)
|
|
134
|
+
throw e
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
numOfAttempts: 10,
|
|
139
|
+
startingDelay: 500,
|
|
106
140
|
}
|
|
107
|
-
|
|
108
|
-
{
|
|
109
|
-
|
|
110
|
-
startingDelay: 500,
|
|
141
|
+
)
|
|
142
|
+
if (!secret.SecretString) {
|
|
143
|
+
throw `No secret string in ${secretArn}`
|
|
111
144
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
145
|
+
secretValues = JSON.parse(secret.SecretString)
|
|
146
|
+
|
|
147
|
+
// Determine the database engine type
|
|
148
|
+
engine = secretValues.engine || "postgresql" // Default to postgresql if not specified
|
|
115
149
|
}
|
|
116
|
-
const secretValues = JSON.parse(secret.SecretString)
|
|
117
150
|
|
|
118
|
-
// Determine the database engine type
|
|
119
|
-
const engine = secretValues.engine || "postgresql" // Default to postgresql if not specified
|
|
120
151
|
const dbEngine = EngineFactory.createEngine(engine)
|
|
121
152
|
|
|
122
153
|
let sql: string | string[] | undefined
|
|
@@ -144,6 +175,12 @@ export const handler = async (
|
|
|
144
175
|
case RdsSqlResource.SQL:
|
|
145
176
|
sql = dbEngine.createSql(resourceId, toSqlEngineProps(event.ResourceProperties))
|
|
146
177
|
break
|
|
178
|
+
case RdsSqlResource.IAM_GRANT:
|
|
179
|
+
sql = dbEngine.createIamGrant(
|
|
180
|
+
resourceId,
|
|
181
|
+
toIamGrantEngineProps(event.ResourceProperties)
|
|
182
|
+
)
|
|
183
|
+
break
|
|
147
184
|
case RdsSqlResource.PARAMETER_PASSWORD:
|
|
148
185
|
await handleParameterPassword(event.ResourceProperties)
|
|
149
186
|
break
|
|
@@ -185,6 +222,16 @@ export const handler = async (
|
|
|
185
222
|
toSqlEngineProps(event.ResourceProperties)
|
|
186
223
|
)
|
|
187
224
|
break
|
|
225
|
+
case RdsSqlResource.IAM_GRANT:
|
|
226
|
+
const iamUpdateEvent =
|
|
227
|
+
event as CloudFormationCustomResourceUpdateEvent<ResourceProperties>
|
|
228
|
+
sql = dbEngine.updateIamGrant(
|
|
229
|
+
resourceId,
|
|
230
|
+
oldResourceId,
|
|
231
|
+
toIamGrantEngineProps(event.ResourceProperties),
|
|
232
|
+
toIamGrantEngineProps(iamUpdateEvent.OldResourceProperties)
|
|
233
|
+
)
|
|
234
|
+
break
|
|
188
235
|
case RdsSqlResource.PARAMETER_PASSWORD:
|
|
189
236
|
await handleParameterPassword(event.ResourceProperties)
|
|
190
237
|
sql = undefined // No SQL to execute
|
|
@@ -212,6 +259,12 @@ export const handler = async (
|
|
|
212
259
|
case RdsSqlResource.SQL:
|
|
213
260
|
sql = dbEngine.deleteSql(resourceId, toSqlEngineProps(event.ResourceProperties))
|
|
214
261
|
break
|
|
262
|
+
case RdsSqlResource.IAM_GRANT:
|
|
263
|
+
sql = dbEngine.deleteIamGrant(
|
|
264
|
+
resourceId,
|
|
265
|
+
toIamGrantEngineProps(event.ResourceProperties)
|
|
266
|
+
)
|
|
267
|
+
break
|
|
215
268
|
case RdsSqlResource.PARAMETER_PASSWORD:
|
|
216
269
|
await deleteParameterPassword(event.ResourceProperties)
|
|
217
270
|
break
|
|
@@ -222,7 +275,10 @@ export const handler = async (
|
|
|
222
275
|
|
|
223
276
|
if (sql) {
|
|
224
277
|
let database: string
|
|
225
|
-
if (
|
|
278
|
+
if (engine === "dsql") {
|
|
279
|
+
// DSQL always uses 'postgres' database
|
|
280
|
+
database = "postgres"
|
|
281
|
+
} else if (resource === RdsSqlResource.ROLE) {
|
|
226
282
|
database = secretValues.dbname
|
|
227
283
|
} else {
|
|
228
284
|
database = databaseName ?? secretValues.dbname // connect to given database if possible, else to database mentioned in secret
|
|
@@ -232,7 +288,7 @@ export const handler = async (
|
|
|
232
288
|
host: secretValues.host,
|
|
233
289
|
port: secretValues.port,
|
|
234
290
|
user: secretValues.username,
|
|
235
|
-
password: secretValues.password,
|
|
291
|
+
password: secretValues.password || "", // DSQL will generate token in engine
|
|
236
292
|
database: database,
|
|
237
293
|
}
|
|
238
294
|
|
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.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CustomResource } from "aws-cdk-lib";
|
|
2
2
|
import { Construct } from "constructs";
|
|
3
|
-
import {
|
|
3
|
+
import { IProvider } from "./provider";
|
|
4
4
|
import { Role } from "./role";
|
|
5
5
|
interface DatabaseAttributes {
|
|
6
6
|
/**
|
|
@@ -16,7 +16,7 @@ export interface DatabaseProps extends DatabaseAttributes {
|
|
|
16
16
|
/**
|
|
17
17
|
* Provider.
|
|
18
18
|
*/
|
|
19
|
-
readonly provider:
|
|
19
|
+
readonly provider: IProvider;
|
|
20
20
|
}
|
|
21
21
|
export interface IDatabase {
|
|
22
22
|
readonly databaseName: string;
|
package/lib/database.js
CHANGED
|
@@ -6,6 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
6
6
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
7
|
const constructs_1 = require("constructs");
|
|
8
8
|
const enum_1 = require("./enum");
|
|
9
|
+
const provider_1 = require("./provider");
|
|
9
10
|
class ImportedDatabase extends constructs_1.Construct {
|
|
10
11
|
constructor(scope, id, props) {
|
|
11
12
|
super(scope, id);
|
|
@@ -22,12 +23,16 @@ class Database extends aws_cdk_lib_1.CustomResource {
|
|
|
22
23
|
});
|
|
23
24
|
}
|
|
24
25
|
constructor(scope, id, props) {
|
|
26
|
+
// Check if using DSQL provider and forbid database creation
|
|
27
|
+
if (props.provider.engine === provider_1.DatabaseEngine.DSQL) {
|
|
28
|
+
throw new Error("Database creation is not supported with DSQL. DSQL always uses 'postgres' database.");
|
|
29
|
+
}
|
|
25
30
|
super(scope, id, {
|
|
26
31
|
serviceToken: props.provider.serviceToken,
|
|
27
32
|
properties: {
|
|
28
33
|
Resource: enum_1.RdsSqlResource.DATABASE,
|
|
29
34
|
ResourceId: props.databaseName,
|
|
30
|
-
SecretArn: props.provider.secret.secretArn,
|
|
35
|
+
...(props.provider.secret ? { SecretArn: props.provider.secret.secretArn } : {}),
|
|
31
36
|
Owner: props.owner?.roleName,
|
|
32
37
|
},
|
|
33
38
|
});
|
|
@@ -40,5 +45,5 @@ class Database extends aws_cdk_lib_1.CustomResource {
|
|
|
40
45
|
}
|
|
41
46
|
exports.Database = Database;
|
|
42
47
|
_a = JSII_RTTI_SYMBOL_1;
|
|
43
|
-
Database[_a] = { fqn: "cdk-rds-sql.Database", version: "7.0
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
Database[_a] = { fqn: "cdk-rds-sql.Database", version: "7.2.0" };
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBNEM7QUFDNUMsMkNBQXNDO0FBQ3RDLGlDQUF1QztBQUN2Qyx5Q0FBc0Q7QUEwQnRELE1BQU0sZ0JBQWlCLFNBQVEsc0JBQVM7SUFHdEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQTtJQUN4QyxDQUFDO0NBQ0Y7QUFFRCxNQUFhLFFBQVMsU0FBUSw0QkFBYztJQUMxQzs7T0FFRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxZQUFvQjtRQUN4RSxPQUFPLElBQUksZ0JBQWdCLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNyQyxZQUFZLEVBQUUsWUFBWTtTQUMzQixDQUFDLENBQUE7SUFDSixDQUFDO0lBSUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUM1RCw0REFBNEQ7UUFDNUQsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyx5QkFBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xELE1BQU0sSUFBSSxLQUFLLENBQ2IscUZBQXFGLENBQ3RGLENBQUE7UUFDSCxDQUFDO1FBRUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZO1lBQ3pDLFVBQVUsRUFBRTtnQkFDVixRQUFRLEVBQUUscUJBQWMsQ0FBQyxRQUFRO2dCQUNqQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQzlCLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDaEYsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUTthQUM3QjtTQUNGLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUN2QyxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUE7UUFDdEMsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3RDLENBQUM7SUFDSCxDQUFDOztBQWxDSCw0QkFtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXN0b21SZXNvdXJjZSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiXG5pbXBvcnQgeyBSZHNTcWxSZXNvdXJjZSB9IGZyb20gXCIuL2VudW1cIlxuaW1wb3J0IHsgSVByb3ZpZGVyLCBEYXRhYmFzZUVuZ2luZSB9IGZyb20gXCIuL3Byb3ZpZGVyXCJcbmltcG9ydCB7IFJvbGUgfSBmcm9tIFwiLi9yb2xlXCJcblxuaW50ZXJmYWNlIERhdGFiYXNlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIGRhdGFiYXNlIHRvIGNyZWF0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRhdGFiYXNlTmFtZTogc3RyaW5nXG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGRhdGFiYXNlIG93bmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgb3duZXI/OiBSb2xlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YWJhc2VQcm9wcyBleHRlbmRzIERhdGFiYXNlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBQcm92aWRlci5cbiAgICovXG4gIHJlYWRvbmx5IHByb3ZpZGVyOiBJUHJvdmlkZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRGF0YWJhc2Uge1xuICByZWFkb25seSBkYXRhYmFzZU5hbWU6IHN0cmluZ1xufVxuXG5jbGFzcyBJbXBvcnRlZERhdGFiYXNlIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSURhdGFiYXNlIHtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGFiYXNlTmFtZTogc3RyaW5nXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFiYXNlQXR0cmlidXRlcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcbiAgICB0aGlzLmRhdGFiYXNlTmFtZSA9IHByb3BzLmRhdGFiYXNlTmFtZVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhYmFzZSBleHRlbmRzIEN1c3RvbVJlc291cmNlIGltcGxlbWVudHMgSURhdGFiYXNlIHtcbiAgLyoqXG4gICAqIFJldHVybiBhIERhdGFiYXNlIGJhc2VkIHVwb24gbmFtZSBvbmx5LiBVc2UgZm9yIGltcG9ydGluZyBleGlzdGluZyBkYXRhYmFzZXMuXG4gICAqL1xuICBzdGF0aWMgZnJvbURhdGFiYXNlTmFtZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBkYXRhYmFzZU5hbWU6IHN0cmluZyk6IElEYXRhYmFzZSB7XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZERhdGFiYXNlKHNjb3BlLCBpZCwge1xuICAgICAgZGF0YWJhc2VOYW1lOiBkYXRhYmFzZU5hbWUsXG4gICAgfSlcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBkYXRhYmFzZU5hbWU6IHN0cmluZ1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhYmFzZVByb3BzKSB7XG4gICAgLy8gQ2hlY2sgaWYgdXNpbmcgRFNRTCBwcm92aWRlciBhbmQgZm9yYmlkIGRhdGFiYXNlIGNyZWF0aW9uXG4gICAgaWYgKHByb3BzLnByb3ZpZGVyLmVuZ2luZSA9PT0gRGF0YWJhc2VFbmdpbmUuRFNRTCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkRhdGFiYXNlIGNyZWF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBEU1FMLiBEU1FMIGFsd2F5cyB1c2VzICdwb3N0Z3JlcycgZGF0YWJhc2UuXCJcbiAgICAgIClcbiAgICB9XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogcHJvcHMucHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBSZXNvdXJjZTogUmRzU3FsUmVzb3VyY2UuREFUQUJBU0UsXG4gICAgICAgIFJlc291cmNlSWQ6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgLi4uKHByb3BzLnByb3ZpZGVyLnNlY3JldCA/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=
|