python - python中的谷歌身份验证
问题描述
我正在尝试获得身份验证以使用谷歌翻译 API。目前在我的本地机器上,我只是这样做:
from google.cloud import translate_v2 as translate
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = path_to_cred_json_file
translate_client = translate.Client()
效果很好。但是,我希望在 AWS 上执行此操作,我将凭证 json 文件存储在 AWS 机密中。在translate.Client
我看到的文档中:
Init signature:
translate.Client(
target_language='en',
credentials=None,
...
)
...
:type credentials: :class:`~google.auth.credentials.Credentials`
但是,如果我读入 json 文件并尝试将其作为凭据参数传递,它会抛出一个错误。
我现在在 AWS 中的唯一答案是读取密钥,将其写为 json 文件,然后 set os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = path_to_cred_json_file
,这将起作用,但数据工程师告诉它存在安全风险。
所以问题是如何在google.auth.credentials.Credentials
不读取物理文件的情况下获取这个对象。我可以访问内存中 json 文件的纯文本版本(通过 AWS 机密)。总的来说,我对 AWS 很陌生,所以请放轻松。
解决方案
感谢@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)
推荐阅读
- angular - 在 Angular 5 中动态添加文本框和文本/芯片
- reactjs - 尝试设置状态时出现未定义错误
- typo3 - TYPO3 8.7 TCA inputLink Fluid 结果
- comments - Stata 和 Mata 中的注释:文件编辑器与命令提示符
- python - python中的numpy ndarray压缩方法
- kotlin - ModelBuilder end() 无法正常工作“com.badlogic.gdx.utils.GdxRuntimeException:首先调用 end()”
- sql-server - 循环以根据日期创建多个报告
- facebook - 访问页面公共内容 - 需要应用审核
- java - 有史以来最奇怪的事情(Java 和 Angular(简单))
- grails - 启用级联保存和事务的 Grails 域关联