Проблема API TransactWriteItems выдает приведенную ниже ошибку для группы обновлений, число которой превышает 10, даже если ожидается, что API будет работать до 25.
Согласно AWS TransactWriteItems API Документация:
TransactWriteItems - это синхронная операция записи, которая группирует до 25 запросов действий. Эти действия могут быть нацелены на элементы в разных таблицах, но не на разные AWS учетные записи или регионы, и никакие два действия не могут быть нацелены на один и тот же элемент. Например, вы не можете одновременно и ConditionCheck, и Update один и тот же элемент. Совокупный размер элементов в транзакции не может превышать 4 МБ.
Версия AWS SDK
"aws -sdk ":" ^ 2.624.0 "
Ошибка
message: 'Member must have length less than or equal to 10',
code: 'ValidationException',
time: 2020-02-24T05:07:02.795Z,
requestId: 'a3952ab2-593e-4164-ad2f-3a000e599cia',
statusCode: 400,
retryable: false,
retryDelay: 48.36097368479314 }
'ValidationException*: Member must have length less than or equal to 10 at Request.extractError (node_modules/aws-sdk/lib/protocol/json.js:51:27)\n at Request.callListeners (node_modules/aws-sdk/lib/sequential_executor.js:106:20)\n at Request.emit (node_modules/aws-sdk/lib/sequential_executor.js:78:10)\n at Request.emit (node_modules/aws-sdk/lib/request.js:683:14)\n at Request.transition (node_modules/aws-sdk/lib/request.js:22:10)\n at AcceptorStateMachine.runTo (node_modules/aws-sdk/lib/state_machine.js:14:12)\n at node_modules/aws-sdk/lib/state_machine.js:26:10\n at Request.<anonymous> (node_modules/aws-sdk/lib/request.js:38:9)\n at Request.<anonymous> (node_modules/aws-sdk/lib/request.js:685:12)\n at Request.callListeners (node_modules/aws-sdk/lib/sequential_executor.js:116:18)'
Код:
var AWS = require('aws-sdk');
var dynamodb = new AWS.DynamoDB({
'region': 'eu-west-1'
});
// Throws the error if the TransactItems array is > 10
var params = {
TransactItems: [{
Update: {
Key: { "id": { "S": "ABC-XYABV2-2019" }},
ExpressionAttributeNames: { "#s": "s" },
ExpressionAttributeValues: { ":s": { "S": "OHIO" } },
UpdateExpression: "SET #s = :s",
TableName: "test-order-dev"
}
},
...
....
.....
{
Update: {
Key: { "id": { "S": "CDE-ZUABV2-2020" }},
ExpressionAttributeNames: { "#s": "s" },
ExpressionAttributeValues: { ":s": { "S": "OHIO" } },
UpdateExpression: "SET #s = :s",
TableName: "test-order-dev"
}
}
]
};
dynamodb.transactWriteItems(params, function (err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
Я только что нашел одну AWS ссылку на форум , которая описывает ту же проблему и подсказки для использования последней версии SDK. Я на последней версии SDK, интересно, в чем может быть проблема. Поделитесь своими мыслями или решением, если оно существует: -)