AppSync BatchDeleteItem 未正确执行

AppSync BatchDeleteItem not executes properly

我正在使用 AppSync 开发 React Native 应用程序,以下是我对问题的架构:

type JoineeDeletedConnection {
    items: [Joinee]
    nextToken: String
}
type Mutation {
    deleteJoinee(ids: [ID!]): [Joinee]
}

在 'request mapping template' 到 deleteJoinee 的解析器中,我有以下内容(遵循 https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-dynamodb-batch.html 的教程):

#set($ids = [])
#foreach($id in ${ctx.args.ids})
    #set($map = {})
    $util.qr($map.put("id", $util.dynamodb.toString($id)))
    $util.qr($ids.add($map))
#end

{
    "version" : "2018-05-29",
    "operation" : "BatchDeleteItem",
    "tables" : {
        "JoineesTable": $util.toJson($ids)
    }
}

..并在 'response mapping template' 到解析器,

$util.toJson($ctx.result.data.JoineesTable)

问题是,当我 运行 查询时,我得到的结果是空的,也没有任何内容被删除到数据库中:

// calling the query
mutation DeleteJoinee {
  deleteJoinee(ids: ["xxxx", "xxxx"])
  {
      id
  }
}

// returns
{
  "data": {
    "deleteJoinee": [
      null
    ]
  }
}

我终于解开了这个谜题,多亏了提到的答案给我指明了方向。

尽管我注意到 JoineesTable 确实已将 entity/role 信任到 IAM 'Roles' 部分,但由于某种原因它无法正常工作。进一步研究,我注意到现有政策默认遵循 actions

"Action": [
    "dynamodb:DeleteItem",
    "dynamodb:GetItem",
    "dynamodb:PutItem",
    "dynamodb:Query",
    "dynamodb:Scan",
    "dynamodb:UpdateItem"
]

一旦我将以下两个 actions 添加到列表中,事情就开始起作用了:

"dynamodb:BatchWriteItem",
"dynamodb:BatchGetItem"

感谢@Vasileios Lekakis 和@Ionut Trestian 完成此 appSync 任务)