@aws-amplify/graphql-api-construct

中文文档
1.22.4发布于 2026/11/07Apache-2.0TypeScriptCommonJS近 30 天下载 66.5万

AppSync GraphQL Api Construction 使用放大GraphQL变形器.

中文使用文档
文档目录16 节
  1. 实例
  2. 以 Cognitto 用户池为基础的所有者授权的简单待办事宜列表
  3. 多个相关模式,可公开阅读访问,管理员阅读/写入访问
  4. 从文件导入 GraphQL Schema, 而不是内入
  5. 构造
  6. 放大 GraphqlApi 语法
  7. 字符串
  8. 添加功能选项
  9. 放大DynamoDb ModelData 源代码战略
  10. 放大 GraphqlApiCfn 资源
  11. 放大图像
  12. 放大 GraphqlApi 资源
  13. ApiKey 认证组合
  14. 授权模式
  15. 自动冲突解决战略
  16. 冲突解析<a name="冲突解析" id="@aws-amplify/graphql-a

放大图形ql API 构造

View on Construct Hub

此套件会 vend a L3 CDK Constructure 包裝了 Amplify GraphQL 变形器的行为. 这使得AppSync API能够快速开发并插入支持"放大图形QL指令". 关于GraphQL中计划模型的更多信息,请参见: 扩展开发者文件。 。 。 .

使用此构造的主要方式是用一个提供的 schema( 要么作为内置的图克字符串, 要么作为一个或多个) 引用它 appsync.SchemaFile(a) 物品,并附有授权配置。 AppSync API的授权有5个支持的方法,这些都由这个构造支持. 关于授权规则定义的更多信息,请参见: 授权文件注:目前至少需要一项授权规则,如果有多项授权,则需一项授权规则 defaultAuthorizationMode 必须在相片上指定。 指定的授权模式必须是在图克l schema中配置的这些模式的超级集.

实例

以 Cognitto 用户池为基础的所有者授权的简单待办事宜列表

在这个例子中,我们创建一个单一的模型,它将使用 user pool 认证以允许用户登录以创建和管理自己的 todos 私下.

我们创建了 Cdk App 和 Stack, 尽管您可能正在将它应用到自定义的堆栈中, 这纯粹是一个简洁的演示.

然后,我们通过电线导入一个已经部署的用户库(例如,创建和部署已超出范围).

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>'),
    },
  },
});

在这个例子中,我们创建了两个相关的模型,这些模型将在“Author”和“Admin”用户组的用户中登录 完全访问,使用 api 密钥请求的客户只能读取权限 .

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>'),
    },
  },
});

从文件导入 GraphQL Schema, 而不是内入

在这个例子中,我们从一个或多个本地文件导入了 schema 定义本身,而不是内置的图克字符串.

# 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 参考

构造

放大 GraphqlApi 语法

L3 构造,它比一个输入 Graphql Schema 引用 Amplify 变形器模式.

可用于快速定义支持完整 CRUD+ 的 Appis 清单和订阅、关系、, 认证,在数据上搜索,能够注入自定义业务逻辑和查询/调试操作,并连接到ML服务.

欲了解更多信息,请参看以下文件链接: 数据建模 - https://docs.amplify.aws/cli/graphql/data-modeling/ 页面存档备份,存于互联网档案馆 授权 - https://docs.amplify.aws/cli/graphql/ 授权-规则/ 自定义商业逻辑 - https://docs.amplify.aws/cli/graphql/custom-business-logic/ 页面存档备份,存于互联网档案馆 搜索 - https://docs.amplify.aws/cli/graphql/search-和-result-agglections/ 互联网档案馆的存檔,存档日期2013-12-02 ML服务 https://docs.amplify.aws/cli/graphql/连接到机器-学习-服务/

关于支持的自定义图ql指令的全部参考 - https://docs.amplify.aws/cli/graphql/directives-reference/ 页面存档备份,存于互联网档案馆

此构造的输出是对变压器生成的L2或L1资源进行映射,一般遵循访问模式

  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> - 然后,您可以对这些产生的复苏执行任何 CDK 动作.

初始化剂

import { AmplifyGraphqlApi } from '@aws-amplify/graphql-api-construct'

new AmplifyGraphqlApi(scope: Construct, id: string, props: AmplifyGraphqlApiProps)
名称类型说明
scopeconstructs.Construct在内部创建这种构思的范围.
idstring用于此 api 的 id .
propsAmplifyGraphqlApiProps用于配置生成的 api 属性.

