@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.
Files changed (68) hide show
  1. package/API.md +15 -15
  2. package/CHANGELOG.md +2 -7
  3. package/lib/graphql-types/mutation.d.ts.map +1 -1
  4. package/lib/graphql-types/mutation.js +2 -9
  5. package/lib/graphql-types/mutation.js.map +1 -1
  6. package/lib/rds-lambda.zip +0 -0
  7. package/lib/rds-notification-lambda.zip +0 -0
  8. package/lib/rds-patching-lambda.zip +0 -0
  9. package/lib/resolvers/generators/dynamodb-vtl-generator.d.ts +5 -6
  10. package/lib/resolvers/generators/dynamodb-vtl-generator.d.ts.map +1 -1
  11. package/lib/resolvers/generators/dynamodb-vtl-generator.js +5 -5
  12. package/lib/resolvers/generators/dynamodb-vtl-generator.js.map +1 -1
  13. package/lib/resolvers/generators/rds-vtl-generator.d.ts +5 -6
  14. package/lib/resolvers/generators/rds-vtl-generator.d.ts.map +1 -1
  15. package/lib/resolvers/generators/rds-vtl-generator.js +10 -10
  16. package/lib/resolvers/generators/rds-vtl-generator.js.map +1 -1
  17. package/lib/resolvers/generators/vtl-generator.d.ts +5 -6
  18. package/lib/resolvers/generators/vtl-generator.d.ts.map +1 -1
  19. package/lib/resolvers/rds/mutation.d.ts +3 -4
  20. package/lib/resolvers/rds/mutation.d.ts.map +1 -1
  21. package/lib/resolvers/rds/mutation.js +3 -7
  22. package/lib/resolvers/rds/mutation.js.map +1 -1
  23. package/lib/resolvers/rds/query.d.ts +1 -2
  24. package/lib/resolvers/rds/query.d.ts.map +1 -1
  25. package/lib/resolvers/rds/query.js +1 -3
  26. package/lib/resolvers/rds/query.js.map +1 -1
  27. package/lib/resolvers/rds/resolver.d.ts +7 -11
  28. package/lib/resolvers/rds/resolver.d.ts.map +1 -1
  29. package/lib/resolvers/rds/resolver.js +39 -50
  30. package/lib/resolvers/rds/resolver.js.map +1 -1
  31. package/lib/resources/dynamo-model-resource-generator.d.ts +2 -2
  32. package/lib/resources/dynamo-model-resource-generator.d.ts.map +1 -1
  33. package/lib/resources/dynamo-model-resource-generator.js +48 -43
  34. package/lib/resources/dynamo-model-resource-generator.js.map +1 -1
  35. package/lib/resources/model-resource-generator.js +8 -8
  36. package/lib/resources/model-resource-generator.js.map +1 -1
  37. package/lib/resources/rds-model-resource-generator.js +13 -13
  38. package/package.json +6 -5
  39. package/publish-notification-lambda/node_modules/.package-lock.json +3 -3
  40. package/publish-notification-lambda/node_modules/@types/node/README.md +1 -1
  41. package/publish-notification-lambda/node_modules/@types/node/package.json +2 -2
  42. package/publish-notification-lambda/package-lock.json +3 -3
  43. package/rds-lambda/handler.ts +1 -2
  44. package/rds-lambda/node_modules/.package-lock.json +6 -6
  45. package/rds-lambda/node_modules/@types/node/README.md +1 -1
  46. package/rds-lambda/node_modules/@types/node/package.json +2 -2
  47. package/rds-lambda/node_modules/electron-to-chromium/full-chromium-versions.json +1 -1
  48. package/rds-lambda/node_modules/electron-to-chromium/full-versions.json +1 -1
  49. package/rds-lambda/node_modules/electron-to-chromium/package.json +1 -1
  50. package/rds-lambda/package-lock.json +6 -6
  51. package/rds-patching-lambda/node_modules/.package-lock.json +3 -3
  52. package/rds-patching-lambda/node_modules/@types/node/README.md +1 -1
  53. package/rds-patching-lambda/node_modules/@types/node/package.json +2 -2
  54. package/rds-patching-lambda/package-lock.json +3 -3
  55. package/src/__tests__/__snapshots__/model-transformer.test.ts.snap +0 -688
  56. package/src/__tests__/model-directive-arguments.test.ts +23 -28
  57. package/src/__tests__/model-transformer.test.ts +137 -216
  58. package/src/graphql-types/mutation.ts +3 -11
  59. package/src/resolvers/generators/dynamodb-vtl-generator.ts +5 -7
  60. package/src/resolvers/generators/rds-vtl-generator.ts +10 -12
  61. package/src/resolvers/generators/vtl-generator.ts +5 -6
  62. package/src/resolvers/rds/mutation.ts +3 -18
  63. package/src/resolvers/rds/query.ts +1 -9
  64. package/src/resolvers/rds/resolver.ts +45 -62
  65. package/src/resources/dynamo-model-resource-generator.ts +50 -47
  66. package/src/resources/model-resource-generator.ts +8 -8
  67. package/src/resources/rds-model-resource-generator.ts +13 -13
  68. package/tsconfig.tsbuildinfo +1 -1
@@ -1,6 +1,6 @@
1
1
  import { TransformerTransformSchemaStepContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
2
2
  import { DocumentNode, InputObjectTypeDefinitionNode, ObjectTypeDefinitionNode } from 'graphql';
3
- import { ModelResourceIDs, getBaseType, toPascalCase } from 'graphql-transformer-common';
3
+ import { ModelResourceIDs, toPascalCase } from 'graphql-transformer-common';
4
4
  import { InputFieldWrapper, InputObjectDefinitionWrapper, ObjectDefinitionWrapper } from '@aws-amplify/graphql-transformer-core';
5
5
  import { ModelDirectiveConfiguration } from '../directive';
6
6
  import { makeConditionFilterInput } from './common';
@@ -104,15 +104,7 @@ export const makeCreateInputField = (
104
104
  const typeName = objectWrapped.name;
105
105
  const name = ModelResourceIDs.ModelCreateInputObjectName(typeName);
106
106
 
107
- const idFieldName = 'id';
108
- const hasIdField = objectWrapped.hasField(idFieldName);
109
- let shouldAutogenerateIdField = false;
110
- if (hasIdField) {
111
- const idField = objectWrapped.getField(idFieldName);
112
- const idBaseType = getBaseType(idField.type);
113
- shouldAutogenerateIdField = idBaseType === 'ID' || idBaseType === 'String';
114
- }
115
-
107
+ const hasIdField = objectWrapped.hasField('id');
116
108
  const fieldsToRemove = objectWrapped
117
109
  .fields!.filter((field) => {
118
110
  if (knownModelTypes.has(field.getTypeName())) {
@@ -134,7 +126,7 @@ export const makeCreateInputField = (
134
126
  input.addField(InputFieldWrapper.create('id', 'ID', true));
135
127
  } else {
136
128
  const idField = input.fields.find((f) => f.name === 'id');
137
- if (idField && shouldAutogenerateIdField) {
129
+ if (idField) {
138
130
  idField.makeNullable();
139
131
  }
140
132
  }
@@ -1,4 +1,3 @@
1
- import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
2
1
  import {
3
2
  generateUpdateRequestTemplate,
4
3
  generateCreateRequestTemplate,
@@ -23,19 +22,18 @@ import {
23
22
  } from './vtl-generator';
24
23
 
25
24
  export class DynamoDBModelVTLGenerator implements ModelVTLGenerator {
26
- generateUpdateRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string {
25
+ generateUpdateRequestTemplate(config: ModelUpdateRequestConfig): string {
27
26
  return generateUpdateRequestTemplate(config.modelName, config.isSyncEnabled);
28
27
  }
29
28
 
30
- generateCreateRequestTemplate(config: ModelCreateRequestConfig, ctx: TransformerContextProvider): string {
29
+ generateCreateRequestTemplate(config: ModelCreateRequestConfig): string {
31
30
  return generateCreateRequestTemplate(config.modelName, config.modelIndexFields);
32
31
  }
33
-
34
32
  generateCreateInitSlotTemplate(config: ModelCreateInitSlotConfig, initializeIdField: boolean): string {
35
33
  return generateCreateInitSlotTemplate(config.modelConfig, initializeIdField);
36
34
  }
37
35
 
38
- generateDeleteRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string {
36
+ generateDeleteRequestTemplate(config: ModelUpdateRequestConfig): string {
39
37
  return generateDeleteRequestTemplate(config.modelName, config.isSyncEnabled);
40
38
  }
41
39
 
@@ -43,7 +41,7 @@ export class DynamoDBModelVTLGenerator implements ModelVTLGenerator {
43
41
  return generateUpdateInitSlotTemplate(config.modelConfig);
44
42
  }
45
43
 
46
- generateGetRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string {
44
+ generateGetRequestTemplate(config: ModelRequestConfig): string {
47
45
  return generateGetRequestTemplate();
48
46
  }
49
47
 
@@ -51,7 +49,7 @@ export class DynamoDBModelVTLGenerator implements ModelVTLGenerator {
51
49
  return generateGetResponseTemplate(config.isSyncEnabled);
52
50
  }
53
51
 
54
- generateListRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string {
52
+ generateListRequestTemplate(config: ModelRequestConfig): string {
55
53
  return generateListRequestTemplate();
56
54
  }
57
55
 
@@ -18,40 +18,38 @@ import {
18
18
  ModelUpdateRequestConfig,
19
19
  ModelVTLGenerator,
20
20
  } from './vtl-generator';
21
- import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
22
21
 
23
22
  // TODO: This class is created only to show the class structure. This needs a revisit to generate correct resolvers for RDS.
24
23
  export class RDSModelVTLGenerator implements ModelVTLGenerator {
25
- generateUpdateRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string {
26
- return generateLambdaUpdateRequestTemplate(config.modelName, config.operationName, config.modelIndexFields ?? ['id'], ctx);
24
+ generateUpdateRequestTemplate(config: ModelUpdateRequestConfig): string {
25
+ return generateLambdaUpdateRequestTemplate(config.modelName, config.operationName, config.modelIndexFields ?? ['id']);
27
26
  }
28
27
 
29
- generateCreateRequestTemplate(config: ModelCreateRequestConfig, ctx: TransformerContextProvider): string {
30
- return generateLambdaCreateRequestTemplate(config.modelName, config.operationName, ctx);
28
+ generateCreateRequestTemplate(config: ModelCreateRequestConfig): string {
29
+ return generateLambdaCreateRequestTemplate(config.modelName, config.operationName);
31
30
  }
32
-
33
31
  generateCreateInitSlotTemplate(config: ModelCreateInitSlotConfig, initializeIdField: boolean): string {
34
32
  return generateCreateInitSlotTemplate(config.modelConfig, initializeIdField);
35
33
  }
36
34
 
37
- generateDeleteRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string {
38
- return generateLambdaDeleteRequestTemplate(config.modelName, config.operationName, config.modelIndexFields ?? ['id'], ctx);
35
+ generateDeleteRequestTemplate(config: ModelUpdateRequestConfig): string {
36
+ return generateLambdaDeleteRequestTemplate(config.modelName, config.operationName, config.modelIndexFields ?? ['id']);
39
37
  }
40
38
 
41
39
  generateUpdateInitSlotTemplate(config: ModelCreateInitSlotConfig): string {
42
40
  return generateUpdateInitSlotTemplate(config.modelConfig);
43
41
  }
44
42
 
45
- generateGetRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string {
46
- return generateLambdaRequestTemplate(config.modelName, config.operation, config.operationName, ctx);
43
+ generateGetRequestTemplate(config: ModelRequestConfig): string {
44
+ return generateLambdaRequestTemplate(config.modelName, config.operation, config.operationName);
47
45
  }
48
46
 
49
47
  generateGetResponseTemplate(config: ModelUpdateRequestConfig): string {
50
48
  return generateGetLambdaResponseTemplate(false);
51
49
  }
52
50
 
53
- generateListRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string {
54
- return generateLambdaListRequestTemplate(config.modelName, config.operation, config.operationName, ctx);
51
+ generateListRequestTemplate(config: ModelRequestConfig): string {
52
+ return generateLambdaListRequestTemplate(config.modelName, config.operation, config.operationName);
55
53
  }
56
54
 
57
55
  generateSyncRequestTemplate(config: ModelRequestConfig): string {
@@ -1,4 +1,3 @@
1
- import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
2
1
  import { ModelDirectiveConfiguration } from '../../directive';
3
2
 
4
3
  export type ModelRequestConfig = {
@@ -32,14 +31,14 @@ export type ModelDefaultResponseConfig = ModelRequestConfig & {
32
31
  };
33
32
 
34
33
  export interface ModelVTLGenerator {
35
- generateUpdateRequestTemplate(config: ModelUpdateRequestConfig, ctx: TransformerContextProvider): string;
36
- generateCreateRequestTemplate(config: ModelCreateRequestConfig, ctx: TransformerContextProvider): string;
34
+ generateUpdateRequestTemplate(config: ModelUpdateRequestConfig): string;
35
+ generateCreateRequestTemplate(config: ModelCreateRequestConfig): string;
37
36
  generateCreateInitSlotTemplate(config: ModelCreateInitSlotConfig, initializeIdField: boolean): string;
38
- generateDeleteRequestTemplate(config: ModelDeleteRequestConfig, ctx: TransformerContextProvider): string;
37
+ generateDeleteRequestTemplate(config: ModelDeleteRequestConfig): string;
39
38
  generateUpdateInitSlotTemplate(config: ModelUpdateInitSlotConfig): string;
40
- generateGetRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string;
39
+ generateGetRequestTemplate(config: ModelRequestConfig): string;
41
40
  generateGetResponseTemplate(config: ModelGetResponseConfig): string;
42
- generateListRequestTemplate(config: ModelRequestConfig, ctx: TransformerContextProvider): string;
41
+ generateListRequestTemplate(config: ModelRequestConfig): string;
43
42
  generateSyncRequestTemplate(config: ModelRequestConfig): string;
44
43
  generateSubscriptionRequestTemplate(): string;
45
44
  generateSubscriptionResponseTemplate(): string;
@@ -12,9 +12,7 @@ import {
12
12
  str,
13
13
  toJson,
14
14
  } from 'graphql-mapping-template';
15
- import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
16
15
  import { ModelDirectiveConfiguration } from '../../directive';
17
- import { constructNonScalarFieldsStatement } from './resolver';
18
16
 
19
17
  /**
20
18
  * Generate mapping template that sets default values for create mutation
@@ -55,7 +53,7 @@ export const generateCreateInitSlotTemplate = (modelConfig: ModelDirectiveConfig
55
53
  return printBlock('Initialization default values')(compoundExpression(statements));
56
54
  };
57
55
 
58
- export const generateLambdaCreateRequestTemplate = (tableName: string, operationName: string, ctx: TransformerContextProvider): string =>
56
+ export const generateLambdaCreateRequestTemplate = (tableName: string, operationName: string): string =>
59
57
  printBlock('Invoke RDS Lambda data source')(
60
58
  compoundExpression([
61
59
  set(ref('lambdaInput'), obj({})),
@@ -65,7 +63,6 @@ export const generateLambdaCreateRequestTemplate = (tableName: string, operation
65
63
  set(ref('lambdaInput.operationName'), str(operationName)),
66
64
  set(ref('lambdaInput.args.metadata'), obj({})),
67
65
  set(ref('lambdaInput.args.metadata.keys'), list([])),
68
- constructNonScalarFieldsStatement(tableName, ctx),
69
66
  qref(
70
67
  methodCall(ref('lambdaInput.args.metadata.keys.addAll'), methodCall(ref('util.defaultIfNull'), ref('ctx.stash.keys'), list([]))),
71
68
  ),
@@ -118,12 +115,7 @@ export const generateUpdateInitSlotTemplate = (modelConfig: ModelDirectiveConfig
118
115
  /**
119
116
  * Generate VTL template that calls the lambda for an Update mutation
120
117
  */
121
- export const generateLambdaUpdateRequestTemplate = (
122
- tableName: string,
123
- operationName: string,
124
- modelIndexFields: string[],
125
- ctx: TransformerContextProvider,
126
- ): string =>
118
+ export const generateLambdaUpdateRequestTemplate = (tableName: string, operationName: string, modelIndexFields: string[]): string =>
127
119
  printBlock('Invoke RDS Lambda data source')(
128
120
  compoundExpression([
129
121
  set(ref('lambdaInput'), obj({})),
@@ -133,7 +125,6 @@ export const generateLambdaUpdateRequestTemplate = (
133
125
  set(ref('lambdaInput.operationName'), str(operationName)),
134
126
  set(ref('lambdaInput.args.metadata'), obj({})),
135
127
  set(ref('lambdaInput.args.metadata.keys'), list([])),
136
- constructNonScalarFieldsStatement(tableName, ctx),
137
128
  qref(
138
129
  methodCall(ref('lambdaInput.args.metadata.keys.addAll'), methodCall(ref('util.defaultIfNull'), ref('ctx.stash.keys'), list([]))),
139
130
  ),
@@ -155,12 +146,7 @@ export const generateLambdaUpdateRequestTemplate = (
155
146
  /**
156
147
  * Generate VTL template that calls the lambda for a Delete mutation
157
148
  */
158
- export const generateLambdaDeleteRequestTemplate = (
159
- tableName: string,
160
- operationName: string,
161
- modelIndexFields: string[],
162
- ctx: TransformerContextProvider,
163
- ): string =>
149
+ export const generateLambdaDeleteRequestTemplate = (tableName: string, operationName: string, modelIndexFields: string[]): string =>
164
150
  printBlock('Invoke RDS Lambda data source')(
165
151
  compoundExpression([
166
152
  set(ref('lambdaInput'), obj({})),
@@ -170,7 +156,6 @@ export const generateLambdaDeleteRequestTemplate = (
170
156
  set(ref('lambdaInput.operationName'), str(operationName)),
171
157
  set(ref('lambdaInput.args.metadata'), obj({})),
172
158
  set(ref('lambdaInput.args.metadata.keys'), list([])),
173
- constructNonScalarFieldsStatement(tableName, ctx),
174
159
  qref(
175
160
  methodCall(ref('lambdaInput.args.metadata.keys.addAll'), methodCall(ref('util.defaultIfNull'), ref('ctx.stash.keys'), list([]))),
176
161
  ),
@@ -1,13 +1,6 @@
1
- import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
2
1
  import { compoundExpression, list, methodCall, obj, printBlock, qref, ref, set, str } from 'graphql-mapping-template';
3
- import { constructNonScalarFieldsStatement } from './resolver';
4
2
 
5
- export const generateLambdaListRequestTemplate = (
6
- tableName: string,
7
- operation: string,
8
- operationName: string,
9
- ctx: TransformerContextProvider,
10
- ): string => {
3
+ export const generateLambdaListRequestTemplate = (tableName: string, operation: string, operationName: string): string => {
11
4
  return printBlock('Invoke RDS Lambda data source')(
12
5
  compoundExpression([
13
6
  set(ref('lambdaInput'), obj({})),
@@ -17,7 +10,6 @@ export const generateLambdaListRequestTemplate = (
17
10
  set(ref('lambdaInput.operationName'), str(operationName)),
18
11
  set(ref('lambdaInput.args.metadata'), obj({})),
19
12
  set(ref('lambdaInput.args.metadata.keys'), list([])),
20
- constructNonScalarFieldsStatement(tableName, ctx),
21
13
  qref(
22
14
  methodCall(ref('lambdaInput.args.metadata.keys.addAll'), methodCall(ref('util.defaultIfNull'), ref('ctx.stash.keys'), list([]))),
23
15
  ),
@@ -1,4 +1,4 @@
1
- import { CfnMapping, Duration, Fn, Stack } from 'aws-cdk-lib';
1
+ import { CfnMapping, Duration, Fn } from 'aws-cdk-lib';
2
2
  import {
3
3
  Expression,
4
4
  compoundExpression,
@@ -13,15 +13,14 @@ import {
13
13
  str,
14
14
  toJson,
15
15
  } from 'graphql-mapping-template';
16
- import { ResourceConstants, isArrayOrObject } from 'graphql-transformer-common';
17
- import { RDSConnectionSecrets } from '@aws-amplify/graphql-transformer-core';
18
- import { GraphQLAPIProvider, RDSLayerMapping, TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
16
+ import { ResourceConstants } from 'graphql-transformer-common';
17
+ import { RDSConnectionSecrets, setResourceName } from '@aws-amplify/graphql-transformer-core';
18
+ import { GraphQLAPIProvider, RDSLayerMapping } from '@aws-amplify/graphql-transformer-interfaces';
19
19
  import { Effect, IRole, Policy, PolicyStatement, Role, ServicePrincipal } from 'aws-cdk-lib/aws-iam';
20
20
  import { IFunction, LayerVersion, Runtime } from 'aws-cdk-lib/aws-lambda';
21
21
  import { Construct } from 'constructs';
22
22
  import path from 'path';
23
23
  import { VpcConfig } from '@aws-amplify/graphql-transformer-interfaces/src';
24
- import { EnumTypeDefinitionNode, FieldDefinitionNode, Kind, ObjectTypeDefinitionNode } from 'graphql';
25
24
 
26
25
  /**
27
26
  * Define RDS Lambda operations
@@ -45,7 +44,6 @@ const getLatestLayers = (latestLayers?: RDSLayerMapping): RDSLayerMapping => {
45
44
  if (latestLayers && Object.keys(latestLayers).length > 0) {
46
45
  return latestLayers;
47
46
  }
48
- console.warn('Unable to load the latest RDS layer configuration, using local configuration.');
49
47
  const defaultLayerMapping = getDefaultLayerMapping();
50
48
  return defaultLayerMapping;
51
49
  };
@@ -54,84 +52,84 @@ const getLatestLayers = (latestLayers?: RDSLayerMapping): RDSLayerMapping => {
54
52
  // For prod use account '582037449441', layer name 'AmplifyRDSLayer' and layer version '3' as of 2023-06-20
55
53
  const getDefaultLayerMapping = (): RDSLayerMapping => ({
56
54
  'ap-northeast-1': {
57
- layerRegion: 'arn:aws:lambda:ap-northeast-1:582037449441:layer:AmplifyRDSLayer:11',
55
+ layerRegion: 'arn:aws:lambda:ap-northeast-1:582037449441:layer:AmplifyRDSLayer:5',
58
56
  },
59
57
  'us-east-1': {
60
- layerRegion: 'arn:aws:lambda:us-east-1:582037449441:layer:AmplifyRDSLayer:11',
58
+ layerRegion: 'arn:aws:lambda:us-east-1:582037449441:layer:AmplifyRDSLayer:5',
61
59
  },
62
60
  'ap-southeast-1': {
63
- layerRegion: 'arn:aws:lambda:ap-southeast-1:582037449441:layer:AmplifyRDSLayer:11',
61
+ layerRegion: 'arn:aws:lambda:ap-southeast-1:582037449441:layer:AmplifyRDSLayer:5',
64
62
  },
65
63
  'eu-west-1': {
66
- layerRegion: 'arn:aws:lambda:eu-west-1:582037449441:layer:AmplifyRDSLayer:11',
64
+ layerRegion: 'arn:aws:lambda:eu-west-1:582037449441:layer:AmplifyRDSLayer:5',
67
65
  },
68
66
  'us-west-1': {
69
- layerRegion: 'arn:aws:lambda:us-west-1:582037449441:layer:AmplifyRDSLayer:11',
67
+ layerRegion: 'arn:aws:lambda:us-west-1:582037449441:layer:AmplifyRDSLayer:5',
70
68
  },
71
69
  'ap-east-1': {
72
- layerRegion: 'arn:aws:lambda:ap-east-1:582037449441:layer:AmplifyRDSLayer:11',
70
+ layerRegion: 'arn:aws:lambda:ap-east-1:582037449441:layer:AmplifyRDSLayer:5',
73
71
  },
74
72
  'ap-northeast-2': {
75
- layerRegion: 'arn:aws:lambda:ap-northeast-2:582037449441:layer:AmplifyRDSLayer:11',
73
+ layerRegion: 'arn:aws:lambda:ap-northeast-2:582037449441:layer:AmplifyRDSLayer:5',
76
74
  },
77
75
  'ap-northeast-3': {
78
- layerRegion: 'arn:aws:lambda:ap-northeast-3:582037449441:layer:AmplifyRDSLayer:11',
76
+ layerRegion: 'arn:aws:lambda:ap-northeast-3:582037449441:layer:AmplifyRDSLayer:5',
79
77
  },
80
78
  'ap-south-1': {
81
- layerRegion: 'arn:aws:lambda:ap-south-1:582037449441:layer:AmplifyRDSLayer:11',
79
+ layerRegion: 'arn:aws:lambda:ap-south-1:582037449441:layer:AmplifyRDSLayer:5',
82
80
  },
83
81
  'ap-southeast-2': {
84
- layerRegion: 'arn:aws:lambda:ap-southeast-2:582037449441:layer:AmplifyRDSLayer:11',
82
+ layerRegion: 'arn:aws:lambda:ap-southeast-2:582037449441:layer:AmplifyRDSLayer:5',
85
83
  },
86
84
  'ca-central-1': {
87
- layerRegion: 'arn:aws:lambda:ca-central-1:582037449441:layer:AmplifyRDSLayer:11',
85
+ layerRegion: 'arn:aws:lambda:ca-central-1:582037449441:layer:AmplifyRDSLayer:5',
88
86
  },
89
87
  'eu-central-1': {
90
- layerRegion: 'arn:aws:lambda:eu-central-1:582037449441:layer:AmplifyRDSLayer:11',
88
+ layerRegion: 'arn:aws:lambda:eu-central-1:582037449441:layer:AmplifyRDSLayer:5',
91
89
  },
92
90
  'eu-north-1': {
93
- layerRegion: 'arn:aws:lambda:eu-north-1:582037449441:layer:AmplifyRDSLayer:11',
91
+ layerRegion: 'arn:aws:lambda:eu-north-1:582037449441:layer:AmplifyRDSLayer:5',
94
92
  },
95
93
  'eu-west-2': {
96
- layerRegion: 'arn:aws:lambda:eu-west-2:582037449441:layer:AmplifyRDSLayer:11',
94
+ layerRegion: 'arn:aws:lambda:eu-west-2:582037449441:layer:AmplifyRDSLayer:5',
97
95
  },
98
96
  'eu-west-3': {
99
- layerRegion: 'arn:aws:lambda:eu-west-3:582037449441:layer:AmplifyRDSLayer:11',
97
+ layerRegion: 'arn:aws:lambda:eu-west-3:582037449441:layer:AmplifyRDSLayer:5',
100
98
  },
101
99
  'sa-east-1': {
102
- layerRegion: 'arn:aws:lambda:sa-east-1:582037449441:layer:AmplifyRDSLayer:11',
100
+ layerRegion: 'arn:aws:lambda:sa-east-1:582037449441:layer:AmplifyRDSLayer:5',
103
101
  },
104
102
  'us-east-2': {
105
- layerRegion: 'arn:aws:lambda:us-east-2:582037449441:layer:AmplifyRDSLayer:11',
103
+ layerRegion: 'arn:aws:lambda:us-east-2:582037449441:layer:AmplifyRDSLayer:5',
106
104
  },
107
105
  'us-west-2': {
108
- layerRegion: 'arn:aws:lambda:us-west-2:582037449441:layer:AmplifyRDSLayer:11',
106
+ layerRegion: 'arn:aws:lambda:us-west-2:582037449441:layer:AmplifyRDSLayer:5',
109
107
  },
110
108
  'cn-north-1': {
111
- layerRegion: 'arn:aws:lambda:cn-north-1:582037449441:layer:AmplifyRDSLayer:11',
109
+ layerRegion: 'arn:aws:lambda:cn-north-1:582037449441:layer:AmplifyRDSLayer:5',
112
110
  },
113
111
  'cn-northwest-1': {
114
- layerRegion: 'arn:aws:lambda:cn-northwest-1:582037449441:layer:AmplifyRDSLayer:11',
112
+ layerRegion: 'arn:aws:lambda:cn-northwest-1:582037449441:layer:AmplifyRDSLayer:5',
115
113
  },
116
114
  'us-gov-west-1': {
117
- layerRegion: 'arn:aws:lambda:us-gov-west-1:582037449441:layer:AmplifyRDSLayer:11',
115
+ layerRegion: 'arn:aws:lambda:us-gov-west-1:582037449441:layer:AmplifyRDSLayer:5',
118
116
  },
119
117
  'us-gov-east-1': {
120
- layerRegion: 'arn:aws:lambda:us-gov-east-1:582037449441:layer:AmplifyRDSLayer:11',
118
+ layerRegion: 'arn:aws:lambda:us-gov-east-1:582037449441:layer:AmplifyRDSLayer:5',
121
119
  },
122
120
  'me-south-1': {
123
- layerRegion: 'arn:aws:lambda:me-south-1:582037449441:layer:AmplifyRDSLayer:11',
121
+ layerRegion: 'arn:aws:lambda:me-south-1:582037449441:layer:AmplifyRDSLayer:5',
124
122
  },
125
123
  });
126
124
 
127
125
  /**
128
126
  * Create RDS Lambda function
129
- * @param stack Construct
127
+ * @param scope Construct
130
128
  * @param apiGraphql GraphQLAPIProvider
131
129
  * @param lambdaRole IRole
132
130
  */
133
131
  export const createRdsLambda = (
134
- stack: Stack,
132
+ scope: Construct,
135
133
  apiGraphql: GraphQLAPIProvider,
136
134
  lambdaRole: IRole,
137
135
  environment?: { [key: string]: string },
@@ -146,7 +144,7 @@ export const createRdsLambda = (
146
144
  Runtime.NODEJS_18_X,
147
145
  [
148
146
  LayerVersion.fromLayerVersionArn(
149
- stack,
147
+ scope,
150
148
  'SQLLambdaLayerVersion',
151
149
  Fn.findInMap(RDSLayerMappingID, Fn.ref('AWS::Region'), 'layerRegion'),
152
150
  ),
@@ -154,19 +152,19 @@ export const createRdsLambda = (
154
152
  lambdaRole,
155
153
  environment,
156
154
  Duration.seconds(30),
157
- stack,
155
+ scope,
158
156
  sqlLambdaVpcConfig,
159
157
  );
160
158
  };
161
159
 
162
160
  /**
163
161
  * Create RDS Patching Lambda function
164
- * @param stack Construct
162
+ * @param scope Construct
165
163
  * @param apiGraphql GraphQLAPIProvider
166
164
  * @param lambdaRole IRole
167
165
  */
168
166
  export const createRdsPatchingLambda = (
169
- stack: Stack,
167
+ scope: Construct,
170
168
  apiGraphql: GraphQLAPIProvider,
171
169
  lambdaRole: IRole,
172
170
  environment?: { [key: string]: string },
@@ -183,7 +181,7 @@ export const createRdsPatchingLambda = (
183
181
  lambdaRole,
184
182
  environment,
185
183
  Duration.minutes(6), // We have an arbituary wait time of up to 5 minutes in the lambda function to avoid throttling errors
186
- stack,
184
+ scope,
187
185
  sqlLambdaVpcConfig,
188
186
  );
189
187
  };
@@ -191,15 +189,16 @@ export const createRdsPatchingLambda = (
191
189
  /**
192
190
  * Create RDS Lambda IAM role
193
191
  * @param roleName string
194
- * @param stack Construct
192
+ * @param scope Construct
195
193
  * @param secretEntry RDSConnectionSecrets
196
194
  */
197
- export const createRdsLambdaRole = (roleName: string, stack: Construct, secretEntry: RDSConnectionSecrets): IRole => {
195
+ export const createRdsLambdaRole = (roleName: string, scope: Construct, secretEntry: RDSConnectionSecrets): IRole => {
198
196
  const { RDSLambdaIAMRoleLogicalID, RDSLambdaLogAccessPolicy } = ResourceConstants.RESOURCES;
199
- const role = new Role(stack, RDSLambdaIAMRoleLogicalID, {
197
+ const role = new Role(scope, RDSLambdaIAMRoleLogicalID, {
200
198
  assumedBy: new ServicePrincipal('lambda.amazonaws.com'),
201
199
  roleName,
202
200
  });
201
+ setResourceName(role, { name: RDSLambdaIAMRoleLogicalID, setOnDefaultChild: true });
203
202
  const policyStatements = [
204
203
  new PolicyStatement({
205
204
  actions: ['logs:CreateLogGroup', 'logs:CreateLogStream', 'logs:PutLogEvents'],
@@ -224,7 +223,7 @@ export const createRdsLambdaRole = (roleName: string, stack: Construct, secretEn
224
223
  }
225
224
 
226
225
  role.attachInlinePolicy(
227
- new Policy(stack, RDSLambdaLogAccessPolicy, {
226
+ new Policy(scope, RDSLambdaLogAccessPolicy, {
228
227
  statements: policyStatements,
229
228
  policyName: `${roleName}Policy`,
230
229
  }),
@@ -244,15 +243,16 @@ export const createRdsLambdaRole = (roleName: string, stack: Construct, secretEn
244
243
  /**
245
244
  * Create RDS Patching Lambda IAM role
246
245
  * @param roleName string
247
- * @param stack Construct
246
+ * @param scope Construct
248
247
  * @param functionArn FunctionArn
249
248
  */
250
- export const createRdsPatchingLambdaRole = (roleName: string, stack: Construct, functionArn: string): IRole => {
249
+ export const createRdsPatchingLambdaRole = (roleName: string, scope: Construct, functionArn: string): IRole => {
251
250
  const { RDSPatchingLambdaIAMRoleLogicalID, RDSPatchingLambdaLogAccessPolicy } = ResourceConstants.RESOURCES;
252
- const role = new Role(stack, RDSPatchingLambdaIAMRoleLogicalID, {
251
+ const role = new Role(scope, RDSPatchingLambdaIAMRoleLogicalID, {
253
252
  assumedBy: new ServicePrincipal('lambda.amazonaws.com'),
254
253
  roleName,
255
254
  });
255
+ setResourceName(role, { name: RDSPatchingLambdaIAMRoleLogicalID, setOnDefaultChild: true });
256
256
  const policyStatements = [
257
257
  new PolicyStatement({
258
258
  actions: ['logs:CreateLogGroup', 'logs:CreateLogStream', 'logs:PutLogEvents'],
@@ -272,7 +272,7 @@ export const createRdsPatchingLambdaRole = (roleName: string, stack: Construct,
272
272
  ];
273
273
 
274
274
  role.attachInlinePolicy(
275
- new Policy(stack, RDSPatchingLambdaLogAccessPolicy, {
275
+ new Policy(scope, RDSPatchingLambdaLogAccessPolicy, {
276
276
  statements: policyStatements,
277
277
  policyName: `${roleName}Policy`,
278
278
  }),
@@ -295,12 +295,7 @@ export const createRdsPatchingLambdaRole = (roleName: string, stack: Construct,
295
295
  * @param operation string
296
296
  * @param operationName string
297
297
  */
298
- export const generateLambdaRequestTemplate = (
299
- tableName: string,
300
- operation: string,
301
- operationName: string,
302
- ctx: TransformerContextProvider,
303
- ): string =>
298
+ export const generateLambdaRequestTemplate = (tableName: string, operation: string, operationName: string): string =>
304
299
  printBlock('Invoke RDS Lambda data source')(
305
300
  compoundExpression([
306
301
  set(ref('lambdaInput'), obj({})),
@@ -310,7 +305,6 @@ export const generateLambdaRequestTemplate = (
310
305
  set(ref('lambdaInput.operationName'), str(operationName)),
311
306
  set(ref('lambdaInput.args.metadata'), obj({})),
312
307
  set(ref('lambdaInput.args.metadata.keys'), list([])),
313
- constructNonScalarFieldsStatement(tableName, ctx),
314
308
  qref(
315
309
  methodCall(ref('lambdaInput.args.metadata.keys.addAll'), methodCall(ref('util.defaultIfNull'), ref('ctx.stash.keys'), list([]))),
316
310
  ),
@@ -372,14 +366,3 @@ export const generateDefaultLambdaResponseMappingTemplate = (isSyncEnabled: bool
372
366
 
373
367
  return printBlock('ResponseTemplate')(compoundExpression(statements));
374
368
  };
375
-
376
- export const getNonScalarFields = (object: ObjectTypeDefinitionNode | undefined, ctx: TransformerContextProvider): string[] => {
377
- if (!object) {
378
- return [];
379
- }
380
- const enums = ctx.output.getTypeDefinitionsOfKind(Kind.ENUM_TYPE_DEFINITION) as EnumTypeDefinitionNode[];
381
- return object.fields?.filter((f: FieldDefinitionNode) => isArrayOrObject(f.type, enums)).map((f) => f.name.value) || [];
382
- };
383
-
384
- export const constructNonScalarFieldsStatement = (tableName: string, ctx: TransformerContextProvider): Expression =>
385
- set(ref('lambdaInput.args.metadata.nonScalarFields'), list(getNonScalarFields(ctx.output.getObject(tableName), ctx).map(str)));