@aws-amplify/graphql-api-construct 1.4.1 → 1.4.3
Sign up to get free protection for your applications and to get access to all the features.
- package/.jsii +384 -253
- package/API.md +16 -4
- package/CHANGELOG.md +12 -0
- package/lib/amplify-dynamodb-table-wrapper.js +1 -1
- package/lib/amplify-graphql-api.d.ts +1 -1
- package/lib/amplify-graphql-api.js +16 -5
- package/lib/amplify-graphql-definition.d.ts +4 -3
- package/lib/amplify-graphql-definition.js +8 -16
- package/lib/index.d.ts +3 -1
- package/lib/index.js +19 -2
- package/lib/internal/data-source-config.d.ts +21 -2
- package/lib/internal/data-source-config.js +72 -33
- package/lib/internal/model-type-name.d.ts +2 -2
- package/lib/internal/model-type-name.js +4 -4
- package/lib/model-datasource-strategy.d.ts +116 -0
- package/lib/model-datasource-strategy.js +10 -0
- package/lib/sql-model-datasource-strategy.d.ts +1 -1
- package/lib/sql-model-datasource-strategy.js +5 -1
- package/lib/types.d.ts +16 -124
- package/lib/types.js +1 -1
- package/node_modules/@aws-amplify/graphql-auth-transformer/CHANGELOG.md +8 -0
- package/node_modules/@aws-amplify/graphql-auth-transformer/package.json +10 -10
- package/node_modules/@aws-amplify/graphql-default-value-transformer/CHANGELOG.md +8 -0
- package/node_modules/@aws-amplify/graphql-default-value-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-function-transformer/CHANGELOG.md +8 -0
- package/node_modules/@aws-amplify/graphql-function-transformer/package.json +6 -6
- package/node_modules/@aws-amplify/graphql-http-transformer/CHANGELOG.md +8 -0
- package/node_modules/@aws-amplify/graphql-http-transformer/package.json +6 -6
- package/node_modules/@aws-amplify/graphql-index-transformer/CHANGELOG.md +8 -0
- package/node_modules/@aws-amplify/graphql-index-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-maps-to-transformer/CHANGELOG.md +8 -0
- 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/API.md +16 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/CHANGELOG.md +12 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/index.d.ts +1 -0
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/index.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/index.js +3 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/index.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/resolvers/rds/resolver.d.ts +4 -2
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.js +30 -86
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resolvers/rds/resolver.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.d.ts +2 -3
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.js +36 -18
- package/node_modules/@aws-amplify/graphql-model-transformer/lib/resources/rds-model-resource-generator.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-model-transformer/package.json +6 -6
- package/node_modules/@aws-amplify/graphql-predictions-transformer/CHANGELOG.md +8 -0
- package/node_modules/@aws-amplify/graphql-predictions-transformer/lib/predictionsLambdaFunction.zip +0 -0
- package/node_modules/@aws-amplify/graphql-predictions-transformer/package.json +6 -6
- package/node_modules/@aws-amplify/graphql-relational-transformer/CHANGELOG.md +10 -0
- package/node_modules/@aws-amplify/graphql-relational-transformer/package.json +8 -8
- package/node_modules/@aws-amplify/graphql-searchable-transformer/CHANGELOG.md +8 -0
- 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-sql-transformer/CHANGELOG.md +10 -0
- package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.js +15 -1
- package/node_modules/@aws-amplify/graphql-sql-transformer/lib/graphql-sql-transformer.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-sql-transformer/package.json +7 -7
- package/node_modules/@aws-amplify/graphql-transformer/API.md +3 -1
- package/node_modules/@aws-amplify/graphql-transformer/CHANGELOG.md +10 -0
- package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.d.ts +2 -1
- 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 +2 -1
- package/node_modules/@aws-amplify/graphql-transformer/lib/graphql-transformer.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer/package.json +15 -15
- package/node_modules/@aws-amplify/graphql-transformer/src/graphql-transformer.ts +4 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/API.md +35 -5
- package/node_modules/@aws-amplify/graphql-transformer-core/CHANGELOG.md +12 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.d.ts +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.js +19 -13
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/index.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.js +20 -2
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/transform.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/types.d.ts +2 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformation/types.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.d.ts +24 -6
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.js +16 -14
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/index.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/stack-manager.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/transformer-context/stack-manager.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.d.ts +14 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.d.ts.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.js +23 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/graphql-utils.js.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.d.ts +2 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.js +16 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/index.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.d.ts +11 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.d.ts.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.js +84 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/lib/utils/model-datasource-strategy-utils.js.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-core/package.json +4 -4
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/API.md +89 -5
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/CHANGELOG.md +6 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/graphql-api-provider.d.ts +0 -17
- 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/index.d.ts +2 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.js +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/index.js.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/index.d.ts +2 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/index.d.ts.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/index.js +18 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/index.js.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/types.d.ts +55 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/types.d.ts.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/types.js +3 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/model-datasource/types.js.map +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transform-host-provider.d.ts +2 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transform-host-provider.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/index.d.ts +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/index.d.ts.map +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-context-provider.d.ts +6 -4
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/lib/transformer-context/transformer-context-provider.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 +1 -41
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/index.ts +1 -4
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/model-datasource/index.ts +1 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/model-datasource/types.ts +163 -0
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transform-host-provider.ts +1 -1
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/index.ts +4 -3
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/transformer-context-provider.ts +6 -7
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/src/transformer-context/transformer-datasource-provider.ts +2 -2
- package/node_modules/@aws-amplify/graphql-transformer-interfaces/tsconfig.tsbuildinfo +1 -1
- package/node_modules/graphql-transformer-common/API.md +11 -4
- package/node_modules/graphql-transformer-common/CHANGELOG.md +6 -0
- package/node_modules/graphql-transformer-common/lib/ResourceConstants.d.ts +11 -4
- package/node_modules/graphql-transformer-common/lib/ResourceConstants.d.ts.map +1 -1
- package/node_modules/graphql-transformer-common/lib/ResourceConstants.js +11 -4
- package/node_modules/graphql-transformer-common/lib/ResourceConstants.js.map +1 -1
- package/node_modules/graphql-transformer-common/package.json +2 -3
- package/package.json +17 -17
- package/src/amplify-graphql-api.ts +20 -5
- package/src/amplify-graphql-definition.ts +8 -15
- package/src/index.ts +3 -11
- package/src/internal/data-source-config.ts +89 -35
- package/src/internal/model-type-name.ts +3 -3
- package/src/model-datasource-strategy.ts +149 -0
- package/src/sql-model-datasource-strategy.ts +1 -1
- package/src/types.ts +17 -151
- /package/node_modules/{graphql-transformer-common → @aws-amplify/graphql-transformer-interfaces}/LICENSE +0 -0
@@ -0,0 +1,149 @@
|
|
1
|
+
// #########################################################################################################################################
|
2
|
+
// These are the public-facing types used by customers to define their L3 CDK construct. Many of these have corresponding definitions in the
|
3
|
+
// transformer-interfaces package to define internal behavior.
|
4
|
+
//
|
5
|
+
// If you change types in this file (the customer-facing interface), be sure to make corresponding changes to
|
6
|
+
// amplify-graphql-transformer-interfaces/src/model-datasource (the internal implementation)
|
7
|
+
// #########################################################################################################################################
|
8
|
+
|
9
|
+
/**
|
10
|
+
* All known ModelDataSourceStrategies. Concrete strategies vary widely in their requirements and implementations.
|
11
|
+
* @experimental
|
12
|
+
*/
|
13
|
+
export type ModelDataSourceStrategy =
|
14
|
+
| DefaultDynamoDbModelDataSourceStrategy
|
15
|
+
| AmplifyDynamoDbModelDataSourceStrategy
|
16
|
+
| SQLLambdaModelDataSourceStrategy;
|
17
|
+
|
18
|
+
// TODO: Make this the source of truth for database type definitions used throughout the construct & transformer
|
19
|
+
export type ModelDataSourceStrategyDbType = 'DYNAMODB';
|
20
|
+
|
21
|
+
/**
|
22
|
+
* Use default CloudFormation type 'AWS::DynamoDB::Table' to provision table.
|
23
|
+
* @experimental
|
24
|
+
*/
|
25
|
+
export interface DefaultDynamoDbModelDataSourceStrategy {
|
26
|
+
readonly dbType: 'DYNAMODB';
|
27
|
+
readonly provisionStrategy: 'DEFAULT';
|
28
|
+
}
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Use custom resource type 'Custom::AmplifyDynamoDBTable' to provision table.
|
32
|
+
* @experimental
|
33
|
+
*/
|
34
|
+
export interface AmplifyDynamoDbModelDataSourceStrategy {
|
35
|
+
readonly dbType: 'DYNAMODB';
|
36
|
+
readonly provisionStrategy: 'AMPLIFY_TABLE';
|
37
|
+
}
|
38
|
+
|
39
|
+
/**
|
40
|
+
* A strategy that creates a Lambda to connect to a pre-existing SQL table to resolve model data.
|
41
|
+
*
|
42
|
+
* @experimental
|
43
|
+
*/
|
44
|
+
export interface SQLLambdaModelDataSourceStrategy {
|
45
|
+
/**
|
46
|
+
* The name of the strategy. This will be used to name the AppSync DataSource itself, plus any associated resources like resolver Lambdas.
|
47
|
+
* This name must be unique across all schema definitions in a GraphQL API.
|
48
|
+
*/
|
49
|
+
readonly name: string;
|
50
|
+
|
51
|
+
/**
|
52
|
+
* The type of the SQL database used to process model operations for this definition.
|
53
|
+
*/
|
54
|
+
readonly dbType: 'MYSQL' | 'POSTGRES';
|
55
|
+
|
56
|
+
/**
|
57
|
+
* The parameters the Lambda data source will use to connect to the database.
|
58
|
+
*/
|
59
|
+
readonly dbConnectionConfig: SqlModelDataSourceDbConnectionConfig;
|
60
|
+
|
61
|
+
/**
|
62
|
+
* The configuration of the VPC into which to install the Lambda.
|
63
|
+
*/
|
64
|
+
readonly vpcConfiguration?: VpcConfig;
|
65
|
+
|
66
|
+
/**
|
67
|
+
* Custom SQL statements. The key is the value of the `references` attribute of the `@sql` directive in the `schema`; the value is the SQL
|
68
|
+
* to be executed.
|
69
|
+
*/
|
70
|
+
readonly customSqlStatements?: Record<string, string>;
|
71
|
+
|
72
|
+
/**
|
73
|
+
* The configuration for the provisioned concurrency of the Lambda.
|
74
|
+
*/
|
75
|
+
readonly sqlLambdaProvisionedConcurrencyConfig?: ProvisionedConcurrencyConfig;
|
76
|
+
}
|
77
|
+
|
78
|
+
/**
|
79
|
+
* Configuration of the VPC in which to install a Lambda to resolve queries against a SQL-based data source. The SQL Lambda will be deployed
|
80
|
+
* into the specified VPC, subnets, and security groups. The specified subnets and security groups must be in the same VPC. The VPC must
|
81
|
+
* have at least one subnet. The construct will also create VPC service endpoints in the specified subnets, as well as inbound security
|
82
|
+
* rules, to allow traffic on port 443 within each security group. This allows the Lambda to read database connection information from
|
83
|
+
* Secure Systems Manager.
|
84
|
+
* @experimental
|
85
|
+
*/
|
86
|
+
export interface VpcConfig {
|
87
|
+
/** The VPC to install the Lambda data source in. */
|
88
|
+
readonly vpcId: string;
|
89
|
+
|
90
|
+
/** The security groups to install the Lambda data source in. */
|
91
|
+
readonly securityGroupIds: string[];
|
92
|
+
|
93
|
+
/** The subnets to install the Lambda data source in, one per availability zone. */
|
94
|
+
readonly subnetAvailabilityZoneConfig: SubnetAvailabilityZone[];
|
95
|
+
}
|
96
|
+
|
97
|
+
/**
|
98
|
+
* The configuration for the provisioned concurrency of the Lambda.
|
99
|
+
* @experimental
|
100
|
+
*/
|
101
|
+
export interface ProvisionedConcurrencyConfig {
|
102
|
+
/** The amount of provisioned concurrency to allocate. **/
|
103
|
+
readonly provisionedConcurrentExecutions: number;
|
104
|
+
}
|
105
|
+
|
106
|
+
/**
|
107
|
+
* Subnet configuration for VPC endpoints used by a Lambda resolver for a SQL-based data source. Although it is possible to create multiple
|
108
|
+
* subnets in a single availability zone, VPC service endpoints may only be deployed to a single subnet in a given availability zone. This
|
109
|
+
* structure ensures that the Lambda function and VPC service endpoints are mutually consistent.
|
110
|
+
* @experimental
|
111
|
+
*/
|
112
|
+
export interface SubnetAvailabilityZone {
|
113
|
+
/** The subnet ID to install the Lambda data source in. */
|
114
|
+
readonly subnetId: string;
|
115
|
+
|
116
|
+
/** The availability zone of the subnet. */
|
117
|
+
readonly availabilityZone: string;
|
118
|
+
}
|
119
|
+
|
120
|
+
/**
|
121
|
+
* The Secure Systems Manager parameter paths the Lambda data source will use to connect to the database.
|
122
|
+
*
|
123
|
+
* These parameters are retrieved from Secure Systems Manager in the same region as the Lambda.
|
124
|
+
* @experimental
|
125
|
+
*/
|
126
|
+
export interface SqlModelDataSourceDbConnectionConfig {
|
127
|
+
/** The Secure Systems Manager parameter containing the hostname of the database. For RDS-based SQL data sources, this can be the hostname
|
128
|
+
* of a database proxy, cluster, or instance.
|
129
|
+
*/
|
130
|
+
readonly hostnameSsmPath: string;
|
131
|
+
|
132
|
+
/** The Secure Systems Manager parameter containing the port number of the database proxy, cluster, or instance. */
|
133
|
+
readonly portSsmPath: string;
|
134
|
+
|
135
|
+
/** The Secure Systems Manager parameter containing the username to use when connecting to the database. */
|
136
|
+
readonly usernameSsmPath: string;
|
137
|
+
|
138
|
+
/** The Secure Systems Manager parameter containing the password to use when connecting to the database. */
|
139
|
+
readonly passwordSsmPath: string;
|
140
|
+
|
141
|
+
/** The Secure Systems Manager parameter containing the database name. */
|
142
|
+
readonly databaseNameSsmPath: string;
|
143
|
+
}
|
144
|
+
|
145
|
+
export interface CustomSqlDataSourceStrategy {
|
146
|
+
readonly typeName: 'Query' | 'Mutation';
|
147
|
+
readonly fieldName: string;
|
148
|
+
readonly strategy: SQLLambdaModelDataSourceStrategy;
|
149
|
+
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import * as fs from 'fs';
|
2
2
|
import * as path from 'path';
|
3
|
-
import { SQLLambdaModelDataSourceStrategy, SqlModelDataSourceDbConnectionConfig } from './
|
3
|
+
import { SQLLambdaModelDataSourceStrategy, SqlModelDataSourceDbConnectionConfig } from './model-datasource-strategy';
|
4
4
|
|
5
5
|
/**
|
6
6
|
* Type predicate that returns true if the object is a SQLLambdaModelDataSourceStrategy.
|
package/src/types.ts
CHANGED
@@ -18,6 +18,7 @@ import { IUserPool } from 'aws-cdk-lib/aws-cognito';
|
|
18
18
|
import { IFunction, CfnFunction } from 'aws-cdk-lib/aws-lambda';
|
19
19
|
import { IBucket } from 'aws-cdk-lib/aws-s3';
|
20
20
|
import { AmplifyDynamoDbTableWrapper } from './amplify-dynamodb-table-wrapper';
|
21
|
+
import { CustomSqlDataSourceStrategy, ModelDataSourceStrategy } from './model-datasource-strategy';
|
21
22
|
|
22
23
|
/**
|
23
24
|
* Configuration for IAM Authorization on the Graphql Api.
|
@@ -425,8 +426,9 @@ export interface TranslationBehavior {
|
|
425
426
|
|
426
427
|
/**
|
427
428
|
* This behavior will only come into effect when both "allowDestructiveGraphqlSchemaUpdates" and this value are set to true
|
428
|
-
*
|
429
|
-
*
|
429
|
+
*
|
430
|
+
* When enabled, any GSI update operation will replace the table instead of iterative deployment, which will WIPE ALL EXISTING DATA but
|
431
|
+
* cost much less time for deployment This will only affect DynamoDB tables with provision strategy "AMPLIFY_TABLE".
|
430
432
|
* @default false
|
431
433
|
* @experimental
|
432
434
|
*/
|
@@ -526,8 +528,9 @@ export interface PartialTranslationBehavior {
|
|
526
528
|
|
527
529
|
/**
|
528
530
|
* This behavior will only come into effect when both "allowDestructiveGraphqlSchemaUpdates" and this value are set to true
|
529
|
-
*
|
530
|
-
*
|
531
|
+
*
|
532
|
+
* When enabled, any global secondary index update operation will replace the table instead of iterative deployment, which will WIPE ALL
|
533
|
+
* EXISTING DATA but cost much less time for deployment This will only affect DynamoDB tables with provision strategy "AMPLIFY_TABLE".
|
531
534
|
* @default false
|
532
535
|
* @experimental
|
533
536
|
*/
|
@@ -567,6 +570,16 @@ export interface IAmplifyGraphqlDefinition {
|
|
567
570
|
* @returns datasource strategy mapping
|
568
571
|
*/
|
569
572
|
readonly dataSourceStrategies: Record<string, ModelDataSourceStrategy>;
|
573
|
+
|
574
|
+
/**
|
575
|
+
* An array of custom Query or Mutation SQL commands to the data sources that resolves them.
|
576
|
+
*
|
577
|
+
* **NOTE** Explicitly specifying the 'customSqlDataSourceStrategies' configuration option is in preview and is not recommended to use
|
578
|
+
* with production systems. For production, use the static factory methods `fromString` or `fromFiles`.
|
579
|
+
* @experimental
|
580
|
+
* @returns a list of mappings from custom SQL commands to data sources
|
581
|
+
*/
|
582
|
+
readonly customSqlDataSourceStrategies?: CustomSqlDataSourceStrategy[];
|
570
583
|
}
|
571
584
|
|
572
585
|
/**
|
@@ -820,150 +833,3 @@ export interface AddFunctionProps {
|
|
820
833
|
*/
|
821
834
|
readonly code?: Code;
|
822
835
|
}
|
823
|
-
|
824
|
-
/**
|
825
|
-
* All known ModelDataSourceStrategies. Concrete strategies vary widely in their requirements and implementations.
|
826
|
-
* @experimental
|
827
|
-
*/
|
828
|
-
export type ModelDataSourceStrategy =
|
829
|
-
| DefaultDynamoDbModelDataSourceStrategy
|
830
|
-
| AmplifyDynamoDbModelDataSourceStrategy
|
831
|
-
| SQLLambdaModelDataSourceStrategy;
|
832
|
-
|
833
|
-
// TODO: Make this the source of truth for database type definitions used throughout the construct & transformer
|
834
|
-
export type ModelDataSourceStrategyDbType = 'DYNAMODB';
|
835
|
-
|
836
|
-
/**
|
837
|
-
* Use default CloudFormation type 'AWS::DynamoDB::Table' to provision table.
|
838
|
-
* @experimental
|
839
|
-
*/
|
840
|
-
export interface DefaultDynamoDbModelDataSourceStrategy {
|
841
|
-
readonly dbType: 'DYNAMODB';
|
842
|
-
readonly provisionStrategy: 'DEFAULT';
|
843
|
-
}
|
844
|
-
|
845
|
-
/**
|
846
|
-
* Use custom resource type 'Custom::AmplifyDynamoDBTable' to provision table.
|
847
|
-
* @experimental
|
848
|
-
*/
|
849
|
-
export interface AmplifyDynamoDbModelDataSourceStrategy {
|
850
|
-
readonly dbType: 'DYNAMODB';
|
851
|
-
readonly provisionStrategy: 'AMPLIFY_TABLE';
|
852
|
-
}
|
853
|
-
|
854
|
-
/**
|
855
|
-
* A strategy that creates a Lambda to connect to a pre-existing SQL table to resolve model data.
|
856
|
-
*
|
857
|
-
* @experimental
|
858
|
-
*/
|
859
|
-
export interface SQLLambdaModelDataSourceStrategy {
|
860
|
-
/**
|
861
|
-
* The name of the strategy. This will be used to name the AppSync DataSource itself, plus any associated resources like resolver Lambdas.
|
862
|
-
* This name must be unique across all schema definitions in a GraphQL API.
|
863
|
-
*/
|
864
|
-
readonly name: string;
|
865
|
-
|
866
|
-
/**
|
867
|
-
* The type of the SQL database used to process model operations for this definition.
|
868
|
-
*/
|
869
|
-
readonly dbType: 'MYSQL' | 'POSTGRES';
|
870
|
-
|
871
|
-
/**
|
872
|
-
* The parameters the Lambda data source will use to connect to the database.
|
873
|
-
*/
|
874
|
-
readonly dbConnectionConfig: SqlModelDataSourceDbConnectionConfig;
|
875
|
-
|
876
|
-
/**
|
877
|
-
* The configuration of the VPC into which to install the Lambda.
|
878
|
-
*/
|
879
|
-
readonly vpcConfiguration?: VpcConfig;
|
880
|
-
|
881
|
-
/**
|
882
|
-
* Custom SQL statements. The key is the value of the `references` attribute of the `@sql` directive in the `schema`; the value is the SQL
|
883
|
-
* to be executed.
|
884
|
-
*/
|
885
|
-
readonly customSqlStatements?: Record<string, string>;
|
886
|
-
|
887
|
-
/**
|
888
|
-
* An optional override for the default SQL Lambda Layer
|
889
|
-
*/
|
890
|
-
readonly sqlLambdaLayerMapping?: SQLLambdaLayerMapping;
|
891
|
-
|
892
|
-
/**
|
893
|
-
* The configuration for the provisioned concurrency of the Lambda.
|
894
|
-
*/
|
895
|
-
readonly sqlLambdaProvisionedConcurrencyConfig?: ProvisionedConcurrencyConfig;
|
896
|
-
}
|
897
|
-
|
898
|
-
/**
|
899
|
-
* Configuration of the VPC in which to install a Lambda to resolve queries against a SQL-based data source. The SQL Lambda will be deployed
|
900
|
-
* into the specified VPC, subnets, and security groups. The specified subnets and security groups must be in the same VPC. The VPC must
|
901
|
-
* have at least one subnet. The construct will also create VPC service endpoints in the specified subnets, as well as inbound security
|
902
|
-
* rules, to allow traffic on port 443 within each security group. This allows the Lambda to read database connection information from
|
903
|
-
* Secure Systems Manager.
|
904
|
-
* @experimental
|
905
|
-
*/
|
906
|
-
export interface VpcConfig {
|
907
|
-
/** The VPC to install the Lambda data source in. */
|
908
|
-
readonly vpcId: string;
|
909
|
-
|
910
|
-
/** The security groups to install the Lambda data source in. */
|
911
|
-
readonly securityGroupIds: string[];
|
912
|
-
|
913
|
-
/** The subnets to install the Lambda data source in, one per availability zone. */
|
914
|
-
readonly subnetAvailabilityZoneConfig: SubnetAvailabilityZone[];
|
915
|
-
}
|
916
|
-
|
917
|
-
/**
|
918
|
-
* The configuration for the provisioned concurrency of the Lambda.
|
919
|
-
* @experimental
|
920
|
-
*/
|
921
|
-
export interface ProvisionedConcurrencyConfig {
|
922
|
-
/** The amount of provisioned concurrency to allocate. **/
|
923
|
-
readonly provisionedConcurrentExecutions: number;
|
924
|
-
}
|
925
|
-
|
926
|
-
/**
|
927
|
-
* Subnet configuration for VPC endpoints used by a Lambda resolver for a SQL-based data source. Although it is possible to create multiple
|
928
|
-
* subnets in a single availability zone, VPC service endpoints may only be deployed to a single subnet in a given availability zone. This
|
929
|
-
* structure ensures that the Lambda function and VPC service endpoints are mutually consistent.
|
930
|
-
* @experimental
|
931
|
-
*/
|
932
|
-
export interface SubnetAvailabilityZone {
|
933
|
-
/** The subnet ID to install the Lambda data source in. */
|
934
|
-
readonly subnetId: string;
|
935
|
-
|
936
|
-
/** The availability zone of the subnet. */
|
937
|
-
readonly availabilityZone: string;
|
938
|
-
}
|
939
|
-
|
940
|
-
/**
|
941
|
-
* Maps a given AWS region to the SQL Lambda layer version ARN for that region. `key` is the region; the `value` is the Lambda Layer version
|
942
|
-
* ARN
|
943
|
-
*/
|
944
|
-
export type SQLLambdaLayerMapping = Record<string, string>;
|
945
|
-
|
946
|
-
/**
|
947
|
-
* The Secure Systems Manager parameter paths the Lambda data source will use to connect to the database.
|
948
|
-
*
|
949
|
-
* These parameters are retrieved from Secure Systems Manager in the same region as the Lambda.
|
950
|
-
* @experimental
|
951
|
-
*/
|
952
|
-
export interface SqlModelDataSourceDbConnectionConfig {
|
953
|
-
/** The Secure Systems Manager parameter containing the hostname of the database. For RDS-based SQL data sources, this can be the hostname
|
954
|
-
* of a database proxy, cluster, or instance.
|
955
|
-
*/
|
956
|
-
readonly hostnameSsmPath: string;
|
957
|
-
|
958
|
-
/** The Secure Systems Manager parameter containing the port number of the database proxy, cluster, or instance. */
|
959
|
-
readonly portSsmPath: string;
|
960
|
-
|
961
|
-
/** The Secure Systems Manager parameter containing the username to use when connecting to the database. */
|
962
|
-
readonly usernameSsmPath: string;
|
963
|
-
|
964
|
-
/** The Secure Systems Manager parameter containing the password to use when connecting to the database. */
|
965
|
-
readonly passwordSsmPath: string;
|
966
|
-
|
967
|
-
/** The Secure Systems Manager parameter containing the database name. */
|
968
|
-
readonly databaseNameSsmPath: string;
|
969
|
-
}
|
File without changes
|