scope需求
  • 类型 : 构造 构造

在内部创建这种构思的范围.


id需求
  • 类型 : 字符串

用于此 api 的 id .


props需求

用于配置生成的 api 属性.


方法

名称说明
toString返回此构造的字符串表达式 .
addDynamoDbDataSource在此API中添加一个新的 DynamoDB 数据源 .
addElasticsearchDataSource在此 API 中添加一个新的弹性搜索数据源 .
addEventBridgeDataSource在此 api 中添加 EventBridge 数据源 .
addFunction向 api 添加一个辅助函数 .
addHttpDataSource在此 API 中添加一个新的 http 数据源 .
addLambdaDataSource在此 API 中添加一个新的 Lambda 数据源 .
addNoneDataSource在此 API 中添加一个新的假数据源 .
addOpenSearchDataSourcedd 一个新的 OpenSearch 数据源到此 API .
addRdsDataSource在此 API 中添加一个新的 Rds 数据源 .
addResolver向 Api 添加解析器 .

toString
public toString(): string

返回此构造的字符串表达式 .

addDynamoDbDataSource
public addDynamoDbDataSource(id: string, table: ITable, options?: DataSourceOptions): DynamoDbDataSource

在此API中添加一个新的 DynamoDB 数据源 .

这是 L2 GraphqlApi 构造的代理方法 .

id需求
  • 类型 : 字符串

数据来源:ID.


table需求
  • 类型 : aws-cdk-lib.aws dynamodb. IT可读

DynamoDB 表格支持此数据源 .


options可选
  • 类型 : aws-cdk-lib.aws appsync. 数据源选项

此数据源的可选配置 .


addElasticsearchDataSource
public addElasticsearchDataSource(id: string, domain: IDomain, options?: DataSourceOptions): ElasticsearchDataSource

在此 API 中添加一个新的弹性搜索数据源 .

这是 L2 GraphqlApi 构造的代理方法 .

id需求
  • 类型 : 字符串

数据来源:ID.


domain需求
  • 类型 : aws-cdk-lib.aws elasticsearch.IDomain 互联网档案馆的存檔,存档日期2013-12-02

此数据源的弹性搜索域.


options可选
  • 类型 : aws-cdk-lib.aws appsync. 数据源选项

此数据源的可选配置 .


addEventBridgeDataSource
public addEventBridgeDataSource(id: string, eventBus: IEventBus, options?: DataSourceOptions): EventBridgeDataSource

在此 api 中添加 EventBridge 数据源 .

这是 L2 GraphqlApi 构造的代理方法 .

id需求
  • 类型 : 字符串

数据来源:ID.


eventBus需求
  • 类型 : aws-cdk-lib.aws events.IEventBus (英语)

事件 Bridge 事件 Bus 上的活动.


options可选
  • 类型 : aws-cdk-lib.aws appsync. 数据源选项

此数据源的可选配置 .


addFunction
public addFunction(id: string, props: AddFunctionProps): AppsyncFunction

向 api 添加一个辅助函数 .

id需求
  • 类型 : 字符串

函数为 id.


props需求

addHttpDataSource
public addHttpDataSource(id: string, endpoint: string, options?: HttpDataSourceOptions): HttpDataSource

在此 API 中添加一个新的 http 数据源 .

这是 L2 GraphqlApi 构造的代理方法 .

id需求
  • 类型 : 字符串

数据来源:ID.


endpoint需求
  • 类型 : 字符串

Http端点.


options可选
  • 类型 : aws-cdk-lib.aws appsync.HttpData 源代码选项

此数据源的可选配置 .


addLambdaDataSource
public addLambdaDataSource(id: string, lambdaFunction: IFunction, options?: DataSourceOptions): LambdaDataSource

在此 API 中添加一个新的 Lambda 数据源 .

这是 L2 GraphqlApi 构造的代理方法 .

id需求
  • 类型 : 字符串

数据来源:ID.


lambdaFunction需求
  • 类型 : aws-cdk-lib.aws lambda.function (英语)

Lambda函数调用此数据源进行交互.


options可选
  • 类型 : aws-cdk-lib.aws appsync. 数据源选项

此数据源的可选配置 .


addNoneDataSource
public addNoneDataSource(id: string, options?: DataSourceOptions): NoneDataSource

在此 API 中添加一个新的假数据源 .

这是 L2 GraphqlApi 构造的代理方法 . 用于管道解析器和不需要数据源的后端修改.

