Можно ли вставить более 25 элементов в DynamoDB с помощью BatchPutItem (BatchWriteItem) с помощью AppSync VTL?

Просто для некоторого контекста: в настоящее время используется 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 элементов?


person Jose A    schedule 18.11.2019    source источник
comment
Это зависит от единиц емкости записи (WCU) вашего DDB и размера полезной нагрузки.   -  person Joseph D.    schedule 18.11.2019
comment
@JosephD. Является ли это возможным? В документации прямо говорится: один вызов BatchWriteItem может записать до 16 МБ данных, что может содержать до 25 запросов на размещение или удаление. У меня также есть DynamoDB для автоматической подготовки WCU и RCU   -  person Jose A    schedule 18.11.2019
comment
Нет. См. Ограничения API.   -  person Joseph D.    schedule 18.11.2019


Ответы (1)


Можете ли вы связаться с командой DDB, чтобы увеличить лимит услуг для вас?

person Sunny    schedule 18.11.2019
comment
Вы имеете в виду Amazon Web Services AWS? - person Jose A; 19.11.2019
comment
Да Служба поддержки клиентов AWS. - person Sunny; 19.11.2019
comment
Извините, что больше не вернусь! В итоге я развернул его через лямбда-преобразователь! Поэтому я никогда не обращался в AWS. - person Jose A; 20.04.2020