【问题标题】:Is it possible to use AppSync and GraphQL without mapping templates?是否可以在没有映射模板的情况下使用 AppSync 和 GraphQL?
【发布时间】:2020-10-01 00:43:54
【问题描述】:

是否可以在没有映射模板的情况下使用 AppSync 和 GraphQL? 因为 Serverless 有 200 个资源的限制,每个映射模板都是新资源。

谢谢!

【问题讨论】:

  • 是的,当然你可以使用其他映射模板的东西,比如管道解析器或单元解析器
  • 但是这些也会给 serverless 添加资源,不是吗?

标签: graphql aws-appsync aws-serverless


【解决方案1】:

不,您必须使用映射模板。您对 200 个资源限制是正确的,但该限制来自无服务器在后台使用的 cloudformation。通过将不同类型的资源分成不同的堆栈(通过插件),可以在一定程度上缓解此限制。

【讨论】:

    【解决方案2】:

    问题是我使用的 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)
    

    【讨论】:

      猜你喜欢
      • 2016-12-17
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-16
      • 2020-01-22
      • 1970-01-01
      相关资源
      最近更新 更多