问题描述
我正在 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
它返回一个错误,说我不能向同一个 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 运行的原因。