id需求
  • 类型 : 字符串

数据来源:ID.


options可选
  • 类型 : aws-cdk-lib.aws appsync. 数据源选项

此数据源的可选配置 .


addOpenSearchDataSource
public addOpenSearchDataSource(id: string, domain: IDomain, options?: DataSourceOptions): OpenSearchDataSource

dd 一个新的 OpenSearch 数据源到此 API .

这是 L2 GraphqlApi 构造的代理方法 .

id需求
  • 类型 : 字符串

数据来源:ID.


domain需求
  • 类型 : aws-cdk-lib.aws opensearch service.IDomain (英语)

此数据源的 OpenSearch 域名 .


options可选
  • 类型 : aws-cdk-lib.aws appsync. 数据源选项

此数据源的可选配置 .


addRdsDataSource
public addRdsDataSource(id: string, serverlessCluster: IServerlessCluster, secretStore: ISecret, databaseName?: string, options?: DataSourceOptions): RdsDataSource

在此 API 中添加一个新的 Rds 数据源 .

这是 L2 GraphqlApi 构造的代理方法 .

id需求
  • 类型 : 字符串

数据来源:ID.


serverlessCluster需求
  • 类型 : aws-cdk-lib.aws rds. IServerless Cluster (英语)

与此数据源交互的无服务器集群 .


secretStore需求
  • 类型 : aws-cdk-lib.aws secretsmanager.ISecret (英语)

包含无服务器集群用户名和密码的秘密商店 .


databaseName可选
  • 类型 : 字符串

在集群内使用的可选数据库名称.


options可选
  • 类型 : aws-cdk-lib.aws appsync. 数据源选项

此数据源的可选配置 .


addResolver
public addResolver(id: string, props: ExtendedResolverProps): Resolver

向 Api 添加解析器 .

这是 L2 GraphqlApi 构造的代理方法 .

id需求
  • 类型 : 字符串

解相者证相.


props需求
  • 类型 : aws-cdk-lib.aws appsync. 极限解决方案

解析器属性.


静态函数

名称说明
isConstruct检查是否 x 是一个构造.

isConstruct
import { AmplifyGraphqlApi } from '@aws-amplify/graphql-api-construct'

AmplifyGraphqlApi.isConstruct(x: any)

检查是否 x 是一个构造.

x需求
  • 类型 : 任意

任何物体.


属性

名称类型说明
nodeconstructs.Node树节.
apiIdstring生成了Api Id.
generatedFunctionSlotsMutationFunctionSlot | QueryFunctionSlot | SubscriptionFunctionSlot[]变换过程产生的解析器在侧面被坚持下来,以便利为检查和制作超载而绘制出一个清单.
graphqlUrlstring图克l URL 对于生成的API.
realtimeUrlstring实时 URL 对于生成的API.
resourcesAmplifyGraphqlApiResources生成了L1和L2 CDK资源.
apiKeystring生成 Api 密钥 .

node需求
public readonly node: Node;
  • 类型 : 构造 节点

树节.


apiId需求
public readonly apiId: string;
  • 类型 : 字符串

生成了Api Id.

可能是一个CDK Token.


generatedFunctionSlots需求
public readonly generatedFunctionSlots: MutationFunctionSlot | QueryFunctionSlot | SubscriptionFunctionSlot[];

变换过程产生的解析器在侧面被坚持下来,以便利为检查和制作超载而绘制出一个清单.


graphqlUrl需求
public readonly graphqlUrl: string;
  • 类型 : 字符串

图克l URL 对于生成的API.

可能是一个CDK Token.


realtimeUrl需求
public readonly realtimeUrl: string;
  • 类型 : 字符串

实时 URL 对于生成的API.

可能是一个CDK Token.


resources需求
public readonly resources: AmplifyGraphqlApiResources;

生成了L1和L2 CDK资源.


apiKey可选
public readonly apiKey: string;
  • 类型 : 字符串

生成 Api 密钥 .

可能是一个CDK Token.


字符串

添加功能选项

添加新appsync时输入类型属性 。 AppsyncFunction 到生成的API. 这相当于 Omit<appsync 。 AppsyncFunctionProps,"api" (英语:Appi).

初始化器

import { AddFunctionProps } from '@aws-amplify/graphql-api-construct'

const addFunctionProps: AddFunctionProps = { ... }

属性

