Мне не удается выполнить пакетную синхронизацию приложения. Это мои следующие резолверы.
Шаблон сопоставления запроса.
#set($ids = [])
#foreach($id in ${ctx.args.topicIds})
#set($map = {})
$util.qr($map.put("topicId", $util.dynamodb.toString($id)))
$util.qr($ids.add($map))
#end
{
"version" : "2018-05-29",
"operation" : "BatchGetItem",
"tables" : {
"Topic": {
"keys": $util.toJson($ids),
"consistentRead": true
}
}
}
Шаблон сопоставления ответов
$util.toJson($ctx.result.data.Topic)
Вот как я даю запрос
query listStudentBookmarkedTopics {
listStudentBookmarkedTopics(
topicIds: [ "503", "501" ]
) {
topicId
}
}
Но я получаю нулевые результаты
{
"data": {
"listStudentBookmarkedTopics": [
null,
null
]
}
}
Так выглядит моя таблица
Это журналы облачных часов





как выглядит ваша таблица DynamoDB? Topic - это имя таблицы? Какой ключ первичного раздела определен на нем? Мне нужны дополнительные сведения, чтобы помочь вам в этом.
В качестве альтернативы, пожалуйста, включите журналы CloudWatch для вашего API (вы сможете сделать это через Консоль -> на странице настроек вашего API). Попробуйте запустить запрос еще раз и посмотрите, какие разрешенные шаблоны запросов и ответов для этого пути. Это должно предоставить вам дополнительную информацию.
Спасибо, не могли бы вы также опубликовать разрешенные записи журнала сопоставления запросов / ответов из журналов CloudWatch для пути [query, listStudentBookmarkedTopics]?
Я добавил журналы облачных наблюдений. Я получаю недостаточную ошибку для ресурсов или что-то в этом роде.
Похоже, преобразователь не привязан к полю запроса. Вы можете это проверить? Также подтвердите, выбран ли ALL в настройках журнала.
У меня была похожая проблема. Исправлено, применив соответствующие разрешения. Если вы создали новую роль IAM, она по умолчанию не предоставляет разрешения batch*. Из документов AWS:
Like other resolvers, you need to create a data source in AWS AppSync and either create a role or use an existing one. Because batch operations require different permissions on DynamoDB tables, you need to grant the configured role permissions for read or write actions:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:BatchWriteItem"
],
"Effect": "Allow",
"Resource": [
"arn:aws:dynamodb:region:account:table/TABLENAME",
"arn:aws:dynamodb:region:account:table/TABLENAME/*"
]
}
]
}
Вы можете прикрепить новую политику или просто добавить "dynamodb:BatchGetItem" к существующей на панели управления IAM.
`
Я включил таблицу. Я надеюсь, это поможет.