Как пройти аутентификацию в Google Cloud API без учетных данных приложения по умолчанию или Cloud SDK?

Я пытаюсь получить доступ к Google Cloud API из функции AWS Lambda, но не знаю, как пройти аутентификацию. Руководство по аутентификации в документации Google Cloud (https://cloud.google.com/docs/authentication) хочет, чтобы я загрузил файл JSON с учетными данными и использовал учетные данные приложения по умолчанию, но, как уже знает любой, кто использовал размещенные функции, дело в том, что вам не нужно управлять сервером или средой выполнения, поэтому Lambda не дает мне возможность хранить произвольные файлы в среде работающего кода.

Я могу использовать Cloud SDK локально, чтобы получить токен доступа, но срок его действия истекает, поэтому я не могу использовать его в своей функции в качестве постоянного решения.

Разве я не могу получить токен доступа, который я могу бесконечно использовать в своем коде для вызова Google Cloud API? Есть ли другое решение?


person Mohamed Fakhreddine    schedule 10.01.2017    source источник
comment
На каком языке вы программируете? Какую библиотеку google api вы используете?   -  person cherba    schedule 10.01.2017
comment
Моя функция AWS Lamba написана на Javascript на Node JS, и я вызываю API естественного языка Google.   -  person Mohamed Fakhreddine    schedule 10.01.2017
comment
Вы пробовали github.com/google/google-auth-library-nodejs? управлять учетными данными?   -  person cherba    schedule 10.01.2017
comment
Эта библиотека является реализацией учетных данных приложения по умолчанию и по-прежнему требует, чтобы вы загрузили файл учетных данных JSON, что я не могу сделать в среде функций AWS Lambda.   -  person Mohamed Fakhreddine    schedule 10.01.2017
comment
Да, я предполагаю, что вы загрузите этот файл ключа JSON и встроите его содержимое в свой код. Вам не нужно загружать его из файла, можно жестко закодировать учетные данные, если ваш код безопасен.   -  person cherba    schedule 10.01.2017
comment
Спасибо за идею жесткого кодирования содержимого в коде. Я продолжал копать и нашел ответ в малоизвестной ссылке. Я разместил ответ ниже.   -  person Mohamed Fakhreddine    schedule 11.01.2017


Ответы (1)


Я нашел, как жестко закодировать учетные данные без необходимости сохранять их в файле JSON. Это было в этой документации здесь:

https://googlecloudplatform.github.io/google-cloud-node/#/docs/language/0.7.0/guides/authentication

Ниже приведен пример вызова языкового API.

var language = require('@google-cloud/language')({
  projectId: '',
  credentials: {
      client_email: '',
      private_key: '',
  }
});

language.detectEntities('Axel Foley is from Detroit').then(function(data) {
  var entities = data[0];
  var apiResponse = data[1];
});
person Mohamed Fakhreddine    schedule 10.01.2017
comment
На самом деле у меня сработало добавить его в ImageAnnoatorClient. Добавление его к требованию видения говорит о том, что требование не является функцией: var vision = require ('@ google-cloud / vision'); // Создает клиента const client = new vision.ImageAnnotatorClient ({projectId: config.projectId, credentials: {client_email: config.clientEmail, private_key: config.privateKey}}); - person mortey; 26.09.2018