Python中的Google身份验证

问题描述 投票:1回答:1

我正在尝试获取身份验证以使用Google翻译API。当前,在我的本地计算机上,我只需执行以下操作:

from google.cloud import translate_v2 as translate

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

效果很好。但是,我希望在将凭证json文件存储在AWS机密中的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的新手,请放轻松。

python amazon-web-services google-authentication aws-secrets-manager
1个回答
0
投票

感谢@ miles-budnek和this 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)
© www.soinside.com 2019 - 2024. All rights reserved.