是否可以在没有映射模板的情况下使用 AppSync 和 GraphQL?
Is it possible to use AppSync and GraphQL without mapping templates?
是否可以在没有映射模板的情况下使用 AppSync 和 GraphQL?
因为 Serverless 有 200 个资源的限制,每个映射模板都是新资源。
谢谢!
不,您必须使用映射模板。您对 200 资源限制的看法是正确的,但该限制来自无服务器在后台使用的 cloudformation。通过将不同类型的资源分成不同的堆栈(通过插件),可以在一定程度上减轻此限制。
问题是我使用的 serverless-appsync-plugin 不允许我在多个无服务器项目中使用相同的 GraphQL 实例。
我删除了插件并在不同的项目中引用了 API,如下所示:
CreateUserDataSource:
Type: AWS::AppSync::DataSource
Properties:
ApiId: { 'Fn::ImportValue': 'graphQLApiId-${self:provider.stage}' }
Name: CreateUser
Type: AWS_LAMBDA
LambdaConfig:
LambdaFunctionArn: {'Fn::GetAtt': [CreateUserLambdaFunction, Arn]}
ServiceRoleArn: { 'Fn::ImportValue': 'appSyncServiceRole-${self:provider.stage}' }
CreateUserResolver:
Type: AWS::AppSync::Resolver
Properties:
ApiId: { 'Fn::ImportValue': 'graphQLApiId-${self:provider.stage}' }
DataSourceName: CreateUser
FieldName: createUser
TypeName: Mutation
RequestMappingTemplate: "{
\"version\": \"2017-02-28\",
\"operation\": \"Invoke\",
\"payload\": {
\"field\": \"createUser\",
\"arguments\": $utils.toJson($context.arguments),
\"handle\": $utils.toJson($context.identity)
}
}"
ResponseMappingTemplate: $util.toJson($context.result)
是否可以在没有映射模板的情况下使用 AppSync 和 GraphQL? 因为 Serverless 有 200 个资源的限制,每个映射模板都是新资源。
谢谢!
不,您必须使用映射模板。您对 200 资源限制的看法是正确的,但该限制来自无服务器在后台使用的 cloudformation。通过将不同类型的资源分成不同的堆栈(通过插件),可以在一定程度上减轻此限制。
问题是我使用的 serverless-appsync-plugin 不允许我在多个无服务器项目中使用相同的 GraphQL 实例。
我删除了插件并在不同的项目中引用了 API,如下所示:
CreateUserDataSource:
Type: AWS::AppSync::DataSource
Properties:
ApiId: { 'Fn::ImportValue': 'graphQLApiId-${self:provider.stage}' }
Name: CreateUser
Type: AWS_LAMBDA
LambdaConfig:
LambdaFunctionArn: {'Fn::GetAtt': [CreateUserLambdaFunction, Arn]}
ServiceRoleArn: { 'Fn::ImportValue': 'appSyncServiceRole-${self:provider.stage}' }
CreateUserResolver:
Type: AWS::AppSync::Resolver
Properties:
ApiId: { 'Fn::ImportValue': 'graphQLApiId-${self:provider.stage}' }
DataSourceName: CreateUser
FieldName: createUser
TypeName: Mutation
RequestMappingTemplate: "{
\"version\": \"2017-02-28\",
\"operation\": \"Invoke\",
\"payload\": {
\"field\": \"createUser\",
\"arguments\": $utils.toJson($context.arguments),
\"handle\": $utils.toJson($context.identity)
}
}"
ResponseMappingTemplate: $util.toJson($context.result)