Просто для некоторого контекста: в настоящее время используется AppSync + React + Apollo, и я пытаюсь отправить 38-40 элементов для обновления через AppSync Apache VTL.
Я знал, что DynamoDB ограничивает количество вставляемых элементов до 25 на запрос, но я думал, что AppSync не имеет этих ограничений. Думаю, я ошибаюсь, потому что мой запрос не выполняется, когда я отправляю более 25 элементов (26+).
Вот мой сценарий VTL:
#set($isTenantValid = false)
#foreach($tenant in $context.identity.claims["https://app.schon.io/tenants"])
#if($tenant == $ctx.args.tenantId)
#set($isTenantValid = true)
#end
#end
## Needs to verify if the employee has permission to insert students.
#if(!$isTenantValid)
$utils.unauthorized()
#end
#set($itemsToPut=[])
#set($pk="tenant:${ctx.args.tenantId}")
#set($userSK="tenant:${ctx.args.tenantId}:school-year:${ctx.args.schoolYear}")
#foreach($student in $ctx.args.students)
#set($studentId = "${util.autoId()}")
#set($sk="school-year:${ctx.args.schoolYear}:student:${studentId}")
#set($userPK="student:${studentId}")
#set($item = {
"pk": $pk,
"sk": $sk,
"id": $studentId,
"userPK": $userPK,
"userSK": $userSK,
"name": {
"firstName" : $student.name.firstName,
"lastName" : $student.name.lastName,
"fullName": "${student.name.firstName} ${student.name.lastName}"
},
"schoolYear": $ctx.args.schoolYear,
"createdAt": ${util.time.nowEpochSeconds()},
"updatedAt": ${util.time.nowEpochSeconds()},
"gender": $student.gender,
"retired": $student.retired
})
#if("${student.diseases}" != "")
$util.qr($item.add("diseases", $student.diseases))
#end
#if("${student.email}" != "")
$util.qr($item.add("email", $student.email))
#end
#if("${student.birthdate}" != "")
$util.qr($item.add("birthdate", $student.birthdate))
#end
$util.qr($itemsToPut.add($util.dynamodb.toMapValues($item)))
#end
{
"version" : "2018-05-29",
"operation" : "BatchPutItem",
"tables" : {
"SchonDB": $utils.toJson($itemsToPut)
}
}
В этом случае мне нужно будет выгрузить его в Lambda и выполнить логику отправки и повтора для 25 элементов?