是否可以在没有映射模板的情况下使用 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)