名称类型说明
dataSourceaws-cdk-lib.aws_appsync.BaseDataSource与此 AppSync 函数相链接的数据源.
namestringappSync 函数的名称.
codeaws-cdk-lib.aws_appsync.Code函数代码 .
descriptionstring此 AppSync 函数的描述.
requestMappingTemplateaws-cdk-lib.aws_appsync.MappingTemplateappSync 函数的请求映射模板.
responseMappingTemplateaws-cdk-lib.aws_appsync.MappingTemplateappSync 函数的响应映射模板.
runtimeaws-cdk-lib.aws_appsync.FunctionRuntime函数运行时间 .

dataSource需求
public readonly dataSource: BaseDataSource;
  • 类型 : aws-cdk-lib.aws appsync.BaseData 源代码

与此 AppSync 函数相链接的数据源.


name需求
public readonly name: string;
  • 类型 : 字符串

appSync 函数的名称.


code可选
public readonly code: Code;
  • 类型 : aws-cdk-lib.aws appsync (英语). 代码
  • 默认 : 没有使用代码

函数代码 .


description可选
public readonly description: string;
  • 类型 : 字符串
  • 默认 : 无描述

此 AppSync 函数的描述.


requestMappingTemplate可选
public readonly requestMappingTemplate: MappingTemplate;
  • 类型 : aws-cdk-lib.aws appsync. 地图集
  • 默认 : 没有请求映射模板

appSync 函数的请求映射模板.


responseMappingTemplate可选
public readonly responseMappingTemplate: MappingTemplate;
  • 类型 : aws-cdk-lib.aws appsync. 地图集
  • 默认 : 无响应映射模板

appSync 函数的响应映射模板.


runtime可选
public readonly runtime: FunctionRuntime;
  • 类型 : aws-cdk-lib.aws appsync. 功能运行时
  • 默认 : 没有函数运行时间, 使用了 VTL 映射模板

函数运行时间 .


放大DynamoDb ModelData 源代码战略

使用自定义资源类型“ 海关: 复制 DynamoDB Table ” 到提供表 .

初始化器

import { AmplifyDynamoDbModelDataSourceStrategy } from '@aws-amplify/graphql-api-construct'

const amplifyDynamoDbModelDataSourceStrategy: AmplifyDynamoDbModelDataSourceStrategy = { ... }

属性

名称类型说明
dbTypestring没有描述.
provisionStrategystring没有描述.

dbType需求
public readonly dbType: string;
  • 类型 : 字符串

provisionStrategy需求
public readonly provisionStrategy: string;
  • 类型 : 字符串

放大 GraphqlApiCfn 资源

由 Api 生成的 L1 CDK 资源作为变换的一部分 .

这些可能储存在被嵌入的堆放下,但按类型排列.

初始化器

import { AmplifyGraphqlApiCfnResources } from '@aws-amplify/graphql-api-construct'

const amplifyGraphqlApiCfnResources: AmplifyGraphqlApiCfnResources = { ... }

属性

名称类型说明
additionalCfnResources{[ key: string ]: aws-cdk-lib.CfnResource}剩余的L1资源生成,由逻辑Id键入.
amplifyDynamoDbTables{[ key: string ]: AmplifyDynamoDbTableWrapper}Genered Amplify DynamosDb Table L1资源包装器,按型号名称键取.
cfnDataSources{[ key: string ]: aws-cdk-lib.aws_appsync.CfnDataSource}Generted AppSync Data Source L1资源,由逻辑Id键入.
cfnFunctionConfigurations{[ key: string ]: aws-cdk-lib.aws_appsync.CfnFunctionConfiguration}生成 AppSync 函数 L1 资源, 由 logicalId 键入.
cfnFunctions{[ key: string ]: aws-cdk-lib.aws_lambda.CfnFunction}生成 Lambda 函数 L1 资源,按函数名键 .
cfnGraphqlApiaws-cdk-lib.aws_appsync.CfnGraphQLApi生成 AppSync Api L1 资源.
cfnGraphqlSchemaaws-cdk-lib.aws_appsync.CfnGraphQLSchema生成 AppSync Schema L1 资源.
cfnResolvers{[ key: string ]: aws-cdk-lib.aws_appsync.CfnResolver}生成 AppSync 解析器 L1 资源,由 logicalId 键入.
cfnRoles{[ key: string ]: aws-cdk-lib.aws_iam.CfnRole}由逻辑Id键入的生成IAM角色L1资源.
cfnTables{[ key: string ]: aws-cdk-lib.aws_dynamodb.CfnTable}由逻辑Id键入的生成DynamoDB表 L1资源.
cfnApiKeyaws-cdk-lib.aws_appsync.CfnApiKey生成 AppSync 键 L1 资源 .

