У меня есть преобразователь конвейера AppSyn c. Первая функция запрашивает у базы данных ElasticSearch ключи DynamoDB. Вторая функция запрашивает DynamoDB с помощью предоставленных ключей. Все это работало хорошо, пока я не столкнулся с лимитом 1 МБ для AppSyn c. Поскольку большая часть данных находится в нескольких атрибутах / столбцах, которые мне не нужны, я хочу ограничить результаты только теми атрибутами, которые мне нужны.
Я попытался добавить AttributesToGet и ProjectionExpression ( отсюда ), но оба выдавали такие ошибки, как:
{
"data": {
"getItems": null
},
"errors": [
{
"path": [
"getItems"
],
"data": null,
"errorType": "MappingTemplate",
"errorInfo": null,
"locations": [
{
"line": 2,
"column": 3,
"sourceName": null
}
],
"message": "Unsupported element '$[tables][dev-table-name][projectionExpression]'."
}
]
}
Мой шаблон сопоставления запроса функции DynamoDB выглядит следующим образом (возвращает результаты, если данные меньше 1 МБ):
#set($ids = [])
#foreach($pResult in ${ctx.prev.result})
#set($map = {})
$util.qr($map.put("id", $util.dynamodb.toString($pResult.id)))
$util.qr($map.put("ouId", $util.dynamodb.toString($pResult.ouId)))
$util.qr($ids.add($map))
#end
{
"version" : "2018-05-29",
"operation" : "BatchGetItem",
"tables" : {
"dev-table-name": {
"keys": $util.toJson($ids),
"consistentRead": false
}
}
}