Link AppSync 中的多个突变

Link mulitple mutations in AppSync

我正在 AppSync 中做一个应用程序,我正在尝试使用 Cloud Formation 创建一个模式,其中一个突变链接到一个解析器,第二个突变链接到第二个解析器。但它总是给我一个错误,说我不能在一个请求中附加两个突变。

如果我尝试在控制台中执行,我可以在两个解析器中附加两个突变。

有人知道如何在 Cloud Formation 中配置所有内容吗?

[编辑] 我将这个解析器添加到模板中

AppSyncMutationResolverOne:
   Type: "AWS::AppSync::Resolver"
   DependsOn: AppSyncSchema
   Properties:
     ApiId: !Ref GraphApiId
     TypeName: Mutation
     FieldName: exampleOne
     DataSourceName: !GetAtt DataSourceOne.example
     RequestMappingTemplate: !Ref RequestMappingTemplate
     ResponseMappingTemplate: !Ref ResponseRequestMappingTemplate

但是当我尝试添加第二个 Mutation Resolver 时,它与第一个非常相似

 AppSyncMutationResolverTwo:
    Type: "AWS::AppSync::Resolver"
    DependsOn: AppSyncSchema
    Properties:
      ApiId: !Ref GraphApiId
      TypeName: Mutation
      FieldName: exampleTwo
      DataSourceName: !GetAtt DataSourceTwo.example
      RequestMappingTemplate: !Ref RequestMappingTemplate
      ResponseMappingTemplate: !Ref ResponseRequestMappingTemplate

它 returns 给我一个错误,说我不能将两个变异解析器添加到同一个 API

这是用于两个突变的我的 RequestMappingTemplate:

    {
       "version": "2017-02-28",
       "operation": "Invoke",
       "payload": { 
             "arguments": $utils.toJson($context.arguments)
          }
    }

你的 Cloudformation 模板对我来说似乎很好,但是,根据你使用的 DataSource 类型,你也在 RequestMappingTemplate 上定义了字段的名称(即 Lambda 数据源)正如所解释的 here,像这样:

{
    "version": "2018-05-29",
    "operation": "Invoke",
    "payload": {
        "field": "getPost",
        "postId": "1",
    }
}

因此,基于此,您似乎对两个突变解析器使用了相同的 RequestMappingTemplate。检查两个请求映射是否对应于每个解析器的 Cloudformation 模板上定义的相同 FieldName。这可能是它在控制台上运行但不能通过 Cloudformation 运行的原因。