@aws-amplify/graphql-model-transformer 1.5.0-rds.0 → 2.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/API.md +15 -15
- package/CHANGELOG.md +2 -7
- package/lib/graphql-types/mutation.d.ts.map +1 -1
- package/lib/graphql-types/mutation.js +2 -9
- package/lib/graphql-types/mutation.js.map +1 -1
- package/lib/rds-lambda.zip +0 -0
- package/lib/rds-notification-lambda.zip +0 -0
- package/lib/rds-patching-lambda.zip +0 -0
- package/lib/resolvers/generators/dynamodb-vtl-generator.d.ts +5 -6
- package/lib/resolvers/generators/dynamodb-vtl-generator.d.ts.map +1 -1
- package/lib/resolvers/generators/dynamodb-vtl-generator.js +5 -5
- package/lib/resolvers/generators/dynamodb-vtl-generator.js.map +1 -1
- package/lib/resolvers/generators/rds-vtl-generator.d.ts +5 -6
- package/lib/resolvers/generators/rds-vtl-generator.d.ts.map +1 -1
- package/lib/resolvers/generators/rds-vtl-generator.js +10 -10
- package/lib/resolvers/generators/rds-vtl-generator.js.map +1 -1
- package/lib/resolvers/generators/vtl-generator.d.ts +5 -6
- package/lib/resolvers/generators/vtl-generator.d.ts.map +1 -1
- package/lib/resolvers/rds/mutation.d.ts +3 -4
- package/lib/resolvers/rds/mutation.d.ts.map +1 -1
- package/lib/resolvers/rds/mutation.js +3 -7
- package/lib/resolvers/rds/mutation.js.map +1 -1
- package/lib/resolvers/rds/query.d.ts +1 -2
- package/lib/resolvers/rds/query.d.ts.map +1 -1
- package/lib/resolvers/rds/query.js +1 -3
- package/lib/resolvers/rds/query.js.map +1 -1
- package/lib/resolvers/rds/resolver.d.ts +7 -11
- package/lib/resolvers/rds/resolver.d.ts.map +1 -1
- package/lib/resolvers/rds/resolver.js +39 -50
- package/lib/resolvers/rds/resolver.js.map +1 -1
- package/lib/resources/dynamo-model-resource-generator.d.ts +2 -2
- package/lib/resources/dynamo-model-resource-generator.d.ts.map +1 -1
- package/lib/resources/dynamo-model-resource-generator.js +48 -43
- package/lib/resources/dynamo-model-resource-generator.js.map +1 -1
- package/lib/resources/model-resource-generator.js +8 -8
- package/lib/resources/model-resource-generator.js.map +1 -1
- package/lib/resources/rds-model-resource-generator.js +13 -13
- package/package.json +6 -5
- package/publish-notification-lambda/node_modules/.package-lock.json +3 -3
- package/publish-notification-lambda/node_modules/@types/node/README.md +1 -1
- package/publish-notification-lambda/node_modules/@types/node/package.json +2 -2
- package/publish-notification-lambda/package-lock.json +3 -3
- package/rds-lambda/handler.ts +1 -2
- package/rds-lambda/node_modules/.package-lock.json +6 -6
- package/rds-lambda/node_modules/@types/node/README.md +1 -1
- package/rds-lambda/node_modules/@types/node/package.json +2 -2
- package/rds-lambda/node_modules/electron-to-chromium/full-chromium-versions.json +1 -1
- package/rds-lambda/node_modules/electron-to-chromium/full-versions.json +1 -1
- package/rds-lambda/node_modules/electron-to-chromium/package.json +1 -1
- package/rds-lambda/package-lock.json +6 -6
- package/rds-patching-lambda/node_modules/.package-lock.json +3 -3
- package/rds-patching-lambda/node_modules/@types/node/README.md +1 -1
- package/rds-patching-lambda/node_modules/@types/node/package.json +2 -2
- package/rds-patching-lambda/package-lock.json +3 -3
- package/src/__tests__/__snapshots__/model-transformer.test.ts.snap +0 -688
- package/src/__tests__/model-directive-arguments.test.ts +23 -28
- package/src/__tests__/model-transformer.test.ts +137 -216
- package/src/graphql-types/mutation.ts +3 -11
- package/src/resolvers/generators/dynamodb-vtl-generator.ts +5 -7
- package/src/resolvers/generators/rds-vtl-generator.ts +10 -12
- package/src/resolvers/generators/vtl-generator.ts +5 -6
- package/src/resolvers/rds/mutation.ts +3 -18
- package/src/resolvers/rds/query.ts +1 -9
- package/src/resolvers/rds/resolver.ts +45 -62
- package/src/resources/dynamo-model-resource-generator.ts +50 -47
- package/src/resources/model-resource-generator.ts +8 -8
- package/src/resources/rds-model-resource-generator.ts +13 -13
- package/tsconfig.tsbuildinfo +1 -1
@@ -2,11 +2,12 @@ import * as cdk from 'aws-cdk-lib';
|
|
2
2
|
import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
|
3
3
|
import { ModelResourceIDs, ResourceConstants, SyncResourceIDs } from 'graphql-transformer-common';
|
4
4
|
import { ObjectTypeDefinitionNode } from 'graphql';
|
5
|
-
import { SyncUtils,
|
5
|
+
import { SyncUtils, setResourceName } from '@aws-amplify/graphql-transformer-core';
|
6
6
|
import { AttributeType, CfnTable, StreamViewType, Table, TableEncryption } from 'aws-cdk-lib/aws-dynamodb';
|
7
7
|
import { CfnDataSource } from 'aws-cdk-lib/aws-appsync';
|
8
8
|
import * as iam from 'aws-cdk-lib/aws-iam';
|
9
9
|
import { CfnRole } from 'aws-cdk-lib/aws-iam';
|
10
|
+
import { Construct } from 'constructs';
|
10
11
|
import { DynamoDBModelVTLGenerator, ModelVTLGenerator } from '../resolvers';
|
11
12
|
import { ModelResourceGenerator } from './model-resource-generator';
|
12
13
|
|
@@ -24,28 +25,29 @@ export class DynamoModelResourceGenerator extends ModelResourceGenerator {
|
|
24
25
|
|
25
26
|
if (this.isProvisioned()) {
|
26
27
|
// add model related-parameters to the root stack
|
27
|
-
|
28
|
+
const rootStack = cdk.Stack.of(ctx.stackManager.scope);
|
29
|
+
new cdk.CfnParameter(rootStack, ResourceConstants.PARAMETERS.DynamoDBModelTableReadIOPS, {
|
28
30
|
description: 'The number of read IOPS the table should support.',
|
29
31
|
type: 'Number',
|
30
32
|
default: 5,
|
31
33
|
});
|
32
|
-
|
34
|
+
new cdk.CfnParameter(rootStack, ResourceConstants.PARAMETERS.DynamoDBModelTableWriteIOPS, {
|
33
35
|
description: 'The number of write IOPS the table should support.',
|
34
36
|
type: 'Number',
|
35
37
|
default: 5,
|
36
38
|
});
|
37
|
-
|
39
|
+
new cdk.CfnParameter(rootStack, ResourceConstants.PARAMETERS.DynamoDBBillingMode, {
|
38
40
|
description: 'Configure @model types to create DynamoDB tables with PAY_PER_REQUEST or PROVISIONED billing modes.',
|
39
41
|
default: 'PAY_PER_REQUEST',
|
40
42
|
allowedValues: ['PAY_PER_REQUEST', 'PROVISIONED'],
|
41
43
|
});
|
42
|
-
|
44
|
+
new cdk.CfnParameter(rootStack, ResourceConstants.PARAMETERS.DynamoDBEnablePointInTimeRecovery, {
|
43
45
|
description: 'Whether to enable Point in Time Recovery on the table.',
|
44
46
|
type: 'String',
|
45
47
|
default: 'false',
|
46
48
|
allowedValues: ['true', 'false'],
|
47
49
|
});
|
48
|
-
|
50
|
+
new cdk.CfnParameter(rootStack, ResourceConstants.PARAMETERS.DynamoDBEnableServerSideEncryption, {
|
49
51
|
description: 'Enable server side encryption powered by KMS.',
|
50
52
|
type: 'String',
|
51
53
|
default: 'true',
|
@@ -57,9 +59,9 @@ export class DynamoModelResourceGenerator extends ModelResourceGenerator {
|
|
57
59
|
// This name is used by the mock functionality. Changing this can break mock.
|
58
60
|
const tableBaseName = ctx.resourceHelper.getModelNameMapping(model!.name.value);
|
59
61
|
const tableLogicalName = ModelResourceIDs.ModelTableResourceID(tableBaseName);
|
60
|
-
const
|
62
|
+
const scope = ctx.stackManager.getScopeFor(tableLogicalName, tableBaseName);
|
61
63
|
|
62
|
-
this.createModelTable(
|
64
|
+
this.createModelTable(scope, model, ctx);
|
63
65
|
});
|
64
66
|
|
65
67
|
this.generateResolvers(ctx);
|
@@ -70,71 +72,68 @@ export class DynamoModelResourceGenerator extends ModelResourceGenerator {
|
|
70
72
|
return new DynamoDBModelVTLGenerator();
|
71
73
|
}
|
72
74
|
|
73
|
-
private createModelTable(
|
74
|
-
const
|
75
|
-
const
|
75
|
+
private createModelTable(scope: Construct, def: ObjectTypeDefinitionNode, context: TransformerContextProvider): void {
|
76
|
+
const modelName = def!.name.value;
|
77
|
+
const tableLogicalName = ModelResourceIDs.ModelTableResourceID(modelName);
|
78
|
+
const tableName = context.resourceHelper.generateTableName(modelName);
|
76
79
|
|
77
80
|
// Add parameters.
|
78
|
-
const
|
79
|
-
const readIops = new cdk.CfnParameter(stack, ResourceConstants.PARAMETERS.DynamoDBModelTableReadIOPS, {
|
81
|
+
const readIops = new cdk.CfnParameter(scope, ResourceConstants.PARAMETERS.DynamoDBModelTableReadIOPS, {
|
80
82
|
description: 'The number of read IOPS the table should support.',
|
81
83
|
type: 'Number',
|
82
84
|
default: 5,
|
83
85
|
});
|
84
|
-
const writeIops = new cdk.CfnParameter(
|
86
|
+
const writeIops = new cdk.CfnParameter(scope, ResourceConstants.PARAMETERS.DynamoDBModelTableWriteIOPS, {
|
85
87
|
description: 'The number of write IOPS the table should support.',
|
86
88
|
type: 'Number',
|
87
89
|
default: 5,
|
88
90
|
});
|
89
|
-
const billingMode = new cdk.CfnParameter(
|
91
|
+
const billingMode = new cdk.CfnParameter(scope, ResourceConstants.PARAMETERS.DynamoDBBillingMode, {
|
90
92
|
description: 'Configure @model types to create DynamoDB tables with PAY_PER_REQUEST or PROVISIONED billing modes.',
|
91
93
|
type: 'String',
|
92
94
|
default: 'PAY_PER_REQUEST',
|
93
95
|
allowedValues: ['PAY_PER_REQUEST', 'PROVISIONED'],
|
94
96
|
});
|
95
|
-
const pointInTimeRecovery = new cdk.CfnParameter(
|
97
|
+
const pointInTimeRecovery = new cdk.CfnParameter(scope, ResourceConstants.PARAMETERS.DynamoDBEnablePointInTimeRecovery, {
|
96
98
|
description: 'Whether to enable Point in Time Recovery on the table.',
|
97
99
|
type: 'String',
|
98
100
|
default: 'false',
|
99
101
|
allowedValues: ['true', 'false'],
|
100
102
|
});
|
101
|
-
const enableSSE = new cdk.CfnParameter(
|
103
|
+
const enableSSE = new cdk.CfnParameter(scope, ResourceConstants.PARAMETERS.DynamoDBEnableServerSideEncryption, {
|
102
104
|
description: 'Enable server side encryption powered by KMS.',
|
103
105
|
type: 'String',
|
104
106
|
default: 'true',
|
105
107
|
allowedValues: ['true', 'false'],
|
106
108
|
});
|
107
109
|
// add the connection between the root and nested stack so the values can be passed down
|
108
|
-
(
|
109
|
-
(
|
110
|
-
(
|
111
|
-
(
|
110
|
+
(scope as cdk.NestedStack).setParameter(readIops.node.id, cdk.Fn.ref(ResourceConstants.PARAMETERS.DynamoDBModelTableReadIOPS));
|
111
|
+
(scope as cdk.NestedStack).setParameter(writeIops.node.id, cdk.Fn.ref(ResourceConstants.PARAMETERS.DynamoDBModelTableWriteIOPS));
|
112
|
+
(scope as cdk.NestedStack).setParameter(billingMode.node.id, cdk.Fn.ref(ResourceConstants.PARAMETERS.DynamoDBBillingMode));
|
113
|
+
(scope as cdk.NestedStack).setParameter(
|
112
114
|
pointInTimeRecovery.node.id,
|
113
115
|
cdk.Fn.ref(ResourceConstants.PARAMETERS.DynamoDBEnablePointInTimeRecovery),
|
114
116
|
);
|
115
|
-
(
|
116
|
-
enableSSE.node.id,
|
117
|
-
cdk.Fn.ref(ResourceConstants.PARAMETERS.DynamoDBEnableServerSideEncryption),
|
118
|
-
);
|
117
|
+
(scope as cdk.NestedStack).setParameter(enableSSE.node.id, cdk.Fn.ref(ResourceConstants.PARAMETERS.DynamoDBEnableServerSideEncryption));
|
119
118
|
|
120
119
|
// Add conditions.
|
121
|
-
new cdk.CfnCondition(
|
122
|
-
expression: cdk.Fn.conditionNot(cdk.Fn.conditionEquals(
|
120
|
+
new cdk.CfnCondition(scope, ResourceConstants.CONDITIONS.HasEnvironmentParameter, {
|
121
|
+
expression: cdk.Fn.conditionNot(cdk.Fn.conditionEquals(context.synthParameters.amplifyEnvironmentName, ResourceConstants.NONE)),
|
123
122
|
});
|
124
|
-
const useSSE = new cdk.CfnCondition(
|
123
|
+
const useSSE = new cdk.CfnCondition(scope, ResourceConstants.CONDITIONS.ShouldUseServerSideEncryption, {
|
125
124
|
expression: cdk.Fn.conditionEquals(enableSSE, 'true'),
|
126
125
|
});
|
127
|
-
const usePayPerRequestBilling = new cdk.CfnCondition(
|
126
|
+
const usePayPerRequestBilling = new cdk.CfnCondition(scope, ResourceConstants.CONDITIONS.ShouldUsePayPerRequestBilling, {
|
128
127
|
expression: cdk.Fn.conditionEquals(billingMode, 'PAY_PER_REQUEST'),
|
129
128
|
});
|
130
|
-
const usePointInTimeRecovery = new cdk.CfnCondition(
|
129
|
+
const usePointInTimeRecovery = new cdk.CfnCondition(scope, ResourceConstants.CONDITIONS.ShouldUsePointInTimeRecovery, {
|
131
130
|
expression: cdk.Fn.conditionEquals(pointInTimeRecovery, 'true'),
|
132
131
|
});
|
133
132
|
|
134
133
|
const removalPolicy = this.options.EnableDeletionProtection ? cdk.RemovalPolicy.RETAIN : cdk.RemovalPolicy.DESTROY;
|
135
134
|
|
136
135
|
// Expose a way in context to allow proper resource naming
|
137
|
-
const table = new Table(
|
136
|
+
const table = new Table(scope, tableLogicalName, {
|
138
137
|
tableName,
|
139
138
|
partitionKey: {
|
140
139
|
name: 'id',
|
@@ -146,6 +145,7 @@ export class DynamoModelResourceGenerator extends ModelResourceGenerator {
|
|
146
145
|
...(context.isProjectUsingDataStore() ? { timeToLiveAttribute: '_ttl' } : undefined),
|
147
146
|
});
|
148
147
|
const cfnTable = table.node.defaultChild as CfnTable;
|
148
|
+
setResourceName(table, { name: modelName, setOnDefaultChild: true });
|
149
149
|
|
150
150
|
cfnTable.provisionedThroughput = cdk.Fn.conditionIf(usePayPerRequestBilling.logicalId, cdk.Fn.ref('AWS::NoValue'), {
|
151
151
|
ReadCapacityUnits: readIops,
|
@@ -162,29 +162,31 @@ export class DynamoModelResourceGenerator extends ModelResourceGenerator {
|
|
162
162
|
};
|
163
163
|
|
164
164
|
const streamArnOutputId = `GetAtt${ModelResourceIDs.ModelTableStreamArn(def!.name.value)}`;
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
165
|
+
if (table.tableStreamArn) {
|
166
|
+
new cdk.CfnOutput(cdk.Stack.of(scope), streamArnOutputId, {
|
167
|
+
value: table.tableStreamArn,
|
168
|
+
description: 'Your DynamoDB table StreamArn.',
|
169
|
+
exportName: cdk.Fn.join(':', [context.api.apiId, 'GetAtt', tableLogicalName, 'StreamArn']),
|
170
|
+
});
|
171
|
+
}
|
170
172
|
|
171
173
|
const tableNameOutputId = `GetAtt${tableLogicalName}Name`;
|
172
|
-
new cdk.CfnOutput(
|
173
|
-
value:
|
174
|
+
new cdk.CfnOutput(cdk.Stack.of(scope), tableNameOutputId, {
|
175
|
+
value: table.tableName,
|
174
176
|
description: 'Your DynamoDB table name.',
|
175
177
|
exportName: cdk.Fn.join(':', [context.api.apiId, 'GetAtt', tableLogicalName, 'Name']),
|
176
178
|
});
|
177
179
|
|
178
|
-
const role = this.createIAMRole(context, def,
|
180
|
+
const role = this.createIAMRole(context, def, scope, tableName);
|
179
181
|
const tableDataSourceLogicalName = `${def!.name.value}Table`;
|
180
|
-
this.createModelTableDataSource(def, context, table,
|
182
|
+
this.createModelTableDataSource(def, context, table, scope, role, tableDataSourceLogicalName);
|
181
183
|
}
|
182
184
|
|
183
185
|
private createModelTableDataSource(
|
184
186
|
def: ObjectTypeDefinitionNode,
|
185
187
|
context: TransformerContextProvider,
|
186
188
|
table: Table,
|
187
|
-
|
189
|
+
scope: Construct,
|
188
190
|
role: iam.Role,
|
189
191
|
dataSourceLogicalName: string,
|
190
192
|
): void {
|
@@ -193,7 +195,7 @@ export class DynamoModelResourceGenerator extends ModelResourceGenerator {
|
|
193
195
|
datasourceRoleLogicalID,
|
194
196
|
table,
|
195
197
|
{ name: dataSourceLogicalName, serviceRole: role },
|
196
|
-
|
198
|
+
scope,
|
197
199
|
);
|
198
200
|
|
199
201
|
const cfnDataSource = dataSource.node.defaultChild as CfnDataSource;
|
@@ -211,7 +213,7 @@ export class DynamoModelResourceGenerator extends ModelResourceGenerator {
|
|
211
213
|
}
|
212
214
|
|
213
215
|
const datasourceOutputId = `GetAtt${datasourceRoleLogicalID}Name`;
|
214
|
-
new cdk.CfnOutput(
|
216
|
+
new cdk.CfnOutput(cdk.Stack.of(scope), datasourceOutputId, {
|
215
217
|
value: dataSource.ds.attrName,
|
216
218
|
description: 'Your model DataSource name.',
|
217
219
|
exportName: cdk.Fn.join(':', [context.api.apiId, 'GetAtt', datasourceRoleLogicalID, 'Name']),
|
@@ -225,16 +227,17 @@ export class DynamoModelResourceGenerator extends ModelResourceGenerator {
|
|
225
227
|
/**
|
226
228
|
* createIAMRole
|
227
229
|
*/
|
228
|
-
createIAMRole = (context: TransformerContextProvider, def: ObjectTypeDefinitionNode,
|
230
|
+
createIAMRole = (context: TransformerContextProvider, def: ObjectTypeDefinitionNode, scope: Construct, tableName: string): iam.Role => {
|
229
231
|
const roleName = context.resourceHelper.generateIAMRoleName(ModelResourceIDs.ModelTableIAMRoleID(def!.name.value));
|
230
|
-
const role = new iam.Role(
|
232
|
+
const role = new iam.Role(scope, ModelResourceIDs.ModelTableIAMRoleID(def!.name.value), {
|
231
233
|
roleName,
|
232
234
|
assumedBy: new iam.ServicePrincipal('appsync.amazonaws.com'),
|
233
235
|
});
|
236
|
+
setResourceName(role, { name: ModelResourceIDs.ModelTableIAMRoleID(def!.name.value), setOnDefaultChild: true });
|
234
237
|
|
235
238
|
const amplifyDataStoreTableName = context.resourceHelper.generateTableName(SyncResourceIDs.syncTableName);
|
236
239
|
role.attachInlinePolicy(
|
237
|
-
new iam.Policy(
|
240
|
+
new iam.Policy(scope, 'DynamoDBAccess', {
|
238
241
|
statements: [
|
239
242
|
new iam.PolicyStatement({
|
240
243
|
effect: iam.Effect.ALLOW,
|
@@ -278,7 +281,7 @@ export class DynamoModelResourceGenerator extends ModelResourceGenerator {
|
|
278
281
|
const syncConfig = SyncUtils.getSyncConfig(context, def!.name.value);
|
279
282
|
if (syncConfig && SyncUtils.isLambdaSyncConfig(syncConfig)) {
|
280
283
|
role.attachInlinePolicy(
|
281
|
-
SyncUtils.createSyncLambdaIAMPolicy(context,
|
284
|
+
SyncUtils.createSyncLambdaIAMPolicy(context, scope, syncConfig.LambdaConflictHandler.name, syncConfig.LambdaConflictHandler.region),
|
282
285
|
);
|
283
286
|
}
|
284
287
|
|
@@ -132,7 +132,7 @@ export abstract class ModelResourceGenerator {
|
|
132
132
|
`${query.typeName}.${query.fieldName}.{slotName}.{slotIndex}.req.vtl`,
|
133
133
|
),
|
134
134
|
);
|
135
|
-
resolver.
|
135
|
+
resolver.setScope(context.stackManager.getScopeFor(query.resolverLogicalId, def!.name.value));
|
136
136
|
context.resolvers.addResolver(query.typeName, query.fieldName, resolver);
|
137
137
|
});
|
138
138
|
|
@@ -166,7 +166,7 @@ export abstract class ModelResourceGenerator {
|
|
166
166
|
`${mutation.typeName}.${mutation.fieldName}.{slotName}.{slotIndex}.req.vtl`,
|
167
167
|
),
|
168
168
|
);
|
169
|
-
resolver.
|
169
|
+
resolver.setScope(context.stackManager.getScopeFor(mutation.resolverLogicalId, def!.name.value));
|
170
170
|
context.resolvers.addResolver(mutation.typeName, mutation.fieldName, resolver);
|
171
171
|
});
|
172
172
|
|
@@ -213,7 +213,7 @@ export abstract class ModelResourceGenerator {
|
|
213
213
|
),
|
214
214
|
);
|
215
215
|
}
|
216
|
-
resolver.
|
216
|
+
resolver.setScope(context.stackManager.getScopeFor(subscription.resolverLogicalId, def!.name.value));
|
217
217
|
context.resolvers.addResolver(subscription.typeName, subscription.fieldName, resolver);
|
218
218
|
});
|
219
219
|
}
|
@@ -252,7 +252,7 @@ export abstract class ModelResourceGenerator {
|
|
252
252
|
resolverLogicalId,
|
253
253
|
dataSource,
|
254
254
|
MappingTemplate.s3MappingTemplateFromString(
|
255
|
-
vtlGenerator.generateGetRequestTemplate(requestConfig
|
255
|
+
vtlGenerator.generateGetRequestTemplate(requestConfig),
|
256
256
|
`${typeName}.${fieldName}.req.vtl`,
|
257
257
|
),
|
258
258
|
MappingTemplate.s3MappingTemplateFromString(
|
@@ -292,7 +292,7 @@ export abstract class ModelResourceGenerator {
|
|
292
292
|
resolverLogicalId,
|
293
293
|
dataSource,
|
294
294
|
MappingTemplate.s3MappingTemplateFromString(
|
295
|
-
vtlGenerator.generateListRequestTemplate(requestConfig
|
295
|
+
vtlGenerator.generateListRequestTemplate(requestConfig),
|
296
296
|
`${typeName}.${fieldName}.req.vtl`,
|
297
297
|
),
|
298
298
|
MappingTemplate.s3MappingTemplateFromString(
|
@@ -338,7 +338,7 @@ export abstract class ModelResourceGenerator {
|
|
338
338
|
resolverLogicalId,
|
339
339
|
dataSource,
|
340
340
|
MappingTemplate.s3MappingTemplateFromString(
|
341
|
-
vtlGenerator.generateCreateRequestTemplate(requestConfig
|
341
|
+
vtlGenerator.generateCreateRequestTemplate(requestConfig),
|
342
342
|
`${typeName}.${fieldName}.req.vtl`,
|
343
343
|
),
|
344
344
|
MappingTemplate.s3MappingTemplateFromString(
|
@@ -400,7 +400,7 @@ export abstract class ModelResourceGenerator {
|
|
400
400
|
resolverLogicalId,
|
401
401
|
dataSource,
|
402
402
|
MappingTemplate.s3MappingTemplateFromString(
|
403
|
-
vtlGenerator.generateUpdateRequestTemplate(requestConfig
|
403
|
+
vtlGenerator.generateUpdateRequestTemplate(requestConfig),
|
404
404
|
`${typeName}.${fieldName}.req.vtl`,
|
405
405
|
),
|
406
406
|
MappingTemplate.s3MappingTemplateFromString(
|
@@ -461,7 +461,7 @@ export abstract class ModelResourceGenerator {
|
|
461
461
|
resolverLogicalId,
|
462
462
|
dataSource,
|
463
463
|
MappingTemplate.s3MappingTemplateFromString(
|
464
|
-
vtlGenerator.generateDeleteRequestTemplate(requestConfig
|
464
|
+
vtlGenerator.generateDeleteRequestTemplate(requestConfig),
|
465
465
|
`${typeName}.${fieldName}.req.vtl`,
|
466
466
|
),
|
467
467
|
MappingTemplate.s3MappingTemplateFromString(
|
@@ -37,17 +37,17 @@ export class RdsModelResourceGenerator extends ModelResourceGenerator {
|
|
37
37
|
RDSLambdaDataSourceLogicalID,
|
38
38
|
RDSPatchingSubscriptionLogicalID,
|
39
39
|
} = ResourceConstants.RESOURCES;
|
40
|
-
const
|
41
|
-
const
|
42
|
-
setRDSLayerMappings(
|
40
|
+
const lambdaRoleScope = context.stackManager.getScopeFor(RDSLambdaIAMRoleLogicalID, RDS_STACK_NAME);
|
41
|
+
const lambdaScope = context.stackManager.getScopeFor(RDSLambdaLogicalID, RDS_STACK_NAME);
|
42
|
+
setRDSLayerMappings(lambdaScope, context.rdsLayerMapping);
|
43
43
|
const role = createRdsLambdaRole(
|
44
44
|
context.resourceHelper.generateIAMRoleName(RDSLambdaIAMRoleLogicalID),
|
45
|
-
|
45
|
+
lambdaRoleScope,
|
46
46
|
secretEntry as RDSConnectionSecrets,
|
47
47
|
);
|
48
48
|
|
49
49
|
const lambda = createRdsLambda(
|
50
|
-
|
50
|
+
lambdaScope,
|
51
51
|
context.api,
|
52
52
|
role,
|
53
53
|
{
|
@@ -60,22 +60,22 @@ export class RdsModelResourceGenerator extends ModelResourceGenerator {
|
|
60
60
|
context.sqlLambdaVpcConfig,
|
61
61
|
);
|
62
62
|
|
63
|
-
const
|
64
|
-
const
|
63
|
+
const patchingLambdaRoleScope = context.stackManager.getScopeFor(RDSPatchingLambdaIAMRoleLogicalID, RDS_STACK_NAME);
|
64
|
+
const patchingLambdaScope = context.stackManager.getScopeFor(RDSPatchingLambdaLogicalID, RDS_STACK_NAME);
|
65
65
|
const patchingLambdaRole = createRdsPatchingLambdaRole(
|
66
66
|
context.resourceHelper.generateIAMRoleName(RDSPatchingLambdaIAMRoleLogicalID),
|
67
|
-
|
67
|
+
patchingLambdaRoleScope,
|
68
68
|
lambda.functionArn,
|
69
69
|
);
|
70
70
|
|
71
71
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
72
|
-
const patchingLambda = createRdsPatchingLambda(
|
72
|
+
const patchingLambda = createRdsPatchingLambda(patchingLambdaScope, context.api, patchingLambdaRole, {
|
73
73
|
LAMBDA_FUNCTION_ARN: lambda.functionArn,
|
74
74
|
});
|
75
75
|
|
76
76
|
// Add SNS subscription for patching notifications
|
77
|
-
const
|
78
|
-
const snsTopic = Topic.fromTopicArn(
|
77
|
+
const patchingSubscriptionScope = context.stackManager.getScopeFor(RDSPatchingSubscriptionLogicalID, RDS_STACK_NAME);
|
78
|
+
const snsTopic = Topic.fromTopicArn(patchingSubscriptionScope, 'RDSPatchingTopic', RDS_PATCHING_SNS_TOPIC_ARN);
|
79
79
|
const subscription = new LambdaSubscription(patchingLambda, {
|
80
80
|
filterPolicy: {
|
81
81
|
Region: SubscriptionFilter.stringFilter({
|
@@ -85,8 +85,8 @@ export class RdsModelResourceGenerator extends ModelResourceGenerator {
|
|
85
85
|
});
|
86
86
|
snsTopic.addSubscription(subscription);
|
87
87
|
|
88
|
-
const
|
89
|
-
const rdsDatasource = context.api.host.addLambdaDataSource(`${RDSLambdaDataSourceLogicalID}`, lambda, {},
|
88
|
+
const lambdaDataSourceScope = context.stackManager.getScopeFor(RDSLambdaDataSourceLogicalID, RDS_STACK_NAME);
|
89
|
+
const rdsDatasource = context.api.host.addLambdaDataSource(`${RDSLambdaDataSourceLogicalID}`, lambda, {}, lambdaDataSourceScope);
|
90
90
|
this.models.forEach((model) => {
|
91
91
|
context.dataSources.add(model, rdsDatasource);
|
92
92
|
this.datasourceMap[model.name.value] = rdsDatasource;
|