additionalCfnResources需求
public readonly additionalCfnResources: {[ key: string ]: CfnResource};
  • 类型 : {[键:字符串]:aws-cdk-lib.CfnResource} (简体中文)

剩余的L1资源生成,由逻辑Id键入.


amplifyDynamoDbTables需求
public readonly amplifyDynamoDbTables: {[ key: string ]: AmplifyDynamoDbTableWrapper};

Genered Amplify DynamosDb Table L1资源包装器,按型号名称键取.


cfnDataSources需求
public readonly cfnDataSources: {[ key: string ]: CfnDataSource};
  • 类型 : {[密钥:字符串]:aws-cdk-lib.aws appsync.CfnData source} (中文(简体) )

Generted AppSync Data Source L1资源,由逻辑Id键入.


cfnFunctionConfigurations需求
public readonly cfnFunctionConfigurations: {[ key: string ]: CfnFunctionConfiguration};
  • 类型 : {[键:字符串]:aws-cdk-lib.aws appsync.CfnFunfuncation} 页面存档备份,存于互联网档案馆

生成 AppSync 函数 L1 资源, 由 logicalId 键入.


cfnFunctions需求
public readonly cfnFunctions: {[ key: string ]: CfnFunction};
  • 类型 : {[键:字符串]:aws-cdk-lib.aws lambda.CfnFunction} (中文(简体) )

生成 Lambda 函数 L1 资源,按函数名键 .


cfnGraphqlApi需求
public readonly cfnGraphqlApi: CfnGraphQLApi;
  • 类型 : aws-cdk-lib.aws appsync. CfnGraphQLApi 互联网档案馆的存檔,存档日期2013-12-02

生成 AppSync Api L1 资源.


cfnGraphqlSchema需求
public readonly cfnGraphqlSchema: CfnGraphQLSchema;
  • 类型 : aws-cdk-lib.aws appsync. CfnGraphQLSchema (英语)

生成 AppSync Schema L1 资源.


cfnResolvers需求
public readonly cfnResolvers: {[ key: string ]: CfnResolver};
  • 类型 : {[键:字符串]:aws-cdk-lib.aws appsync.CfnResolver} (中文(简体) )

生成 AppSync 解析器 L1 资源,由 logicalId 键入.


