Aws appsync:可以使用 dynamodb 解析器在一个请求中执行两个 putitems 吗?
Aws appsync: possible to do two putitems in one request with a dynamodb resolver?
在 aws appsync 中,我想进行一次调用 (start_game(phrase:”foo”)),这将写入两个单独的 dynamodb 表(gams 和 turns)。我确定我可以使用 lambda 解析器来做到这一点,但很想避免额外的复杂性。
有没有办法在单个 dynamodb 突变中执行两个 putitem(到两个不同的表)?
截至目前,实现此目的的唯一方法是使用 Lambda 解析器。
话虽如此,我们已经从几个客户那里听到了支持此用例的请求,并将其视为支持的 +1!
现已通过批处理解析器功能将其添加到 AWS AppSync。您可以在此处查看教程:https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-dynamodb-batch.html
对于这个特定问题,您可以使用 BatchPutItem
将多个项目写入一个或多个 table。您可以通过解析器中的 tables
键来执行此操作。对于一个 table 它看起来像这样:
#set($postsdata = [])
#foreach($item in ${ctx.args.posts})
$util.qr($postsdata.add($util.dynamodb.toMapValues($item)))
#end
{
"version" : "2018-05-29",
"operation" : "BatchPutItem",
"tables" : {
"Posts": $utils.toJson($postsdata)
}
}
两个 table 看起来很相似:
## Convert tempReadings arguments to DynamoDB objects
#set($tempReadings = [])
#foreach($reading in ${ctx.args.tempReadings})
$util.qr($tempReadings.add($util.dynamodb.toMapValues($reading)))
#end
## Convert locReadings arguments to DynamoDB objects
#set($locReadings = [])
#foreach($reading in ${ctx.args.locReadings})
$util.qr($locReadings.add($util.dynamodb.toMapValues($reading)))
#end
{
"version" : "2018-05-29",
"operation" : "BatchPutItem",
"tables" : {
"locationReadings": $utils.toJson($locReadings),
"temperatureReadings": $utils.toJson($tempReadings)
}
}
在 aws appsync 中,我想进行一次调用 (start_game(phrase:”foo”)),这将写入两个单独的 dynamodb 表(gams 和 turns)。我确定我可以使用 lambda 解析器来做到这一点,但很想避免额外的复杂性。
有没有办法在单个 dynamodb 突变中执行两个 putitem(到两个不同的表)?
截至目前,实现此目的的唯一方法是使用 Lambda 解析器。
话虽如此,我们已经从几个客户那里听到了支持此用例的请求,并将其视为支持的 +1!
现已通过批处理解析器功能将其添加到 AWS AppSync。您可以在此处查看教程:https://docs.aws.amazon.com/appsync/latest/devguide/tutorial-dynamodb-batch.html
对于这个特定问题,您可以使用 BatchPutItem
将多个项目写入一个或多个 table。您可以通过解析器中的 tables
键来执行此操作。对于一个 table 它看起来像这样:
#set($postsdata = [])
#foreach($item in ${ctx.args.posts})
$util.qr($postsdata.add($util.dynamodb.toMapValues($item)))
#end
{
"version" : "2018-05-29",
"operation" : "BatchPutItem",
"tables" : {
"Posts": $utils.toJson($postsdata)
}
}
两个 table 看起来很相似:
## Convert tempReadings arguments to DynamoDB objects
#set($tempReadings = [])
#foreach($reading in ${ctx.args.tempReadings})
$util.qr($tempReadings.add($util.dynamodb.toMapValues($reading)))
#end
## Convert locReadings arguments to DynamoDB objects
#set($locReadings = [])
#foreach($reading in ${ctx.args.locReadings})
$util.qr($locReadings.add($util.dynamodb.toMapValues($reading)))
#end
{
"version" : "2018-05-29",
"operation" : "BatchPutItem",
"tables" : {
"locationReadings": $utils.toJson($locReadings),
"temperatureReadings": $utils.toJson($tempReadings)
}
}