Я пытаюсь получить доступ к моим журналам, хранящимся на logz.io, используя api-search, который они мне предлагают.
На самом деле, я могу успешно получить доступ с помощью команды curl, как показано:
curl -X POST 'https://api.logz.io/v1/search'
--header "X-API-TOKEN: API-TOKEN-GENERATED"
--header "Content-Type: application/json"
-d '{"query": {"term": {"_id": {"value": "Log Id Here"}}}}',
точно так же как https://github.com/logzio/public-api/tree/master/search сказал.
Однако, когда я использую API-интерфейс AWS AppSync, использую источник данных HttpResolver с параметрами
имя: HttpDataSourceTest, тип: HTTP и конечная точка: https://api.logz.io/v1/search, Я определил свой schema.grapqhl, преобразователи шаблона запроса и ответа:
schema.grapgql
type Query {
GetLog(id: String): Log
}
Запрос шаблона разрешения:
{
"version": "2018-05-29",
"method": "POST",
"params": {
"headers": {
"Content-Type: application/json",
"X-API-TOKEN":"API-TOKEN-GENERATED"
},
"body":{
"query": {
"term": {
"_id": {
"value": "$context.arguments.id"
}
}
}
}
},
"resourcePath": "/"
}
Резолвер шаблона ответа:
$utils.toJson({"TimeStamp":"$ctx.result.statusCode $ctx.result.body" })
После нескольких попыток и неудач я все упростил, просто запросите поле TimeStamp в запросе и покажите статус, и все вернулось в ответ.
После всех этих конфигураций я получаю такой ответ:
{
"data": {
"GetLog": {
"TimeStamp": "403 {\"message\":\"Forbidden\"}"
}
}
}
Тот же результат, когда я пропускаю заголовок параметра X-API-TOKEN, он как HttpDatasource не отправляет эти параметры.
Я новичок в использовании всех этих технологий, сервисов AWS и Logz.io, пожалуйста, скажите мне, если я что-то пропускаю в каком-то месте.