Пост, на который я ссылался, уже содержал достаточно информации для решения проблемы.
Я упрямо увлекся использованием мутации, потому что у меня не было достаточно знаний о GraphQL, чтобы отличить его от запроса.
Для решения проблемы достаточно отказаться от мутации и использовать запрос.
Итак, у меня есть
type Object {
field1: String!
field2: String
}
и
type AuthObject {
field1: String!
field2: String
data: Object
}
мой запрос похож на
type Query {
createObject (
field1: String!
field2: String
) : AuthObject
}
и лямбда-функция аутентификатора, которой передаются все аргументы и токен аутентификации. Задача этой функции - проверить токен и, если он действителен, вернуть все аргументы. В шаблоне выходного отображения, если лямбда не смогла аутентифицировать, GraphQL выдает сообщение unauthenticated
, в противном случае возвращает аргументы.
Затем я прикрепил эти резольверы:
createObject => a resolver that calls the lambda and maps input and output
AuthObject.data:Object => a dynamodb resolver that calls PutItem using `$ctx.source` to retrieve the arguments.
На самом деле это то же самое, что и сообщение о взломе , я просто использовал PostItem вместо GetItem.