@aws-amplify/graphql-api-construct v1.20.2
Amplify Graphql API Construct
This package vends an L3 CDK Construct wrapping the behavior of the Amplify GraphQL Transformer. This enables quick development and interation of AppSync APIs which support the Amplify GraphQL Directives. For more information on schema modeling in GraphQL, please refer to the amplify developer docs.
The primary way to use this construct is to invoke it with a provided schema (either as an inline graphql string, or as one or more appsync.SchemaFile) objects, and with authorization config provided. There are 5 supported methods for authorization of an AppSync API, all of which are supported by this construct. For more information on authorization rule definitions in Amplify, refer to the authorization docs. Note: currently at least one authorization rule is required, and if multiple are specified, a defaultAuthorizationMode must be specified on the api as well. Specified authorization modes must be a superset of those configured in the graphql schema.
Examples
Simple Todo List With Cognito Userpool-based Owner Authorization
In this example, we create a single model, which will use user pool auth in order to allow logged in users to create and manage their own todos privately.
We create a cdk App and Stack, though you may be deploying this to a custom stack, this is purely illustrative for a concise demo.
We then wire this through to import a user pool which was already deployed (creating and deploying is out of scope for this example).
import { App, Stack } from 'aws-cdk-lib';
import { UserPool } from 'aws-cdk-lib/aws-cognito';
import { AmplifyGraphqlApi, AmplifyGraphqlDefinition } from '@aws-amplify/graphql-api-construct';
const app = new App();
const stack = new Stack(app, 'TodoStack');
new AmplifyGraphqlApi(stack, 'TodoApp', {
definition: AmplifyGraphqlDefinition.fromString(/* GraphQL */ `
type Todo @model @auth(rules: [{ allow: owner }]) {
description: String!
completed: Boolean
}
`),
authorizationModes: {
userPoolConfig: {
userPool: UserPool.fromUserPoolId(stack, 'ImportedUserPool', '<YOUR_USER_POOL_ID>'),
},
},
});Multiple related models, with public read access, and admin read/write access
In this example, we create a two related models, which will use which logged in users in the 'Author' and 'Admin' user groups will have full access to, and customers requesting with api key will only have read permissions on.
import { App, Stack } from 'aws-cdk-lib';
import { UserPool } from 'aws-cdk-lib/aws-cognito';
import { AmplifyGraphqlApi, AmplifyGraphqlDefinition } from '@aws-amplify/graphql-api-construct';
const app = new App();
const stack = new Stack(app, 'BlogStack');
new AmplifyGraphqlApi(stack, 'BlogApp', {
definition: AmplifyGraphqlDefinition.fromString(/* GraphQL */ `
type Blog @model @auth(rules: [{ allow: public, operations: [read] }, { allow: groups, groups: ["Author", "Admin"] }]) {
title: String!
description: String
posts: [Post] @hasMany
}
type Post @model @auth(rules: [{ allow: public, operations: [read] }, { allow: groups, groups: ["Author", "Admin"] }]) {
title: String!
content: [String]
blog: Blog @belongsTo
}
`),
authorizationModes: {
defaultAuthorizationMode: 'API_KEY',
apiKeyConfig: {
description: 'Api Key for public access',
expires: cdk.Duration.days(7),
},
userPoolConfig: {
userPool: UserPool.fromUserPoolId(stack, 'ImportedUserPool', '<YOUR_USER_POOL_ID>'),
},
},
});Import GraphQL Schema from files, instead of inline
In this example, we import the schema definition itself from one or more local files, rather than an inline graphql string.
# todo.graphql
type Todo @model @auth(rules: [{ allow: owner }]) {
content: String!
done: Boolean
}# blog.graphql
type Blog @model @auth(rules: [{ allow: owner }, { allow: public, operations: [read] }]) {
title: String!
description: String
posts: [Post] @hasMany
}
type Post @model @auth(rules: [{ allow: owner }, { allow: public, operations: [read] }]) {
title: String!
content: [String]
blog: Blog @belongsTo
}// app.ts
import { App, Stack } from 'aws-cdk-lib';
import { UserPool } from 'aws-cdk-lib/aws-cognito';
import { AmplifyGraphqlApi, AmplifyGraphqlDefinition } from '@aws-amplify/graphql-api-construct';
const app = new App();
const stack = new Stack(app, 'MultiFileStack');
new AmplifyGraphqlApi(stack, 'MultiFileDefinition', {
definition: AmplifyGraphqlDefinition.fromFiles(path.join(__dirname, 'todo.graphql'), path.join(__dirname, 'blog.graphql')),
authorizationModes: {
defaultAuthorizationMode: 'API_KEY',
apiKeyConfig: {
description: 'Api Key for public access',
expires: cdk.Duration.days(7),
},
userPoolConfig: {
userPool: UserPool.fromUserPoolId(stack, 'ImportedUserPool', '<YOUR_USER_POOL_ID>'),
},
},
});API Reference
Constructs
AmplifyGraphqlApi
L3 Construct which invokes the Amplify Transformer Pattern over an input Graphql Schema.
This can be used to quickly define appsync apis which support full CRUD+List and Subscriptions, relationships, auth, search over data, the ability to inject custom business logic and query/mutation operations, and connect to ML services.
For more information, refer to the docs links below: Data Modeling - https://docs.amplify.aws/cli/graphql/data-modeling/ Authorization - https://docs.amplify.aws/cli/graphql/authorization-rules/ Custom Business Logic - https://docs.amplify.aws/cli/graphql/custom-business-logic/ Search - https://docs.amplify.aws/cli/graphql/search-and-result-aggregations/ ML Services - https://docs.amplify.aws/cli/graphql/connect-to-machine-learning-services/
For a full reference of the supported custom graphql directives - https://docs.amplify.aws/cli/graphql/directives-reference/
The output of this construct is a mapping of L2 or L1 resources generated by the transformer, which generally follow the access pattern
const api = new AmplifyGraphQlApi(this, 'api', { <params> });
// Access L2 resources under `.resources`
api.resources.tables["Todo"].tableArn;
// Access L1 resources under `.resources.cfnResources`
api.resources.cfnResources.cfnGraphqlApi.xrayEnabled = true;
Object.values(api.resources.cfnResources.cfnTables).forEach(table => {
table.pointInTimeRecoverySpecification = { pointInTimeRecoveryEnabled: false };
});resources.<ResourceType>.<ResourceName> - you can then perform any CDK action on these resulting resoureces.
Initializers
import { AmplifyGraphqlApi } from '@aws-amplify/graphql-api-construct'
new AmplifyGraphqlApi(scope: Construct, id: string, props: AmplifyGraphqlApiProps)| Name | Type | Description |
|---|---|---|
| scope | constructs.Construct | the scope to create this construct within. |
| id | string | the id to use for this api. |
| props | AmplifyGraphqlApiProps | the properties used to configure the generated api. |
scopeRequired
- Type: constructs.Construct
the scope to create this construct within.
idRequired
- Type: string
the id to use for this api.
propsRequired
- Type: AmplifyGraphqlApiProps
the properties used to configure the generated api.
Methods
| Name | Description |
|---|---|
| toString | Returns a string representation of this construct. |
| addDynamoDbDataSource | Add a new DynamoDB data source to this API. |
| addElasticsearchDataSource | Add a new elasticsearch data source to this API. |
| addEventBridgeDataSource | Add an EventBridge data source to this api. |
| addFunction | Add an appsync function to the api. |
| addHttpDataSource | Add a new http data source to this API. |
| addLambdaDataSource | Add a new Lambda data source to this API. |
| addNoneDataSource | Add a new dummy data source to this API. |
| addOpenSearchDataSource | dd a new OpenSearch data source to this API. |
| addRdsDataSource | Add a new Rds data source to this API. |
| addResolver | Add a resolver to the api. |
toString
public toString(): stringReturns a string representation of this construct.
addDynamoDbDataSource
public addDynamoDbDataSource(id: string, table: ITable, options?: DataSourceOptions): DynamoDbDataSourceAdd a new DynamoDB data source to this API.
This is a proxy method to the L2 GraphqlApi Construct.
idRequired
- Type: string
The data source's id.
tableRequired
- Type: aws-cdk-lib.aws_dynamodb.ITable
The DynamoDB table backing this data source.
optionsOptional
- Type: aws-cdk-lib.aws_appsync.DataSourceOptions
The optional configuration for this data source.
addElasticsearchDataSource
addElasticsearchDataSourcepublic addElasticsearchDataSource(id: string, domain: IDomain, options?: DataSourceOptions): ElasticsearchDataSourceAdd a new elasticsearch data source to this API.
This is a proxy method to the L2 GraphqlApi Construct.
idRequired
- Type: string
The data source's id.
domainRequired
- Type: aws-cdk-lib.aws_elasticsearch.IDomain
The elasticsearch domain for this data source.
optionsOptional
- Type: aws-cdk-lib.aws_appsync.DataSourceOptions
The optional configuration for this data source.
addEventBridgeDataSource
public addEventBridgeDataSource(id: string, eventBus: IEventBus, options?: DataSourceOptions): EventBridgeDataSourceAdd an EventBridge data source to this api.
This is a proxy method to the L2 GraphqlApi Construct.
idRequired
- Type: string
The data source's id.
eventBusRequired
- Type: aws-cdk-lib.aws_events.IEventBus
The EventBridge EventBus on which to put events.
optionsOptional
- Type: aws-cdk-lib.aws_appsync.DataSourceOptions
The optional configuration for this data source.
addFunction
public addFunction(id: string, props: AddFunctionProps): AppsyncFunctionAdd an appsync function to the api.
idRequired
- Type: string
the function's id.
propsRequired
- Type: AddFunctionProps
addHttpDataSource
public addHttpDataSource(id: string, endpoint: string, options?: HttpDataSourceOptions): HttpDataSourceAdd a new http data source to this API.
This is a proxy method to the L2 GraphqlApi Construct.
idRequired
- Type: string
The data source's id.
endpointRequired
- Type: string
The http endpoint.
optionsOptional
- Type: aws-cdk-lib.aws_appsync.HttpDataSourceOptions
The optional configuration for this data source.
addLambdaDataSource
public addLambdaDataSource(id: string, lambdaFunction: IFunction, options?: DataSourceOptions): LambdaDataSourceAdd a new Lambda data source to this API.
This is a proxy method to the L2 GraphqlApi Construct.
idRequired
- Type: string
The data source's id.
lambdaFunctionRequired
- Type: aws-cdk-lib.aws_lambda.IFunction
The Lambda function to call to interact with this data source.
optionsOptional
- Type: aws-cdk-lib.aws_appsync.DataSourceOptions
The optional configuration for this data source.
addNoneDataSource
public addNoneDataSource(id: string, options?: DataSourceOptions): NoneDataSourceAdd a new dummy data source to this API.
This is a proxy method to the L2 GraphqlApi Construct. Useful for pipeline resolvers and for backend changes that don't require a data source.
idRequired
- Type: string
The data source's id.
optionsOptional
- Type: aws-cdk-lib.aws_appsync.DataSourceOptions
The optional configuration for this data source.
addOpenSearchDataSource
public addOpenSearchDataSource(id: string, domain: IDomain, options?: DataSourceOptions): OpenSearchDataSourcedd a new OpenSearch data source to this API.
This is a proxy method to the L2 GraphqlApi Construct.
idRequired
- Type: string
The data source's id.
domainRequired
- Type: aws-cdk-lib.aws_opensearchservice.IDomain
The OpenSearch domain for this data source.
optionsOptional
- Type: aws-cdk-lib.aws_appsync.DataSourceOptions
The optional configuration for this data source.
addRdsDataSource
public addRdsDataSource(id: string, serverlessCluster: IServerlessCluster, secretStore: ISecret, databaseName?: string, options?: DataSourceOptions): RdsDataSourceAdd a new Rds data source to this API.
This is a proxy method to the L2 GraphqlApi Construct.
idRequired
- Type: string
The data source's id.
serverlessClusterRequired
- Type: aws-cdk-lib.aws_rds.IServerlessCluster
The serverless cluster to interact with this data source.
secretStoreRequired
- Type: aws-cdk-lib.aws_secretsmanager.ISecret
The secret store that contains the username and password for the serverless cluster.
databaseNameOptional
- Type: string
The optional name of the database to use within the cluster.
optionsOptional
- Type: aws-cdk-lib.aws_appsync.DataSourceOptions
The optional configuration for this data source.
addResolver
public addResolver(id: string, props: ExtendedResolverProps): ResolverAdd a resolver to the api.
This is a proxy method to the L2 GraphqlApi Construct.
idRequired
- Type: string
The resolver's id.
propsRequired
- Type: aws-cdk-lib.aws_appsync.ExtendedResolverProps
the resolver properties.
Static Functions
| Name | Description |
|---|---|
| isConstruct | Checks if x is a construct. |
isConstruct
isConstructimport { AmplifyGraphqlApi } from '@aws-amplify/graphql-api-construct'
AmplifyGraphqlApi.isConstruct(x: any)Checks if x is a construct.
xRequired
- Type: any
Any object.
Properties
| Name | Type | Description |
|---|---|---|
| node | constructs.Node | The tree node. |
| apiId | string | Generated Api Id. |
| generatedFunctionSlots | MutationFunctionSlot | QueryFunctionSlot | SubscriptionFunctionSlot[] | Resolvers generated by the transform process, persisted on the side in order to facilitate pulling a manifest for the purposes of inspecting and producing overrides. |
| graphqlUrl | string | Graphql URL For the generated API. |
| realtimeUrl | string | Realtime URL For the generated API. |
| resources | AmplifyGraphqlApiResources | Generated L1 and L2 CDK resources. |
| apiKey | string | Generated Api Key if generated. |
nodeRequired
public readonly node: Node;- Type: constructs.Node
The tree node.
apiIdRequired
public readonly apiId: string;- Type: string
Generated Api Id.
May be a CDK Token.
generatedFunctionSlotsRequired
public readonly generatedFunctionSlots: MutationFunctionSlot | QueryFunctionSlot | SubscriptionFunctionSlot[];- Type: MutationFunctionSlot | QueryFunctionSlot | SubscriptionFunctionSlot[]
Resolvers generated by the transform process, persisted on the side in order to facilitate pulling a manifest for the purposes of inspecting and producing overrides.
graphqlUrlRequired
public readonly graphqlUrl: string;- Type: string
Graphql URL For the generated API.
May be a CDK Token.
realtimeUrlRequired
public readonly realtimeUrl: string;- Type: string
Realtime URL For the generated API.
May be a CDK Token.
resourcesRequired
public readonly resources: AmplifyGraphqlApiResources;- Type: AmplifyGraphqlApiResources
Generated L1 and L2 CDK resources.
apiKeyOptional
public readonly apiKey: string;- Type: string
Generated Api Key if generated.
May be a CDK Token.
Structs
AddFunctionProps
Input type properties when adding a new appsync.AppsyncFunction to the generated API. This is equivalent to the Omit<appsync.AppsyncFunctionProps, 'api'>.
Initializer
import { AddFunctionProps } from '@aws-amplify/graphql-api-construct'
const addFunctionProps: AddFunctionProps = { ... }Properties
| Name | Type | Description |
|---|---|---|
| dataSource | aws-cdk-lib.aws_appsync.BaseDataSource | the data source linked to this AppSync Function. |
| name | string | the name of the AppSync Function. |
| code | aws-cdk-lib.aws_appsync.Code | The function code. |
| description | string | the description for this AppSync Function. |
| requestMappingTemplate | aws-cdk-lib.aws_appsync.MappingTemplate | the request mapping template for the AppSync Function. |
| responseMappingTemplate | aws-cdk-lib.aws_appsync.MappingTemplate | the response mapping template for the AppSync Function. |
| runtime | aws-cdk-lib.aws_appsync.FunctionRuntime | The functions runtime. |
dataSourceRequired
public readonly dataSource: BaseDataSource;- Type: aws-cdk-lib.aws_appsync.BaseDataSource
the data source linked to this AppSync Function.
nameRequired
public readonly name: string;- Type: string
the name of the AppSync Function.
codeOptional
public readonly code: Code;- Type: aws-cdk-lib.aws_appsync.Code
- Default: no code is used
The function code.
descriptionOptional
public readonly description: string;- Type: string
- Default: no description
the description for this AppSync Function.
requestMappingTemplateOptional
public readonly requestMappingTemplate: MappingTemplate;- Type: aws-cdk-lib.aws_appsync.MappingTemplate
- Default: no request mapping template
the request mapping template for the AppSync Function.
responseMappingTemplateOptional
public readonly responseMappingTemplate: MappingTemplate;- Type: aws-cdk-lib.aws_appsync.MappingTemplate
- Default: no response mapping template
the response mapping template for the AppSync Function.
runtimeOptional
public readonly runtime: FunctionRuntime;- Type: aws-cdk-lib.aws_appsync.FunctionRuntime
- Default: no function runtime, VTL mapping templates used
The functions runtime.
AmplifyDynamoDbModelDataSourceStrategy
Use custom resource type 'Custom::AmplifyDynamoDBTable' to provision table.
Initializer
import { AmplifyDynamoDbModelDataSourceStrategy } from '@aws-amplify/graphql-api-construct'
const amplifyDynamoDbModelDataSourceStrategy: AmplifyDynamoDbModelDataSourceStrategy = { ... }Properties
| Name | Type | Description |
|---|---|---|
| dbType | string | No description. |
| provisionStrategy | string | No description. |
dbTypeRequired
public readonly dbType: string;- Type: string
provisionStrategyRequired
public readonly provisionStrategy: string;- Type: string
AmplifyGraphqlApiCfnResources
L1 CDK resources from the Api which were generated as part of the transform.
These are potentially stored under nested stacks, but presented organized by type instead.
Initializer
import { AmplifyGraphqlApiCfnResources } from '@aws-amplify/graphql-api-construct'
const amplifyGraphqlApiCfnResources: AmplifyGraphqlApiCfnResources = { ... }Properties
| Name | Type | Description |
|---|---|---|
| additionalCfnResources | { key: string : aws-cdk-lib.CfnResource} | Remaining L1 resources generated, keyed by logicalId. |
| amplifyDynamoDbTables | { key: string : AmplifyDynamoDbTableWrapper} | The Generated Amplify DynamoDb Table L1 resource wrapper, keyed by model type name. |
| cfnDataSources | { key: string : aws-cdk-lib.aws_appsync.CfnDataSource} | The Generated AppSync DataSource L1 Resources, keyed by logicalId. |
| cfnFunctionConfigurations | { key: string : aws-cdk-lib.aws_appsync.CfnFunctionConfiguration} | The Generated AppSync Function L1 Resources, keyed by logicalId. |
| cfnFunctions | { key: string : aws-cdk-lib.aws_lambda.CfnFunction} | The Generated Lambda Function L1 Resources, keyed by function name. |
| cfnGraphqlApi | aws-cdk-lib.aws_appsync.CfnGraphQLApi | The Generated AppSync Api L1 Resource. |
| cfnGraphqlSchema | aws-cdk-lib.aws_appsync.CfnGraphQLSchema | The Generated AppSync Schema L1 Resource. |
| cfnResolvers | { key: string : aws-cdk-lib.aws_appsync.CfnResolver} | The Generated AppSync Resolver L1 Resources, keyed by logicalId. |
| cfnRoles | { key: string : aws-cdk-lib.aws_iam.CfnRole} | The Generated IAM Role L1 Resources, keyed by logicalId. |
| cfnTables | { key: string : aws-cdk-lib.aws_dynamodb.CfnTable} | The Generated DynamoDB Table L1 Resources, keyed by logicalId. |
| cfnApiKey | aws-cdk-lib.aws_appsync.CfnApiKey | The Generated AppSync Api Key L1 Resource. |
additionalCfnResourcesRequired
public readonly additionalCfnResources: {[ key: string ]: CfnResource};- Type: { key: string : aws-cdk-lib.CfnResource}
Remaining L1 resources generated, keyed by logicalId.
amplifyDynamoDbTablesRequired
public readonly amplifyDynamoDbTables: {[ key: string ]: AmplifyDynamoDbTableWrapper};- Type: { key: string : AmplifyDynamoDbTableWrapper}
The Generated Amplify DynamoDb Table L1 resource wrapper, keyed by model type name.
cfnDataSourcesRequired
public readonly cfnDataSources: {[ key: string ]: CfnDataSource};- Type: { key: string : aws-cdk-lib.aws_appsync.CfnDataSource}
The Generated AppSync DataSource L1 Resources, keyed by logicalId.
cfnFunctionConfigurationsRequired
public readonly cfnFunctionConfigurations: {[ key: string ]: CfnFunctionConfiguration};- Type: { key: string : aws-cdk-lib.aws_appsync.CfnFunctionConfiguration}
The Generated AppSync Function L1 Resources, keyed by logicalId.
cfnFunctionsRequired
public readonly cfnFunctions: {[ key: string ]: CfnFunction};- Type: { key: string : aws-cdk-lib.aws_lambda.CfnFunction}
The Generated Lambda Function L1 Resources, keyed by function name.
cfnGraphqlApiRequired
public readonly cfnGraphqlApi: CfnGraphQLApi;- Type: aws-cdk-lib.aws_appsync.CfnGraphQLApi
The Generated AppSync Api L1 Resource.
cfnGraphqlSchemaRequired
public readonly cfnGraphqlSchema: CfnGraphQLSchema;- Type: aws-cdk-lib.aws_appsync.CfnGraphQLSchema
The Generated AppSync Schema L1 Resource.
cfnResolversRequired
public readonly cfnResolvers: {[ key: string ]: CfnResolver};- Type: { key: string : aws-cdk-lib.aws_appsync.CfnResolver}
The Generated AppSync Resolver L1 Resources, keyed by logicalId.
cfnRolesRequired
public readonly cfnRoles: {[ key: string ]: CfnRole};- Type: { key: string : aws-cdk-lib.aws_iam.CfnRole}
The Generated IAM Role L1 Resources, keyed by logicalId.
cfnTablesRequired
public readonly cfnTables: {[ key: string ]: CfnTable};- Type: { key: string : aws-cdk-lib.aws_dynamodb.CfnTable}
The Generated DynamoDB Table L1 Resources, keyed by logicalId.
cfnApiKeyOptional
public readonly cfnApiKey: CfnApiKey;- Type: aws-cdk-lib.aws_appsync.CfnApiKey
The Generated AppSync Api Key L1 Resource.
AmplifyGraphqlApiProps
Input props for the AmplifyGraphqlApi construct.
Specifies what the input to transform into an Api, and configurations for the transformation process.
Initializer
import { AmplifyGraphqlApiProps } from '@aws-amplify/graphql-api-construct'
const amplifyGraphqlApiProps: AmplifyGraphqlApiProps = { ... }Properties
| Name | Type | Description |
|---|---|---|
| authorizationModes | AuthorizationModes | Required auth modes for the Api. |
| definition | IAmplifyGraphqlDefinition | The definition to transform in a full Api. |
| apiName | string | Name to be used for the AppSync Api. |
| conflictResolution | ConflictResolution | Configure conflict resolution on the Api, which is required to enable DataStore Api functionality. |
| dataStoreConfiguration | DataStoreConfiguration | Configure DataStore conflict resolution on the Api. |
| disableOutputStorage | boolean | Disables storing construct output. |
| functionNameMap | { key: string : aws-cdk-lib.aws_lambda.IFunction} | Lambda functions referenced in the definitions's. |
| functionSlots | MutationFunctionSlot | QueryFunctionSlot | SubscriptionFunctionSlot[] | Overrides for a given slot in the generated resolver pipelines. |
| outputStorageStrategy | IBackendOutputStorageStrategy | Strategy to store construct outputs. |
| predictionsBucket | aws-cdk-lib.aws_s3.IBucket | If using predictions, a bucket must be provided which will be used to search for assets. |
| stackMappings | { key: string : string} | StackMappings override the assigned nested stack on a per-resource basis. |
| transformerPlugins | any[] | Provide a list of additional custom transformers which are injected into the transform process. |
| translationBehavior | PartialTranslationBehavior | This replaces feature flags from the Api construct, for general information on what these parameters do, refer to https://docs.amplify.aws/cli/reference/feature-flags/#graphQLTransformer. |
authorizationModesRequired
public readonly authorizationModes: AuthorizationModes;- Type: AuthorizationModes
Required auth modes for the Api.
This object must be a superset of the configured auth providers in the Api definition. For more information, refer to https://docs.amplify.aws/cli/graphql/authorization-rules/
definitionRequired
public readonly definition: IAmplifyGraphqlDefinition;- Type: IAmplifyGraphqlDefinition
The definition to transform in a full Api.
Can be constructed via the AmplifyGraphqlDefinition class.
apiNameOptional
public readonly apiName: string;- Type: string
Name to be used for the AppSync Api.
Default: construct id.
conflictResolutionOptional
conflictResolution- Deprecated: use dataStoreConfiguration instead.
public readonly conflictResolution: ConflictResolution;- Type: ConflictResolution
Configure conflict resolution on the Api, which is required to enable DataStore Api functionality.
For more information, refer to https://docs.amplify.aws/lib/datastore/getting-started/q/platform/js/
dataStoreConfigurationOptional
public readonly dataStoreConfiguration: DataStoreConfiguration;- Type: DataStoreConfiguration
Configure DataStore conflict resolution on the Api.
Conflict resolution is required to enable DataStore Api functionality. For more information, refer to https://docs.amplify.aws/lib/datastore/getting-started/q/platform/js/
disableOutputStorageOptional
public readonly disableOutputStorage: boolean;- Type: boolean
Disables storing construct output.
Output storage should be disabled when creating multiple GraphQL APIs in a single CDK synthesis. outputStorageStrategy will be ignored if this is set to true.
functionNameMapOptional
public readonly functionNameMap: {[ key: string ]: IFunction};- Type: { key: string : aws-cdk-lib.aws_lambda.IFunction}
Lambda functions referenced in the definitions's.
functionSlotsOptional
public readonly functionSlots: MutationFunctionSlot | QueryFunctionSlot | SubscriptionFunctionSlot[];- Type: MutationFunctionSlot | QueryFunctionSlot | SubscriptionFunctionSlot[]
Overrides for a given slot in the generated resolver pipelines.
For more information about what slots are available, refer to https://docs.amplify.aws/cli/graphql/custom-business-logic/#override-amplify-generated-resolvers.
outputStorageStrategyOptional
public readonly outputStorageStrategy: IBackendOutputStorageStrategy;- Type: IBackendOutputStorageStrategy
Strategy to store construct outputs.
If no outputStorageStrategey is provided a default strategy will be used.
predictionsBucketOptional
public readonly predictionsBucket: IBucket;- Type: aws-cdk-lib.aws_s3.IBucket
If using predictions, a bucket must be provided which will be used to search for assets.
stackMappingsOptional
public readonly stackMappings: {[ key: string ]: string};- Type: { key: string : string}
StackMappings override the assigned nested stack on a per-resource basis.
Only applies to resolvers, and takes the form { : } It is not recommended to use this parameter unless you are encountering stack resource count limits, and worth noting that after initial deployment AppSync resolvers cannot be moved between nested stacks, they will need to be removed from the app, then re-added from a new stack.
transformerPluginsOptional
public readonly transformerPlugins: any[];- Type: any[]
Provide a list of additional custom transformers which are injected into the transform process.
These custom transformers must be implemented with aws-cdk-lib >=2.80.0, and
translationBehaviorOptional
public readonly translationBehavior: PartialTranslationBehavior;- Type: PartialTranslationBehavior
This replaces feature flags from the Api construct, for general information on what these parameters do, refer to https://docs.amplify.aws/cli/reference/feature-flags/#graphQLTransformer.
AmplifyGraphqlApiResources
Accessible resources from the Api which were generated as part of the transform.
These are potentially stored under nested stacks, but presented organized by type instead.
Initializer
import { AmplifyGraphqlApiResources } from '@aws-amplify/graphql-api-construct'
const amplifyGraphqlApiResources: AmplifyGraphqlApiResources = { ... }Properties
| Name | Type | Description |
|---|---|---|
| cfnResources | AmplifyGraphqlApiCfnResources | L1 Cfn Resources, for when dipping down a level of abstraction is desirable. |
| functions | { key: string : aws-cdk-lib.aws_lambda.IFunction} | The Generated Lambda Function L1 Resources, keyed by function name. |
| graphqlApi | aws-cdk-lib.aws_appsync.IGraphqlApi | The Generated AppSync Api L2 Resource, includes the Schema. |
| nestedStacks | { key: string : aws-cdk-lib.NestedStack} | Nested Stacks generated by the Api Construct. |
| roles | { key: string : aws-cdk-lib.aws_iam.IRole} | The Generated IAM Role L2 Resources, keyed by logicalId. |
| tables | { key: string : aws-cdk-lib.aws_dynamodb.ITable} | The Generated DynamoDB Table L2 Resources, keyed by logicalId. |
cfnResourcesRequired
public readonly cfnResources: AmplifyGraphqlApiCfnResources;- Type: AmplifyGraphqlApiCfnResources
L1 Cfn Resources, for when dipping down a level of abstraction is desirable.
functionsRequired
public readonly functions: {[ key: string ]: IFunction};- Type: { key: string : aws-cdk-lib.aws_lambda.IFunction}
The Generated Lambda Function L1 Resources, keyed by function name.
graphqlApiRequired
public readonly graphqlApi: IGraphqlApi;- Type: aws-cdk-lib.aws_appsync.IGraphqlApi
The Generated AppSync Api L2 Resource, includes the Schema.
nestedStacksRequired
public readonly nestedStacks: {[ key: string ]: NestedStack};- Type: { key: string : aws-cdk-lib.NestedStack}
Nested Stacks generated by the Api Construct.
rolesRequired
public readonly roles: {[ key: string ]: IRole};- Type: { key: string : aws-cdk-lib.aws_iam.IRole}
The Generated IAM Role L2 Resources, keyed by logicalId.
tablesRequired
public readonly tables: {[ key: string ]: ITable};- Type: { key: string : aws-cdk-lib.aws_dynamodb.ITable}
The Generated DynamoDB Table L2 Resources, keyed by logicalId.
ApiKeyAuthorizationConfig
Configuration for Api Keys on the Graphql Api.
Initializer
import { ApiKeyAuthorizationConfig } from '@aws-amplify/graphql-api-construct'
const apiKeyAuthorizationConfig: ApiKeyAuthorizationConfig = { ... }Properties
| Name | Type | Description |
|---|---|---|
| expires | aws-cdk-lib.Duration | A duration representing the time from Cloudformation deploy until expiry. |
| description | string | Optional description for the Api Key to attach to the Api. |
expiresRequired
public readonly expires: Duration;- Type: aws-cdk-lib.Duration
A duration representing the time from Cloudformation deploy until expiry.
descriptionOptional
public readonly description: string;- Type: string
Optional description for the Api Key to attach to the Api.
AuthorizationModes
Authorization Modes to apply to the Api.
At least one modes must be provided, and if more than one are provided a defaultAuthorizationMode must be specified. For more information on Amplify Api auth, refer to https://docs.amplify.aws/cli/graphql/authorization-rules/#authorization-strategies
Initializer
import { AuthorizationModes } from '@aws-amplify/graphql-api-construct'
const authorizationModes: AuthorizationModes = { ... }Properties
| Name | Type | Description |
|---|---|---|
| adminRoles | aws-cdk-lib.aws_iam.IRole[] | A list of roles granted full R/W access to the Api. |
| apiKeyConfig | ApiKeyAuthorizationConfig | AppSync Api Key config, required if a 'apiKey' auth provider is specified in the Api. |
| defaultAuthorizationMode | string | Default auth mode to provide to the Api, required if more than one config type is specified. |
| iamConfig | IAMAuthorizationConfig | IAM Auth config, required if an 'iam' auth provider is specified in the Api. |
| lambdaConfig | LambdaAuthorizationConfig | Lambda config, required if a 'function' auth provider is specified in the Api. |
| oidcConfig | OIDCAuthorizationConfig | Cognito OIDC config, required if a 'oidc' auth provider is specified in the Api. |
| userPoolConfig | UserPoolAuthorizationConfig | Cognito UserPool config, required if a 'userPools' auth provider is specified in the Api. |
adminRolesOptional
adminRoles- Deprecated: , use iamConfig.allowListedRoles instead.
public readonly adminRoles: IRole[];- Type: aws-cdk-lib.aws_iam.IRole[]
A list of roles granted full R/W access to the Api.
apiKeyConfigOptional
public readonly apiKeyConfig: ApiKeyAuthorizationConfig;- Type: ApiKeyAuthorizationConfig
AppSync Api Key config, required if a 'apiKey' auth provider is specified in the Api.
Applies to 'public' auth strategy.
defaultAuthorizationModeOptional
public readonly defaultAuthorizationMode: string;- Type: string
Default auth mode to provide to the Api, required if more than one config type is specified.
iamConfigOptional
public readonly iamConfig: IAMAuthorizationConfig;- Type: IAMAuthorizationConfig
IAM Auth config, required if an 'iam' auth provider is specified in the Api.
Applies to 'public' and 'private' auth strategies.
lambdaConfigOptional
public readonly lambdaConfig: LambdaAuthorizationConfig;- Type: LambdaAuthorizationConfig
Lambda config, required if a 'function' auth provider is specified in the Api.
Applies to 'custom' auth strategy.
oidcConfigOptional
public readonly oidcConfig: OIDCAuthorizationConfig;- Type: OIDCAuthorizationConfig
Cognito OIDC config, required if a 'oidc' auth provider is specified in the Api.
Applies to 'owner', 'private', and 'group' auth strategies.
userPoolConfigOptional
public readonly userPoolConfig: UserPoolAuthorizationConfig;- Type: UserPoolAuthorizationConfig
Cognito UserPool config, required if a 'userPools' auth provider is specified in the Api.
Applies to 'owner', 'private', and 'group' auth strategies.
AutomergeConflictResolutionStrategy
Enable optimistic concurrency on the project.
Initializer
import { AutomergeConflictResolutionStrategy } from '@aws-amplify/graphql-api-construct'
const automergeConflictResolutionStrategy: AutomergeConflictResolutionStrategy = { ... }Properties
| Name | Type | Description |
|---|---|---|
| detectionType | string | The conflict detection type used for resolution. |
| handlerType | string | This conflict resolution strategy executes an auto-merge. |
detectionTypeRequired
public readonly detectionType: string;- Type: string
The conflict detection type used for resolution.
handlerTypeRequired
public readonly handlerType: string;- Type: string
This conflict resolution strategy executes an auto-merge.
For more information, refer to https://docs.aws.amazon.com/appsync/latest/devguide/conflict-detection-and-sync.html#conflict-detection-and-resolution
ConflictResolution <a name="ConflictResolution" id="@aws-amplify/graphql-a
12 months ago
12 months ago
11 months ago
11 months ago
11 months ago
12 months ago
9 months ago
9 months ago
10 months ago
8 months ago
8 months ago
7 months ago
9 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
12 months ago
7 months ago
5 months ago
7 months ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago