Аутентификация Google в python - PullRequest
1 голос
/ 01 мая 2020

Я пытаюсь получить аутентификацию для использования API перевода Google. В настоящее время на моей локальной машине я просто делаю это:

from google.cloud import translate_v2 as translate

os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = path_to_cred_json_file
translate_client = translate.Client()

, который работает отлично. Тем не менее, я sh должен сделать это на AWS, где у меня хранится файл учетных данных json в секретах AWS. В документации для translate.Client я вижу это:

Init signature:
translate.Client(
    target_language='en',
    credentials=None,
    ...
)
...

:type credentials: :class:`~google.auth.credentials.Credentials`

Однако, если я прочитаю в файле json и попытаюсь передать его в качестве аргумента учетных данных, он выдаст ошибку.

Единственный ответ, который у меня есть на данный момент в AWS, - это прочитать секрет, записать его в виде файла json, а затем установить os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = path_to_cred_json_file, который будет работать, но инженер данных сказал ему, что это защита. риск.

Итак, вопрос в том, как мне получить этот google.auth.credentials.Credentials объект без чтения физического файла. У меня есть доступ к текстовой версии файла json в памяти (через секреты AWS). Я действительно новичок в AWS в общем, поэтому go легко для меня.

1 Ответ

0 голосов
/ 01 мая 2020

Благодаря @ miles-budnek и этому комментарию github, нашли ответ.

Предположим, у меня есть строка json в качестве словаря с именем secret:

from google.cloud import translate_v2 as translate
from google.oauth2 import service_account

credentials = service_account.Credentials.from_service_account_info(secret) 
t_client = translate.Client(credentials=credentials)
...