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 运行的原因。
我正在 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 运行的原因。