cfnRoles需求
public readonly cfnRoles: {[ key: string ]: CfnRole};
  • 类型 : { [键:字符串]:aws-cdk-lib.aws iam.CfnRole}(英语:Aws-cdk-lib

由逻辑Id键入的生成IAM角色L1资源.


cfnTables需求
public readonly cfnTables: {[ key: string ]: CfnTable};
  • 类型 : {[键:字符串]:aws-cdk-lib.aws dynamodb.CfnTable}[克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克克

由逻辑Id键入的生成DynamoDB表 L1资源.


cfnApiKey可选
public readonly cfnApiKey: CfnApiKey;
  • 类型 : aws-cdk-lib.aws appsync. CfnApiKey (英语)

生成 AppSync 键 L1 资源 .


放大图像

Amplify GraphqlApi 构造的输入道具.

指定要转换成 Api 的输入和配置 转变过程.

初始化器

import { AmplifyGraphqlApiProps } from '@aws-amplify/graphql-api-construct'

const amplifyGraphqlApiProps: AmplifyGraphqlApiProps = { ... }

属性

名称类型说明
authorizationModesAuthorizationModesApi 需要认证模式 .
definitionIAmplifyGraphqlDefinition在全 Api 中转换的定义 .
apiNamestring用于 AppSync Api 的名称 .
conflictResolutionConflictResolution配置 Api 上的冲突解析, 启用 DataStore Api 功能需要它 .
dataStoreConfigurationDataStoreConfiguration在 Api 上配置 DataStore 冲突解决方案 .
disableOutputStorageboolean禁用存储构造输出 .
functionNameMap{[ key: string ]: aws-cdk-lib.aws_lambda.IFunction}定义中引用了Lambda函数.
functionSlotsMutationFunctionSlot | QueryFunctionSlot | SubscriptionFunctionSlot[]覆盖生成的解析器管道中的指定槽 .
outputStorageStrategyIBackendOutputStorageStrategy储存产出的战略.
predictionsBucketaws-cdk-lib.aws_s3.IBucket如果使用预测,则必须提供一桶,用于搜索资产.
stackMappings{[ key: string ]: string}StackMappings 在每个资源的基础上覆盖指定的嵌入式堆栈 .
transformerPluginsany[]提供一份附加自定义变压器清单,这些变压器被注入变压过程.
translationBehaviorPartialTranslationBehavior这取代了 Api 构造中的特征标记, 用于这些参数的通用信息 https://docs.amplify.aws/cli/参考资料/feature-flags/#graphQL Transfer。 。 。 .

authorizationModes需求
public readonly authorizationModes: AuthorizationModes;

Api 需要认证模式 .

此对象必须是 Api 定义中配置的认证提供者的超级集 . 更多信息,参见 https://docs.amplify.aws/cli/graphql/ 授权-规则/


definition需求
public readonly definition: IAmplifyGraphqlDefinition;

在全 Api 中转换的定义 .

可以通过 AmplifyGraphql 定义类构建 .


apiName可选
public readonly apiName: string;
  • 类型 : 字符串

用于 AppSync Api 的名称 .

默认: 构造 id.


conflictResolution可选
  • 折旧: 使用数据Store配置代替.
public readonly conflictResolution: ConflictResolution;

配置 Api 上的冲突解析, 启用 DataStore Api 功能需要它 .

更多信息,参见 https://docs.amplify.aws/lib/datastore/getting-started/q/platform/js/ 互联网档案馆的存檔,存档日期2014-12-21


dataStoreConfiguration可选
public readonly dataStoreConfiguration: DataStoreConfiguration;

在 Api 上配置 DataStore 冲突解决方案 .

要启用 DataStore Api 功能,需要冲突解决. 更多信息,参见 https://docs.amplify.aws/lib/datastore/getting-started/q/platform/js/ 互联网档案馆的存檔,存档日期2014-12-21


disableOutputStorage可选
public readonly disableOutputStorage: boolean;
  • 类型 : 布尔

禁用存储构造输出 .

在单个CDK合成中创建多个GraphQL API时,输出存储应当被禁用. 如果设置为真, 则会忽略策略 .


functionNameMap可选
public readonly functionNameMap: {[ key: string ]: IFunction};
  • 类型 : {[键:字符串]:aws-cdk-lib.aws lambda.IFunction} (简体中文)

定义中引用了Lambda函数.


functionSlots可选
public readonly functionSlots: MutationFunctionSlot | QueryFunctionSlot | SubscriptionFunctionSlot[];

覆盖生成的解析器管道中的指定槽 .

关于哪些空档的更多信息, 参考 https://docs.amplify.aws/cli/graphql/custom-business-logic/#override-amplify-生成-resolvers (中文(简体) )。 。 。 .


outputStorageStrategy可选
public readonly outputStorageStrategy: IBackendOutputStorageStrategy;

储存产出的战略.

如果不提供输出StorageStrategey,将使用默认策略.


predictionsBucket可选
public readonly predictionsBucket: IBucket;
  • 类型 : aws-cdk-lib.aws s3.IBucket (英语)

如果使用预测,则必须提供一桶,用于搜索资产.


stackMappings可选
public readonly stackMappings: {[ key: string ]: string};
  • 类型 : {[键:字符串]:字符串}

StackMappings 在每个资源的基础上覆盖指定的嵌入式堆栈 .

仅适用于解决者, 并采取形式 {: 除非遇到堆栈资源计数限制,否则不建议使用此参数 初始部署后 AppSync 解析器无法在嵌入式堆栈之间移动,需要从应用程序中移除, 然后从新的堆栈中重新添加.


transformerPlugins可选
public readonly transformerPlugins: any[];
  • 类型 : 任何[

提供一份附加自定义变压器清单,这些变压器被注入变压过程.

这些自定义变压器必须使用 aws-cdk-lib + 2.80.0 执行,以及


translationBehavior可选
public readonly translationBehavior: PartialTranslationBehavior;

这取代了 Api 构造中的特征标记, 用于这些参数的通用信息 https://docs.amplify.aws/cli/参考资料/feature-flags/#graphQL Transfer。 。 。 .


放大 GraphqlApi 资源

作为转型的一部分产生的Api资源.

这些可能储存在被嵌入的堆放下,但按类型排列.

初始化器

import { AmplifyGraphqlApiResources } from '@aws-amplify/graphql-api-construct'

const amplifyGraphqlApiResources: AmplifyGraphqlApiResources = { ... }

属性

名称类型说明
cfnResourcesAmplifyGraphqlApiCfnResourcesL1 Cfn Resources,因为当滴入了一定的抽象度是可取的.
functions{[ key: string ]: aws-cdk-lib.aws_lambda.IFunction}生成 Lambda 函数 L1 资源,按函数名键 .
graphqlApiaws-cdk-lib.aws_appsync.IGraphqlApiGenerated AppSync Api L2资源,包括了Schema.
nestedStacks{[ key: string ]: aws-cdk-lib.NestedStack}由 Api 构造生成的嵌入式堆栈 .
roles{[ key: string ]: aws-cdk-lib.aws_iam.IRole}由逻辑Id键入的生成IAM角色L2资源.
tables{[ key: string ]: aws-cdk-lib.aws_dynamodb.ITable}生成 DynamoDB 表 L2 资源,由逻辑Id 键入.

cfnResources需求
public readonly cfnResources: AmplifyGraphqlApiCfnResources;

L1 Cfn Resources,因为当滴入了一定的抽象度是可取的.


functions需求
public readonly functions: {[ key: string ]: IFunction};
  • 类型 : {[键:字符串]:aws-cdk-lib.aws lambda.IFunction} (简体中文)

生成 Lambda 函数 L1 资源,按函数名键 .


graphqlApi需求
public readonly graphqlApi: IGraphqlApi;
  • 类型 : aws-cdk-lib.aws appsync. IGraphqlApi (英语)

Generated AppSync Api L2资源,包括了Schema.


nestedStacks需求
public readonly nestedStacks: {[ key: string ]: NestedStack};
  • 类型 : {[键:字符串]:aws-cdk-lib. 内斯特德史密斯克

由 Api 构造生成的嵌入式堆栈 .


roles需求
public readonly roles: {[ key: string ]: IRole};
  • 类型 : { [键:字符串]:aws-cdk-lib.aws iam. 滚开

由逻辑Id键入的生成IAM角色L2资源.


tables需求
public readonly tables: {[ key: string ]: ITable};
  • 类型 : {[键:字符串]:aws-cdk-lib.aws dynamodb. (表单)

生成 DynamoDB 表 L2 资源,由逻辑Id 键入.


ApiKey 认证组合

Graphql Api 上的 Api 密钥配置 .

初始化器

import { ApiKeyAuthorizationConfig } from '@aws-amplify/graphql-api-construct'

const apiKeyAuthorizationConfig: ApiKeyAuthorizationConfig = { ... }

属性

名称类型说明
expiresaws-cdk-lib.Duration从Cloudform部署到到期的时间.
descriptionstring附加在 Api 上的 Api 密钥的可选描述 .

expires需求
public readonly expires: Duration;
  • 类型 : aws-cdk-lib (英语). 会期

从Cloudform部署到到期的时间.


description可选
public readonly description: string;
  • 类型 : 字符串

附加在 Api 上的 Api 密钥的可选描述 .


授权模式

授权模式适用于 Api .

至少必须提供一种模式,如果提供一种以上的默认认证 必须指定模式. 关于Amplify Api auth的更多信息,请参见 https://docs.amplify.aws/cli/graphql/授权-规则/#授权-战略

初始化器

import { AuthorizationModes } from '@aws-amplify/graphql-api-construct'

const authorizationModes: AuthorizationModes = { ... }

属性

名称类型说明
adminRolesaws-cdk-lib.aws_iam.IRole[]被赋予全R/W访问Api权限的角色列表.
apiKeyConfigApiKeyAuthorizationConfigAppSync Api 密钥配置, 如果在 Api 中指定了“ apiKey” 认证提供者, 则需要 .
defaultAuthorizationModestring默认向 Api 提供的认证模式, 如果指定了多个配置类型, 则需要 .
iamConfigIAMAuthorizationConfigIAM Auth 配置, 如果在 Api 中指定了“ iam” 认证提供者则需要 .
lambdaConfigLambdaAuthorizationConfigLambda 配置, 如果在 Api 中指定了“ 函数” 认证提供者, 则需要 .
oidcConfigOIDCAuthorizationConfig如果在 Api 中指定了“ oidc” 认证提供者, 则需要 Cognitto OIDC 配置 .
userPoolConfigUserPoolAuthorizationConfigCognitto 用户Pool 配置, 如果在 Api 中指定了“ 用户Pools” 认证提供者, 则需要 .

adminRoles可选
  • 折旧: ,取而代之的是Iam Config.allow Listed Roles.
public readonly adminRoles: IRole[];
  • 类型 : aws-cdk-lib.aws iam. IRole [1] (英语)

被赋予全R/W访问Api权限的角色列表.


apiKeyConfig可选
public readonly apiKeyConfig: ApiKeyAuthorizationConfig;

AppSync Api 密钥配置, 如果在 Api 中指定了“ apiKey” 认证提供者, 则需要 .

用于“ 公用” 认证策略 .


defaultAuthorizationMode可选
public readonly defaultAuthorizationMode: string;
  • 类型 : 字符串

默认向 Api 提供的认证模式, 如果指定了多个配置类型, 则需要 .


iamConfig可选
public readonly iamConfig: IAMAuthorizationConfig;

IAM Auth 配置, 如果在 Api 中指定了“ iam” 认证提供者则需要 .

适用于“ 公共” 和“ 私人” 认证策略 .


lambdaConfig可选
public readonly lambdaConfig: LambdaAuthorizationConfig;

Lambda 配置, 如果在 Api 中指定了“ 函数” 认证提供者, 则需要 .

适用于“ 海关” 认证策略 .


oidcConfig可选
public readonly oidcConfig: OIDCAuthorizationConfig;

如果在 Api 中指定了“ oidc” 认证提供者, 则需要 Cognitto OIDC 配置 .

适用于“ 所有人 ” 、 “ 私人 ” 和 “ 团体 ” 认证策略 .


userPoolConfig可选
public readonly userPoolConfig: UserPoolAuthorizationConfig;

Cognitto 用户Pool 配置, 如果在 Api 中指定了“ 用户Pools” 认证提供者, 则需要 .

适用于“ 所有人 ” 、 “ 私人 ” 和 “ 团体 ” 认证策略 .


自动冲突解决战略

启用项目上的乐观货币 .

初始化器

import { AutomergeConflictResolutionStrategy } from '@aws-amplify/graphql-api-construct'

const automergeConflictResolutionStrategy: AutomergeConflictResolutionStrategy = { ... }

属性

名称类型说明
detectionTypestring用于解决冲突的冲突检测类型.
handlerTypestring这种解决冲突的战略是自动出现的.

detectionType需求
public readonly detectionType: string;
  • 类型 : 字符串

用于解决冲突的冲突检测类型.


handlerType需求
public readonly handlerType: string;
  • 类型 : 字符串

这种解决冲突的战略是自动出现的.

更多信息,参见 https://docs.aws.amazon.com/appsync/latest/devguide/冲突-探测-和-sync.html#冲突-探测-和-解析


冲突解析<a name="冲突解析" id="@aws-amplify/graphql-a

版本与发布记录

@aws-amplify/graphql-api-construct 共发布 162 个版本,首次发布于 2023/09/29;过去 12 个月发布了 10 个版本。

版本发布日期距今
1.22.4latest2026/11/071 天前
1.22.32026/10/011 个月前
1.22.22026/07/143 个月前
1.22.12026/07/143 个月前
1.22.02026/07/143 个月前
1.21.42026/07/014 个月前

其他发布通道:rds-3 → 1.1.2-rds-3.0,amplify-table-preview → 1.2.0-amplify-table-preview.1,rds-4 → 1.1.5-rds-4.0,construct-publish-test → 1.4.0-construct-publish-test.0,nov-14-cut → 1.4.0-nov-14-cut.0,nov-14-cut-1 → 1.4.0-nov-14-cut-1.0。

关于 @aws-amplify/graphql-api-construct 的常见问题

@aws-amplify/graphql-api-construct 是什么?

AppSync GraphQL Api Construction 使用放大GraphQL变形器.

如何安装 @aws-amplify/graphql-api-construct?

在项目目录运行 npm install @aws-amplify/graphql-api-construct,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:constructs(^10.5.0)、aws-cdk-lib(^2.224.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aws-amplify/graphql-api-construct 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aws-amplify/graphql-api-construct 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@aws-amplify/graphql-api-construct 可以商用吗?

@aws-amplify/graphql-api-construct 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aws-amplify/graphql-api-construct 的下载量有多少?

根据 npm 官方下载统计,@aws-amplify/graphql-api-construct 在 2026/10/07 – 2026/11/05 这 30 天内被下载 665,065 次,日均约 22,169 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aws-amplify/graphql-api-construct 还在维护吗?

最新版本 1.22.4 发布于 2026/11/07(1 天前);至今共发布 162 个版本,其中过去 12 个月发布了 10 个;首次发布于 2023/09/29。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。