@aws-amplify/graphql-api-construct 1.2.0-amplify-table-preview.1 → 1.2.1
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 +114 -151
- package/API.md +1 -4
- package/CHANGELOG.md +9 -6
- package/README.md +17 -0
- package/lib/amplify-graphql-api.d.ts +4 -0
- package/lib/amplify-graphql-api.js +23 -6
- package/lib/amplify-graphql-definition.js +1 -1
- package/lib/internal/amplify-metadata.js +3 -14
- package/lib/internal/authorization-modes.d.ts +2 -10
- package/lib/internal/authorization-modes.js +11 -4
- package/lib/internal/construct-exports.js +3 -12
- package/lib/internal/construct-tree.d.ts +14 -0
- package/lib/internal/construct-tree.js +28 -0
- package/lib/internal/default-parameters.js +1 -2
- package/lib/types.d.ts +4 -15
- package/lib/types.js +1 -1
- package/node_modules/@aws-amplify/graphql-auth-transformer/API.md +3 -12
- package/node_modules/@aws-amplify/graphql-auth-transformer/CHANGELOG.md +2 -2
- package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.d.ts +2 -4
- package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.js +5 -10
- package/node_modules/@aws-amplify/graphql-auth-transformer/lib/graphql-auth-transformer.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/definitions.d.ts +1 -6
- package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/definitions.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/definitions.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/index.d.ts +3 -3
- package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/index.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/index.js +12 -8
- package/node_modules/@aws-amplify/graphql-auth-transformer/lib/utils/index.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-auth-transformer/package.json +10 -10
- package/node_modules/@aws-amplify/graphql-default-value-transformer/CHANGELOG.md +1 -5
- package/node_modules/@aws-amplify/graphql-default-value-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-function-transformer/CHANGELOG.md +1 -1
- package/node_modules/@aws-amplify/graphql-function-transformer/LICENSE +201 -0
- package/node_modules/@aws-amplify/graphql-function-transformer/package.json +7 -6
- package/node_modules/@aws-amplify/graphql-http-transformer/CHANGELOG.md +1 -1
- package/node_modules/@aws-amplify/graphql-http-transformer/LICENSE +201 -0
- package/node_modules/@aws-amplify/graphql-http-transformer/package.json +7 -6
- package/node_modules/@aws-amplify/graphql-index-transformer/API.md +0 -3
- package/node_modules/@aws-amplify/graphql-index-transformer/CHANGELOG.md +1 -8
- package/node_modules/@aws-amplify/graphql-index-transformer/lib/index.d.ts +1 -1
- package/node_modules/@aws-amplify/graphql-index-transformer/lib/index.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-index-transformer/lib/index.js +1 -2
- package/node_modules/@aws-amplify/graphql-index-transformer/lib/index.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.d.ts +0 -1
- package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.js +7 -26
- package/node_modules/@aws-amplify/graphql-index-transformer/lib/resolvers/resolvers.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-index-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-maps-to-transformer/CHANGELOG.md +1 -5
- package/node_modules/@aws-amplify/graphql-maps-to-transformer/lib/assets/mapping-lambda.zip +0 -0
- package/node_modules/@aws-amplify/graphql-maps-to-transformer/package.json +10 -10
- package/node_modules/@aws-amplify/graphql-model-transformer/CHANGELOG.md +2 -12
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-model-transformer.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-model-transformer.js +0 -4
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/graphql-model-transformer.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-lambda.zip +0 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-notification-lambda.zip +0 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/rds-patching-lambda.zip +0 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/dynamo-model-resource-generator.d.ts +2 -5
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/dynamo-model-resource-generator.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/dynamo-model-resource-generator.js +60 -46
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/dynamo-model-resource-generator.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/package.json +6 -7
- package/node_modules/@aws-amplify/graphql-predictions-transformer/CHANGELOG.md +1 -1
- package/node_modules/@aws-amplify/graphql-predictions-transformer/LICENSE +201 -0
- package/node_modules/@aws-amplify/graphql-predictions-transformer/lib/predictionsLambdaFunction.zip +0 -0
- package/node_modules/@aws-amplify/graphql-predictions-transformer/package.json +7 -6
- package/node_modules/@aws-amplify/graphql-relational-transformer/CHANGELOG.md +1 -8
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolvers.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolvers.js +10 -3
- package/node_modules/@aws-amplify/graphql-relational-transformer/lib/resolvers.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-relational-transformer/package.json +8 -8
- package/node_modules/@aws-amplify/graphql-searchable-transformer/CHANGELOG.md +1 -5
- package/node_modules/@aws-amplify/graphql-searchable-transformer/lib/streaming-lambda.zip +0 -0
- package/node_modules/@aws-amplify/graphql-searchable-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-transformer/API.md +0 -3
- package/node_modules/@aws-amplify/graphql-transformer/CHANGELOG.md +4 -4
- package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.d.ts +0 -3
- package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js +3 -11
- package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer/package.json +14 -14
- package/node_modules/@aws-amplify/graphql-transformer/src/graphql-transformer.ts +2 -15
- package/node_modules/@aws-amplify/graphql-transformer-core/CHANGELOG.md +3 -3
- package/node_modules/@aws-amplify/graphql-transformer-core/LICENSE +201 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/graphql-api.js +2 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/graphql-api.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/transform-parameters.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/transform-parameters.js +0 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/transform-parameters.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/authType.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/authType.js +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/authType.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/package.json +5 -4
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/API.md +0 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/CHANGELOG.md +3 -3
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/LICENSE +201 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.d.ts +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transform-parameters.d.ts +0 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transform-parameters.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/package.json +3 -2
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/graphql-api-provider.ts +13 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/transform-parameters.ts +0 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/tsconfig.tsbuildinfo +1 -1
- package/node_modules/graphql-transformer-common/API.md +0 -3
- package/node_modules/graphql-transformer-common/CHANGELOG.md +0 -6
- package/node_modules/graphql-transformer-common/lib/ResourceConstants.d.ts +0 -3
- package/node_modules/graphql-transformer-common/lib/ResourceConstants.d.ts.map +1 -1
- package/node_modules/graphql-transformer-common/lib/ResourceConstants.js +0 -3
- package/node_modules/graphql-transformer-common/lib/ResourceConstants.js.map +1 -1
- package/node_modules/graphql-transformer-common/package.json +1 -1
- package/package.json +16 -16
- package/src/amplify-graphql-api.ts +30 -5
- package/src/internal/amplify-metadata.ts +1 -13
- package/src/internal/authorization-modes.ts +17 -16
- package/src/internal/construct-exports.ts +2 -12
- package/src/internal/construct-tree.ts +26 -0
- package/src/internal/default-parameters.ts +0 -1
- package/src/types.ts +4 -18
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.d.ts +0 -15
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.d.ts.map +0 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.js +0 -169
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.js.map +0 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.d.ts +0 -40
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.d.ts.map +0 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.js +0 -242
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-dynamodb-table-construct/index.js.map +0 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.d.ts +0 -13
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.d.ts.map +0 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.js +0 -665
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/amplify-dynamodb-table/amplify-table-manager-lambda/amplify-table-manager-handler.js.map +0 -1
|
@@ -399,9 +399,6 @@ export class ResourceConstants {
|
|
|
399
399
|
AuthCognitoUserPoolLogicalID: string;
|
|
400
400
|
AuthCognitoUserPoolNativeClientLogicalID: string;
|
|
401
401
|
AuthCognitoUserPoolJSClientLogicalID: string;
|
|
402
|
-
TableManagerOnEventHandlerLogicalID: string;
|
|
403
|
-
TableManagerIsCompleteHandlerLogicalID: string;
|
|
404
|
-
TableManagerCustomProviderLogicalID: string;
|
|
405
402
|
};
|
|
406
403
|
// (undocumented)
|
|
407
404
|
static readonly SNIPPETS: {
|
|
@@ -3,12 +3,6 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
-
# [4.26.0-amplify-table-preview.0](https://github.com/aws-amplify/amplify-category-api/compare/graphql-transformer-common@4.25.1...graphql-transformer-common@4.26.0-amplify-table-preview.0) (2023-10-12)
|
|
7
|
-
|
|
8
|
-
### Features
|
|
9
|
-
|
|
10
|
-
- bootstrap for adding amplify managed table ([#1849](https://github.com/aws-amplify/amplify-category-api/issues/1849)) ([d7d6740](https://github.com/aws-amplify/amplify-category-api/commit/d7d6740e7bc5291bc42eaefe208c0a5886b8a718))
|
|
11
|
-
|
|
12
6
|
## [4.25.1](https://github.com/aws-amplify/amplify-category-api/compare/graphql-transformer-common@4.25.0...graphql-transformer-common@4.25.1) (2023-08-30)
|
|
13
7
|
|
|
14
8
|
**Note:** Version bump only for package graphql-transformer-common
|
|
@@ -32,9 +32,6 @@ export declare class ResourceConstants {
|
|
|
32
32
|
AuthCognitoUserPoolLogicalID: string;
|
|
33
33
|
AuthCognitoUserPoolNativeClientLogicalID: string;
|
|
34
34
|
AuthCognitoUserPoolJSClientLogicalID: string;
|
|
35
|
-
TableManagerOnEventHandlerLogicalID: string;
|
|
36
|
-
TableManagerIsCompleteHandlerLogicalID: string;
|
|
37
|
-
TableManagerCustomProviderLogicalID: string;
|
|
38
35
|
};
|
|
39
36
|
static PARAMETERS: {
|
|
40
37
|
Env: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceConstants.d.ts","sourceRoot":"","sources":["../src/ResourceConstants.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;IAC5B,OAAc,IAAI,SAAU;IAE5B,OAAc,kBAAkB,SAAO;IAEvC,OAAc,6BAA6B,SAAO;IAElD,OAAc,6BAA6B,SAAO;IAElD,gBAAuB,SAAS
|
|
1
|
+
{"version":3,"file":"ResourceConstants.d.ts","sourceRoot":"","sources":["../src/ResourceConstants.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB;IAC5B,OAAc,IAAI,SAAU;IAE5B,OAAc,kBAAkB,SAAO;IAEvC,OAAc,6BAA6B,SAAO;IAElD,OAAc,6BAA6B,SAAO;IAElD,gBAAuB,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAwC9B;IAEF,OAAc,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAiDtB;IAEF,OAAc,QAAQ,KAAM;IAE5B,OAAc,UAAU;;;;;;;MAYtB;IAEF,OAAc,OAAO;;;;;;;;;;;;;;;MAsBnB;IAEF,OAAc,QAAQ,KAAM;IAE5B,gBAAuB,QAAQ;;;;;;;;;;;;;;;MAe7B;CACH"}
|
|
@@ -37,9 +37,6 @@ ResourceConstants.RESOURCES = {
|
|
|
37
37
|
AuthCognitoUserPoolLogicalID: 'AuthCognitoUserPool',
|
|
38
38
|
AuthCognitoUserPoolNativeClientLogicalID: 'AuthCognitoUserPoolNativeClient',
|
|
39
39
|
AuthCognitoUserPoolJSClientLogicalID: 'AuthCognitoUserPoolJSClient',
|
|
40
|
-
TableManagerOnEventHandlerLogicalID: 'TableManagerOnEventHandler',
|
|
41
|
-
TableManagerIsCompleteHandlerLogicalID: 'TableManagerIsCompleteHandler',
|
|
42
|
-
TableManagerCustomProviderLogicalID: 'TableManagerCustomProvider',
|
|
43
40
|
};
|
|
44
41
|
ResourceConstants.PARAMETERS = {
|
|
45
42
|
Env: 'env',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourceConstants.js","sourceRoot":"","sources":["../src/ResourceConstants.ts"],"names":[],"mappings":";;;AAAA,MAAa,iBAAiB;;AAA9B,
|
|
1
|
+
{"version":3,"file":"ResourceConstants.js","sourceRoot":"","sources":["../src/ResourceConstants.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-amplify/graphql-api-construct",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "AppSync GraphQL Api Construct using Amplify GraphQL Transformer.",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -76,26 +76,26 @@
|
|
|
76
76
|
"dependencies": {
|
|
77
77
|
"@aws-amplify/backend-output-schemas": "^0.2.0-alpha.6",
|
|
78
78
|
"@aws-amplify/backend-output-storage": "^0.1.1-alpha.2",
|
|
79
|
-
"@aws-amplify/graphql-auth-transformer": "3.1.
|
|
80
|
-
"@aws-amplify/graphql-default-value-transformer": "2.1.8
|
|
81
|
-
"@aws-amplify/graphql-function-transformer": "2.1.7
|
|
82
|
-
"@aws-amplify/graphql-http-transformer": "2.1.7
|
|
83
|
-
"@aws-amplify/graphql-index-transformer": "2.
|
|
84
|
-
"@aws-amplify/graphql-maps-to-transformer": "3.2.5
|
|
85
|
-
"@aws-amplify/graphql-model-transformer": "2.
|
|
86
|
-
"@aws-amplify/graphql-predictions-transformer": "2.1.7
|
|
87
|
-
"@aws-amplify/graphql-relational-transformer": "2.
|
|
88
|
-
"@aws-amplify/graphql-searchable-transformer": "2.2.4
|
|
89
|
-
"@aws-amplify/graphql-transformer": "1.
|
|
90
|
-
"@aws-amplify/graphql-transformer-core": "2.
|
|
91
|
-
"@aws-amplify/graphql-transformer-interfaces": "3.
|
|
79
|
+
"@aws-amplify/graphql-auth-transformer": "3.1.10",
|
|
80
|
+
"@aws-amplify/graphql-default-value-transformer": "2.1.8",
|
|
81
|
+
"@aws-amplify/graphql-function-transformer": "2.1.7",
|
|
82
|
+
"@aws-amplify/graphql-http-transformer": "2.1.7",
|
|
83
|
+
"@aws-amplify/graphql-index-transformer": "2.1.8",
|
|
84
|
+
"@aws-amplify/graphql-maps-to-transformer": "3.2.5",
|
|
85
|
+
"@aws-amplify/graphql-model-transformer": "2.2.4",
|
|
86
|
+
"@aws-amplify/graphql-predictions-transformer": "2.1.7",
|
|
87
|
+
"@aws-amplify/graphql-relational-transformer": "2.1.8",
|
|
88
|
+
"@aws-amplify/graphql-searchable-transformer": "2.2.4",
|
|
89
|
+
"@aws-amplify/graphql-transformer": "1.2.6",
|
|
90
|
+
"@aws-amplify/graphql-transformer-core": "2.2.4",
|
|
91
|
+
"@aws-amplify/graphql-transformer-interfaces": "3.2.2",
|
|
92
92
|
"charenc": "^0.0.2",
|
|
93
93
|
"crypt": "^0.0.2",
|
|
94
94
|
"fs-extra": "^8.1.0",
|
|
95
95
|
"graceful-fs": "^4.2.11",
|
|
96
96
|
"graphql": "^15.5.0",
|
|
97
97
|
"graphql-mapping-template": "4.20.12",
|
|
98
|
-
"graphql-transformer-common": "4.
|
|
98
|
+
"graphql-transformer-common": "4.25.1",
|
|
99
99
|
"hjson": "^3.2.2",
|
|
100
100
|
"immer": "^9.0.12",
|
|
101
101
|
"is-buffer": "^2.0.5",
|
|
@@ -162,5 +162,5 @@
|
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
164
|
},
|
|
165
|
-
"gitHead": "
|
|
165
|
+
"gitHead": "bd0e1b983962b9e2d15544295f8312ae379ea427"
|
|
166
166
|
}
|
|
@@ -48,6 +48,7 @@ import {
|
|
|
48
48
|
addAmplifyMetadataToStackDescription,
|
|
49
49
|
getAdditionalAuthenticationTypes,
|
|
50
50
|
} from './internal';
|
|
51
|
+
import { getStackForScope, walkAndProcessNodes } from './internal/construct-tree';
|
|
51
52
|
|
|
52
53
|
/**
|
|
53
54
|
* L3 Construct which invokes the Amplify Transformer Pattern over an input Graphql Schema.
|
|
@@ -111,6 +112,11 @@ export class AmplifyGraphqlApi extends Construct {
|
|
|
111
112
|
*/
|
|
112
113
|
public readonly apiKey: string | undefined;
|
|
113
114
|
|
|
115
|
+
/**
|
|
116
|
+
* Generated Api Id. May be a CDK Token.
|
|
117
|
+
*/
|
|
118
|
+
public readonly apiId: string;
|
|
119
|
+
|
|
114
120
|
/**
|
|
115
121
|
* Conflict resolution setting
|
|
116
122
|
*/
|
|
@@ -126,6 +132,8 @@ export class AmplifyGraphqlApi extends Construct {
|
|
|
126
132
|
constructor(scope: Construct, id: string, props: AmplifyGraphqlApiProps) {
|
|
127
133
|
super(scope, id);
|
|
128
134
|
|
|
135
|
+
validateNoOtherAmplifyGraphqlApiInStack(this);
|
|
136
|
+
|
|
129
137
|
const {
|
|
130
138
|
definition,
|
|
131
139
|
authorizationModes,
|
|
@@ -141,8 +149,7 @@ export class AmplifyGraphqlApi extends Construct {
|
|
|
141
149
|
|
|
142
150
|
addAmplifyMetadataToStackDescription(scope);
|
|
143
151
|
|
|
144
|
-
const { authConfig,
|
|
145
|
-
convertAuthorizationModesToTransformerAuthConfig(authorizationModes);
|
|
152
|
+
const { authConfig, authSynthParameters } = convertAuthorizationModesToTransformerAuthConfig(authorizationModes);
|
|
146
153
|
|
|
147
154
|
validateFunctionSlots(functionSlots ?? []);
|
|
148
155
|
const separatedFunctionSlots = separateSlots([...(functionSlots ?? []), ...definition.functionSlots]);
|
|
@@ -174,9 +181,6 @@ export class AmplifyGraphqlApi extends Construct {
|
|
|
174
181
|
schema: definition.schema,
|
|
175
182
|
userDefinedSlots: parseUserDefinedSlots(separatedFunctionSlots),
|
|
176
183
|
transformersFactoryArgs: {
|
|
177
|
-
authConfig,
|
|
178
|
-
identityPoolId,
|
|
179
|
-
adminRoles,
|
|
180
184
|
customTransformers: transformerPlugins ?? [],
|
|
181
185
|
...(predictionsBucket ? { storageConfig: { bucketName: predictionsBucket.bucketName } } : {}),
|
|
182
186
|
functionNameMap,
|
|
@@ -197,6 +201,7 @@ export class AmplifyGraphqlApi extends Construct {
|
|
|
197
201
|
this.generatedFunctionSlots = getGeneratedFunctionSlots(assetManager.resolverAssets);
|
|
198
202
|
this.storeOutput(outputStorageStrategy);
|
|
199
203
|
|
|
204
|
+
this.apiId = this.resources.cfnResources.cfnGraphqlApi.attrApiId;
|
|
200
205
|
this.graphqlUrl = this.resources.cfnResources.cfnGraphqlApi.attrGraphQlUrl;
|
|
201
206
|
this.realtimeUrl = this.resources.cfnResources.cfnGraphqlApi.attrRealtimeUrl;
|
|
202
207
|
this.apiKey = this.resources.cfnResources.cfnApiKey?.attrApiKey;
|
|
@@ -360,3 +365,23 @@ export class AmplifyGraphqlApi extends Construct {
|
|
|
360
365
|
});
|
|
361
366
|
}
|
|
362
367
|
}
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* Given the provided scope, walk the node tree, and throw an exception if any other AmplifyGraphqlApi constructs
|
|
371
|
+
* are found in the stack.
|
|
372
|
+
* @param scope the scope this construct is created in.
|
|
373
|
+
*/
|
|
374
|
+
const validateNoOtherAmplifyGraphqlApiInStack = (scope: Construct): void => {
|
|
375
|
+
const rootStack = getStackForScope(scope, true);
|
|
376
|
+
|
|
377
|
+
let wasOtherAmplifyGraphlApiFound = false;
|
|
378
|
+
walkAndProcessNodes(rootStack, (node: Construct) => {
|
|
379
|
+
if (node instanceof AmplifyGraphqlApi && scope !== node) {
|
|
380
|
+
wasOtherAmplifyGraphlApiFound = true;
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
|
|
384
|
+
if (wasOtherAmplifyGraphlApiFound) {
|
|
385
|
+
throw new Error('Only one AmplifyGraphqlApi is expected in a stack');
|
|
386
|
+
}
|
|
387
|
+
};
|
|
@@ -1,20 +1,8 @@
|
|
|
1
1
|
import * as os from 'os';
|
|
2
2
|
import * as fs from 'fs';
|
|
3
3
|
import * as path from 'path';
|
|
4
|
-
import { Stack } from 'aws-cdk-lib';
|
|
5
4
|
import { Construct } from 'constructs';
|
|
6
|
-
|
|
7
|
-
* Given a scope, search up for the parent stack. This should be the nearest stack object.
|
|
8
|
-
* @param scope the scope to search up against.
|
|
9
|
-
* @returns the stack, if one can be found, else throws an error.
|
|
10
|
-
*/
|
|
11
|
-
const getStackForScope = (scope: Construct): Stack => {
|
|
12
|
-
const stacksInHierarchy = scope.node.scopes.filter((parentScope) => 'templateOptions' in parentScope);
|
|
13
|
-
if (stacksInHierarchy.length === 0) {
|
|
14
|
-
throw new Error('No Stack Found in Construct Scope');
|
|
15
|
-
}
|
|
16
|
-
return stacksInHierarchy.reverse()[0] as Stack;
|
|
17
|
-
};
|
|
5
|
+
import { getStackForScope } from './construct-tree';
|
|
18
6
|
|
|
19
7
|
/**
|
|
20
8
|
* Compute the platform string, based on
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { AppSyncAuthConfiguration, AppSyncAuthConfigurationEntry, SynthParameters } from '@aws-amplify/graphql-transformer-interfaces';
|
|
2
|
+
import { CfnGraphQLApi } from 'aws-cdk-lib/aws-appsync';
|
|
3
|
+
import { isArray } from 'lodash';
|
|
2
4
|
import {
|
|
3
5
|
AuthorizationModes,
|
|
4
6
|
ApiKeyAuthorizationConfig,
|
|
@@ -7,8 +9,7 @@ import {
|
|
|
7
9
|
OIDCAuthorizationConfig,
|
|
8
10
|
UserPoolAuthorizationConfig,
|
|
9
11
|
} from '../types';
|
|
10
|
-
import {
|
|
11
|
-
import { isArray } from 'lodash';
|
|
12
|
+
import { ServicePrincipal } from 'aws-cdk-lib/aws-iam';
|
|
12
13
|
|
|
13
14
|
type AuthorizationConfigMode =
|
|
14
15
|
| (IAMAuthorizationConfig & { type: 'AWS_IAM' })
|
|
@@ -56,6 +57,7 @@ const convertAuthModeToAuthProvider = (authMode: AuthorizationConfigMode): AppSy
|
|
|
56
57
|
return {
|
|
57
58
|
authenticationType,
|
|
58
59
|
lambdaAuthorizerConfig: {
|
|
60
|
+
lambdaArn: authMode.function.functionArn,
|
|
59
61
|
lambdaFunction: authMode.function.functionName,
|
|
60
62
|
ttlSeconds: authMode.ttl.toSeconds(),
|
|
61
63
|
},
|
|
@@ -89,6 +91,12 @@ const convertAuthConfigToAppSyncAuth = (authModes: AuthorizationModes): AppSyncA
|
|
|
89
91
|
throw new Error('A defaultAuthorizationMode is required if multiple authorization modes are configured.');
|
|
90
92
|
}
|
|
91
93
|
|
|
94
|
+
// Enable appsync to invoke a provided lambda authorizer function
|
|
95
|
+
authModes.lambdaConfig?.function.addPermission('appsync-auth-invoke', {
|
|
96
|
+
principal: new ServicePrincipal('appsync.amazonaws.com'),
|
|
97
|
+
action: 'lambda:InvokeFunction',
|
|
98
|
+
});
|
|
99
|
+
|
|
92
100
|
// In the case of a single mode, defaultAuthorizationMode is not required, just use the provided value.
|
|
93
101
|
if (authProviders.length === 1) {
|
|
94
102
|
return {
|
|
@@ -106,7 +114,10 @@ const convertAuthConfigToAppSyncAuth = (authModes: AuthorizationModes): AppSyncA
|
|
|
106
114
|
};
|
|
107
115
|
};
|
|
108
116
|
|
|
109
|
-
type AuthSynthParameters = Pick<
|
|
117
|
+
type AuthSynthParameters = Pick<
|
|
118
|
+
SynthParameters,
|
|
119
|
+
'userPoolId' | 'authenticatedUserRoleName' | 'unauthenticatedUserRoleName' | 'identityPoolId' | 'adminRoles'
|
|
120
|
+
>;
|
|
110
121
|
|
|
111
122
|
interface AuthConfig {
|
|
112
123
|
/**
|
|
@@ -114,16 +125,6 @@ interface AuthConfig {
|
|
|
114
125
|
*/
|
|
115
126
|
authConfig?: AppSyncAuthConfiguration;
|
|
116
127
|
|
|
117
|
-
/**
|
|
118
|
-
* using the iam provider the resolvers checks will lets the roles in this list pass through the acm
|
|
119
|
-
*/
|
|
120
|
-
adminRoles?: Array<string>;
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* when authorizing private/public @auth can also check authenticated/unauthenticated status for a given identityPoolId
|
|
124
|
-
*/
|
|
125
|
-
identityPoolId?: string;
|
|
126
|
-
|
|
127
128
|
/**
|
|
128
129
|
* Params to include the transformer.
|
|
129
130
|
*/
|
|
@@ -135,7 +136,7 @@ interface AuthConfig {
|
|
|
135
136
|
*/
|
|
136
137
|
export const getAdditionalAuthenticationTypes = (cfnGraphqlApi: CfnGraphQLApi): string | undefined => {
|
|
137
138
|
if (!isArray(cfnGraphqlApi.additionalAuthenticationProviders)) {
|
|
138
|
-
return;
|
|
139
|
+
return undefined;
|
|
139
140
|
}
|
|
140
141
|
|
|
141
142
|
return (cfnGraphqlApi.additionalAuthenticationProviders as CfnGraphQLApi.AdditionalAuthenticationProviderProperty[])
|
|
@@ -153,8 +154,6 @@ export const getAdditionalAuthenticationTypes = (cfnGraphqlApi: CfnGraphQLApi):
|
|
|
153
154
|
*/
|
|
154
155
|
export const convertAuthorizationModesToTransformerAuthConfig = (authModes: AuthorizationModes): AuthConfig => ({
|
|
155
156
|
authConfig: convertAuthConfigToAppSyncAuth(authModes),
|
|
156
|
-
adminRoles: authModes.adminRoles?.map((role) => role.roleName) ?? [],
|
|
157
|
-
identityPoolId: authModes.iamConfig?.identityPoolId,
|
|
158
157
|
authSynthParameters: getSynthParameters(authModes),
|
|
159
158
|
});
|
|
160
159
|
|
|
@@ -164,6 +163,8 @@ export const convertAuthorizationModesToTransformerAuthConfig = (authModes: Auth
|
|
|
164
163
|
* @returns a record of params to be consumed by the transformer.
|
|
165
164
|
*/
|
|
166
165
|
const getSynthParameters = (authModes: AuthorizationModes): AuthSynthParameters => ({
|
|
166
|
+
adminRoles: authModes.adminRoles?.map((role) => role.roleName) ?? [],
|
|
167
|
+
identityPoolId: authModes.iamConfig?.identityPoolId,
|
|
167
168
|
...(authModes.userPoolConfig ? { userPoolId: authModes.userPoolConfig.userPool.userPoolId } : {}),
|
|
168
169
|
...(authModes?.iamConfig
|
|
169
170
|
? {
|
|
@@ -14,6 +14,7 @@ import { CfnResource, NestedStack } from 'aws-cdk-lib';
|
|
|
14
14
|
import { getResourceName } from '@aws-amplify/graphql-transformer-core';
|
|
15
15
|
import { CfnFunction, Function as LambdaFunction } from 'aws-cdk-lib/aws-lambda';
|
|
16
16
|
import { AmplifyGraphqlApiResources, FunctionSlot } from '../types';
|
|
17
|
+
import { walkAndProcessNodes } from './construct-tree';
|
|
17
18
|
|
|
18
19
|
/**
|
|
19
20
|
* Everything below here is intended to help us gather the
|
|
@@ -33,7 +34,6 @@ export const getGeneratedResources = (scope: Construct): AmplifyGraphqlApiResour
|
|
|
33
34
|
const cfnDataSources: Record<string, CfnDataSource> = {};
|
|
34
35
|
const tables: Record<string, Table> = {};
|
|
35
36
|
const cfnTables: Record<string, CfnTable> = {};
|
|
36
|
-
const cfnAmplifyTables: Record<string, CfnResource> = {};
|
|
37
37
|
const roles: Record<string, Role> = {};
|
|
38
38
|
const cfnRoles: Record<string, CfnRole> = {};
|
|
39
39
|
const functions: Record<string, LambdaFunction> = {};
|
|
@@ -78,10 +78,6 @@ export const getGeneratedResources = (scope: Construct): AmplifyGraphqlApiResour
|
|
|
78
78
|
cfnTables[resourceName] = currentScope;
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
|
-
if (currentScope instanceof CfnResource && currentScope.cfnResourceType === 'Custom::AmplifyDynamoDBTable') {
|
|
82
|
-
cfnAmplifyTables[resourceName] = currentScope;
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
81
|
if (currentScope instanceof Role) {
|
|
86
82
|
roles[resourceName] = currentScope;
|
|
87
83
|
return;
|
|
@@ -104,12 +100,7 @@ export const getGeneratedResources = (scope: Construct): AmplifyGraphqlApiResour
|
|
|
104
100
|
}
|
|
105
101
|
};
|
|
106
102
|
|
|
107
|
-
|
|
108
|
-
classifyConstruct(currentScope);
|
|
109
|
-
currentScope.node.children.forEach(walkAndClassifyConstructTree);
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
scope.node.children.forEach(walkAndClassifyConstructTree);
|
|
103
|
+
scope.node.children.forEach((child) => walkAndProcessNodes(child, classifyConstruct));
|
|
113
104
|
|
|
114
105
|
if (!cfnGraphqlApi) {
|
|
115
106
|
throw new Error('Expected to find AWS::AppSync::GraphQLApi in the generated resource scope.');
|
|
@@ -137,7 +128,6 @@ export const getGeneratedResources = (scope: Construct): AmplifyGraphqlApiResour
|
|
|
137
128
|
cfnFunctionConfigurations,
|
|
138
129
|
cfnDataSources,
|
|
139
130
|
cfnTables,
|
|
140
|
-
cfnAmplifyTables,
|
|
141
131
|
cfnRoles,
|
|
142
132
|
cfnFunctions,
|
|
143
133
|
additionalCfnResources,
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Stack } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Given a scope, search up for the parent stack. This should be the nearest stack object.
|
|
6
|
+
* @param scope the scope to search up against.
|
|
7
|
+
* @returns the stack, if one can be found, else throws an error.
|
|
8
|
+
*/
|
|
9
|
+
export const getStackForScope = (scope: Construct, getRootStack = false): Stack => {
|
|
10
|
+
const stacksInHierarchy = scope.node.scopes.filter((parentScope) => 'templateOptions' in parentScope);
|
|
11
|
+
if (stacksInHierarchy.length === 0) {
|
|
12
|
+
throw new Error('No Stack Found in Construct Scope');
|
|
13
|
+
}
|
|
14
|
+
const stacks = getRootStack ? stacksInHierarchy : stacksInHierarchy.reverse();
|
|
15
|
+
return stacks[0] as Stack;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Utility to iteratively walk the construct tree starting at a particular node, executing a node processor at each step.
|
|
20
|
+
* @param currentScope the scope to process.
|
|
21
|
+
* @param processNode the fn to invoke on walk.
|
|
22
|
+
*/
|
|
23
|
+
export const walkAndProcessNodes = (currentScope: Construct, processNode: (scope: Construct) => void): void => {
|
|
24
|
+
processNode(currentScope);
|
|
25
|
+
currentScope.node.children.forEach((child) => walkAndProcessNodes(child, processNode));
|
|
26
|
+
};
|
|
@@ -16,6 +16,5 @@ export const defaultTranslationBehavior: TranslationBehavior = {
|
|
|
16
16
|
enableAutoIndexQueryNames: true,
|
|
17
17
|
respectPrimaryKeyAttributesOnConnectionField: true,
|
|
18
18
|
enableSearchNodeToNodeEncryption: false,
|
|
19
|
-
useAmplifyManagedTableResources: false, // TODO: flip to true once all implementations are finished
|
|
20
19
|
enableTransformerCfnOutputs: false,
|
|
21
20
|
};
|
package/src/types.ts
CHANGED
|
@@ -393,14 +393,12 @@ export interface TranslationBehavior {
|
|
|
393
393
|
readonly respectPrimaryKeyAttributesOnConnectionField: boolean;
|
|
394
394
|
|
|
395
395
|
/**
|
|
396
|
-
*
|
|
397
|
-
*
|
|
398
|
-
*
|
|
396
|
+
* If enabled, set nodeToNodeEncryption on the searchable domain (if one exists). Not recommended for use, prefer
|
|
397
|
+
* to use `Object.values(resources.additionalResources['AWS::Elasticsearch::Domain']).forEach((domain: CfnDomain) => {
|
|
398
|
+
* domain.NodeToNodeEncryptionOptions = { Enabled: True };
|
|
399
|
+
* });
|
|
399
400
|
* @default false
|
|
400
|
-
* @experimental
|
|
401
401
|
*/
|
|
402
|
-
readonly useAmplifyManagedTableResources: boolean;
|
|
403
|
-
|
|
404
402
|
readonly enableSearchNodeToNodeEncryption: boolean;
|
|
405
403
|
|
|
406
404
|
/**
|
|
@@ -486,13 +484,6 @@ export interface PartialTranslationBehavior {
|
|
|
486
484
|
* @default false
|
|
487
485
|
*/
|
|
488
486
|
readonly enableTransformerCfnOutputs?: boolean;
|
|
489
|
-
|
|
490
|
-
/**
|
|
491
|
-
* When enabled, amplify DynamoDB table will be generated instead of CFN pre-defined DynamoDB table
|
|
492
|
-
* @default false
|
|
493
|
-
* @experimental
|
|
494
|
-
*/
|
|
495
|
-
readonly useAmplifyManagedTableResources?: boolean;
|
|
496
487
|
}
|
|
497
488
|
|
|
498
489
|
/**
|
|
@@ -656,11 +647,6 @@ export interface AmplifyGraphqlApiCfnResources {
|
|
|
656
647
|
*/
|
|
657
648
|
readonly cfnTables: Record<string, CfnTable>;
|
|
658
649
|
|
|
659
|
-
/**
|
|
660
|
-
* The Generated Amplify DynamoDB Table L1 Resources, keyed by model name.
|
|
661
|
-
*/
|
|
662
|
-
readonly cfnAmplifyTables: Record<string, CfnResource>;
|
|
663
|
-
|
|
664
650
|
/**
|
|
665
651
|
* The Generated IAM Role L1 Resources, keyed by logicalId.
|
|
666
652
|
*/
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { TransformerContextProvider } from '@aws-amplify/graphql-transformer-interfaces';
|
|
2
|
-
import { ObjectTypeDefinitionNode } from 'graphql';
|
|
3
|
-
import { Construct } from 'constructs';
|
|
4
|
-
import { DynamoModelResourceGenerator } from '../dynamo-model-resource-generator';
|
|
5
|
-
export declare const ITERATIVE_TABLE_STACK_NAME = "AmplifyTableManager";
|
|
6
|
-
export declare class AmplifyDynamoModelResourceGenerator extends DynamoModelResourceGenerator {
|
|
7
|
-
private customResourceServiceToken;
|
|
8
|
-
private amplifyTableArns;
|
|
9
|
-
private ddbManagerPolicy?;
|
|
10
|
-
private customResourceProvider?;
|
|
11
|
-
generateResources(ctx: TransformerContextProvider): void;
|
|
12
|
-
protected createCustomProviderResource(scope: Construct, context: TransformerContextProvider): void;
|
|
13
|
-
protected createModelTable(scope: Construct, def: ObjectTypeDefinitionNode, context: TransformerContextProvider): void;
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=amplify-dynamo-model-resource-generator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"amplify-dynamo-model-resource-generator.d.ts","sourceRoot":"","sources":["../../../src/resources/amplify-dynamodb-table/amplify-dynamo-model-resource-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAEzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AASlF,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAChE,qBAAa,mCAAoC,SAAQ,4BAA4B;IACnF,OAAO,CAAC,0BAA0B,CAAc;IAChD,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAC1C,OAAO,CAAC,sBAAsB,CAAC,CAA4B;IAE3D,iBAAiB,CAAC,GAAG,EAAE,0BAA0B,GAAG,IAAI;IA4CxD,SAAS,CAAC,4BAA4B,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,GAAG,IAAI;IAoCnG,SAAS,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,wBAAwB,EAAE,OAAO,EAAE,0BAA0B,GAAG,IAAI;CA0FvH"}
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.AmplifyDynamoModelResourceGenerator = exports.ITERATIVE_TABLE_STACK_NAME = void 0;
|
|
27
|
-
const cdk = __importStar(require("aws-cdk-lib"));
|
|
28
|
-
const graphql_transformer_common_1 = require("graphql-transformer-common");
|
|
29
|
-
const graphql_transformer_core_1 = require("@aws-amplify/graphql-transformer-core");
|
|
30
|
-
const aws_dynamodb_1 = require("aws-cdk-lib/aws-dynamodb");
|
|
31
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
32
|
-
const dynamo_model_resource_generator_1 = require("../dynamo-model-resource-generator");
|
|
33
|
-
const path = __importStar(require("path"));
|
|
34
|
-
const amplify_dynamodb_table_construct_1 = require("./amplify-dynamodb-table-construct");
|
|
35
|
-
exports.ITERATIVE_TABLE_STACK_NAME = 'AmplifyTableManager';
|
|
36
|
-
class AmplifyDynamoModelResourceGenerator extends dynamo_model_resource_generator_1.DynamoModelResourceGenerator {
|
|
37
|
-
constructor() {
|
|
38
|
-
super(...arguments);
|
|
39
|
-
this.customResourceServiceToken = '';
|
|
40
|
-
this.amplifyTableArns = [];
|
|
41
|
-
}
|
|
42
|
-
generateResources(ctx) {
|
|
43
|
-
var _a;
|
|
44
|
-
if (!this.isEnabled()) {
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
if (this.isProvisioned()) {
|
|
48
|
-
const rootStack = cdk.Stack.of(ctx.stackManager.scope);
|
|
49
|
-
this.createDynamoDBParameters(rootStack, false);
|
|
50
|
-
const tableManagerStack = ctx.stackManager.getScopeFor('AmplifyTableCustomProvider', exports.ITERATIVE_TABLE_STACK_NAME);
|
|
51
|
-
this.createCustomProviderResource(tableManagerStack, ctx);
|
|
52
|
-
}
|
|
53
|
-
this.models.forEach((model) => {
|
|
54
|
-
const tableBaseName = ctx.resourceHelper.getModelNameMapping(model.name.value);
|
|
55
|
-
const tableLogicalName = graphql_transformer_common_1.ModelResourceIDs.ModelTableResourceID(tableBaseName);
|
|
56
|
-
const scope = ctx.stackManager.getScopeFor(tableLogicalName, tableBaseName);
|
|
57
|
-
this.createModelTable(scope, model, ctx);
|
|
58
|
-
});
|
|
59
|
-
if (this.ddbManagerPolicy) {
|
|
60
|
-
(_a = this.ddbManagerPolicy) === null || _a === void 0 ? void 0 : _a.addStatements(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
61
|
-
actions: [
|
|
62
|
-
'dynamodb:CreateTable',
|
|
63
|
-
'dynamodb:UpdateTable',
|
|
64
|
-
'dynamodb:DeleteTable',
|
|
65
|
-
'dynamodb:DescribeTable',
|
|
66
|
-
'dynamodb:DescribeContinuousBackups',
|
|
67
|
-
'dynamodb:DescribeTimeToLive',
|
|
68
|
-
'dynamodb:UpdateContinuousBackups',
|
|
69
|
-
'dynamodb:UpdateTimeToLive',
|
|
70
|
-
],
|
|
71
|
-
resources: this.amplifyTableArns,
|
|
72
|
-
}));
|
|
73
|
-
}
|
|
74
|
-
this.generateResolvers(ctx);
|
|
75
|
-
}
|
|
76
|
-
createCustomProviderResource(scope, context) {
|
|
77
|
-
this.ddbManagerPolicy = new aws_cdk_lib_1.aws_iam.Policy(scope, 'CreateUpdateDeleteTablesPolicy');
|
|
78
|
-
const lambdaCode = aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '..', '..', '..', 'lib', 'resources', 'amplify-dynamodb-table', 'amplify-table-manager-lambda'));
|
|
79
|
-
const gsiOnEventHandler = new aws_cdk_lib_1.aws_lambda.Function(scope, graphql_transformer_common_1.ResourceConstants.RESOURCES.TableManagerOnEventHandlerLogicalID, {
|
|
80
|
-
runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_16_X,
|
|
81
|
-
code: lambdaCode,
|
|
82
|
-
handler: 'amplify-table-manager-handler.onEvent',
|
|
83
|
-
timeout: aws_cdk_lib_1.Duration.minutes(14),
|
|
84
|
-
});
|
|
85
|
-
const gsiIsCompleteHandler = new aws_cdk_lib_1.aws_lambda.Function(scope, graphql_transformer_common_1.ResourceConstants.RESOURCES.TableManagerIsCompleteHandlerLogicalID, {
|
|
86
|
-
runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_16_X,
|
|
87
|
-
code: lambdaCode,
|
|
88
|
-
handler: 'amplify-table-manager-handler.isComplete',
|
|
89
|
-
timeout: aws_cdk_lib_1.Duration.minutes(14),
|
|
90
|
-
});
|
|
91
|
-
this.ddbManagerPolicy.attachToRole(gsiOnEventHandler.role);
|
|
92
|
-
this.ddbManagerPolicy.attachToRole(gsiIsCompleteHandler.role);
|
|
93
|
-
this.customResourceProvider = new aws_cdk_lib_1.custom_resources.Provider(scope, graphql_transformer_common_1.ResourceConstants.RESOURCES.TableManagerCustomProviderLogicalID, {
|
|
94
|
-
onEventHandler: gsiOnEventHandler,
|
|
95
|
-
isCompleteHandler: gsiIsCompleteHandler,
|
|
96
|
-
logRetention: aws_cdk_lib_1.aws_logs.RetentionDays.ONE_MONTH,
|
|
97
|
-
queryInterval: aws_cdk_lib_1.Duration.seconds(30),
|
|
98
|
-
totalTimeout: aws_cdk_lib_1.Duration.hours(2),
|
|
99
|
-
});
|
|
100
|
-
this.customResourceServiceToken = this.customResourceProvider.serviceToken;
|
|
101
|
-
}
|
|
102
|
-
createModelTable(scope, def, context) {
|
|
103
|
-
var _a;
|
|
104
|
-
const modelName = def.name.value;
|
|
105
|
-
const tableLogicalName = graphql_transformer_common_1.ModelResourceIDs.ModelTableResourceID(modelName);
|
|
106
|
-
const tableName = context.resourceHelper.generateTableName(modelName);
|
|
107
|
-
const { readIops, writeIops, billingMode, pointInTimeRecovery, enableSSE } = this.createDynamoDBParameters(scope, true);
|
|
108
|
-
new cdk.CfnCondition(scope, graphql_transformer_common_1.ResourceConstants.CONDITIONS.HasEnvironmentParameter, {
|
|
109
|
-
expression: cdk.Fn.conditionNot(cdk.Fn.conditionEquals(context.synthParameters.amplifyEnvironmentName, graphql_transformer_common_1.ResourceConstants.NONE)),
|
|
110
|
-
});
|
|
111
|
-
const useSSE = new cdk.CfnCondition(scope, graphql_transformer_common_1.ResourceConstants.CONDITIONS.ShouldUseServerSideEncryption, {
|
|
112
|
-
expression: cdk.Fn.conditionEquals(enableSSE, 'true'),
|
|
113
|
-
});
|
|
114
|
-
const usePayPerRequestBilling = new cdk.CfnCondition(scope, graphql_transformer_common_1.ResourceConstants.CONDITIONS.ShouldUsePayPerRequestBilling, {
|
|
115
|
-
expression: cdk.Fn.conditionEquals(billingMode, 'PAY_PER_REQUEST'),
|
|
116
|
-
});
|
|
117
|
-
const usePointInTimeRecovery = new cdk.CfnCondition(scope, graphql_transformer_common_1.ResourceConstants.CONDITIONS.ShouldUsePointInTimeRecovery, {
|
|
118
|
-
expression: cdk.Fn.conditionEquals(pointInTimeRecovery, 'true'),
|
|
119
|
-
});
|
|
120
|
-
const removalPolicy = this.options.EnableDeletionProtection ? cdk.RemovalPolicy.RETAIN : cdk.RemovalPolicy.DESTROY;
|
|
121
|
-
const table = new amplify_dynamodb_table_construct_1.AmplifyDynamoDBTable(scope, `${tableLogicalName}`, {
|
|
122
|
-
customResourceServiceToken: this.customResourceServiceToken,
|
|
123
|
-
tableName,
|
|
124
|
-
partitionKey: {
|
|
125
|
-
name: 'id',
|
|
126
|
-
type: aws_dynamodb_1.AttributeType.STRING,
|
|
127
|
-
},
|
|
128
|
-
stream: aws_dynamodb_1.StreamViewType.NEW_AND_OLD_IMAGES,
|
|
129
|
-
encryption: aws_dynamodb_1.TableEncryption.DEFAULT,
|
|
130
|
-
removalPolicy,
|
|
131
|
-
...(context.isProjectUsingDataStore() ? { timeToLiveAttribute: '_ttl' } : undefined),
|
|
132
|
-
});
|
|
133
|
-
(0, graphql_transformer_core_1.setResourceName)(table, { name: modelName, setOnDefaultChild: false });
|
|
134
|
-
const tableRepresentative = table.tableFromAttr;
|
|
135
|
-
this.amplifyTableArns.push(cdk.Fn.sub('arn:aws:dynamodb:${AWS::Region}:${AWS::AccountId}:table/${tablename}', {
|
|
136
|
-
tablename: tableName,
|
|
137
|
-
}));
|
|
138
|
-
const cfnTable = (_a = table.node.defaultChild) === null || _a === void 0 ? void 0 : _a.node.defaultChild;
|
|
139
|
-
(0, graphql_transformer_core_1.setResourceName)(cfnTable, { name: modelName, setOnDefaultChild: false });
|
|
140
|
-
cfnTable.addPropertyOverride('provisionedThroughput', cdk.Fn.conditionIf(usePayPerRequestBilling.logicalId, cdk.Fn.ref('AWS::NoValue'), {
|
|
141
|
-
ReadCapacityUnits: readIops,
|
|
142
|
-
WriteCapacityUnits: writeIops,
|
|
143
|
-
}));
|
|
144
|
-
cfnTable.addPropertyOverride('pointInTimeRecoverySpecification', cdk.Fn.conditionIf(usePointInTimeRecovery.logicalId, { PointInTimeRecoveryEnabled: true }, cdk.Fn.ref('AWS::NoValue')));
|
|
145
|
-
cfnTable.addPropertyOverride('billingMode', cdk.Fn.conditionIf(usePayPerRequestBilling.logicalId, 'PAY_PER_REQUEST', cdk.Fn.ref('AWS::NoValue')).toString());
|
|
146
|
-
cfnTable.addPropertyOverride('sseSpecification', {
|
|
147
|
-
sseEnabled: cdk.Fn.conditionIf(useSSE.logicalId, true, false),
|
|
148
|
-
});
|
|
149
|
-
const streamArnOutputId = `GetAtt${graphql_transformer_common_1.ModelResourceIDs.ModelTableStreamArn(def.name.value)}`;
|
|
150
|
-
if (table.tableStreamArn) {
|
|
151
|
-
new cdk.CfnOutput(cdk.Stack.of(scope), streamArnOutputId, {
|
|
152
|
-
value: table.tableStreamArn,
|
|
153
|
-
description: 'Your DynamoDB table StreamArn.',
|
|
154
|
-
exportName: cdk.Fn.join(':', [context.api.apiId, 'GetAtt', tableLogicalName, 'StreamArn']),
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
const tableNameOutputId = `GetAtt${tableLogicalName}Name`;
|
|
158
|
-
new cdk.CfnOutput(cdk.Stack.of(scope), tableNameOutputId, {
|
|
159
|
-
value: table.tableName,
|
|
160
|
-
description: 'Your DynamoDB table name.',
|
|
161
|
-
exportName: cdk.Fn.join(':', [context.api.apiId, 'GetAtt', tableLogicalName, 'Name']),
|
|
162
|
-
});
|
|
163
|
-
const role = this.createIAMRole(context, def, scope, tableName);
|
|
164
|
-
const tableDataSourceLogicalName = `${def.name.value}Table`;
|
|
165
|
-
this.createModelTableDataSource(def, context, tableRepresentative, scope, role, tableDataSourceLogicalName);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
exports.AmplifyDynamoModelResourceGenerator = AmplifyDynamoModelResourceGenerator;
|
|
169
|
-
//# sourceMappingURL=amplify-dynamo-model-resource-generator.js.map
|