python - 如何在 GAE 上使用 Python 中的服务帐户?

标签 python google-app-engine google-cloud-platform service-accounts

我想知道如何在 Google App Engine 标准环境中使用服务帐户。 我编写了一些代码,如下所示,以使用适当的 JSON key 文件访问 BigQuery。

from google.cloud import bigquery
....
bigquery_client = bigquery.Client.from_service_account_json(proper_path_to_json_key)
list(bigquery_client.list_datasets())

当我在本地 Python 解释器上运行代码时,代码工作正常,但当它在本地 dev_appserver.py 上运行时,结果悲惨地失败并出现以下错误。

TransportError: ('Connection aborted.', error(13, 'Permission denied'))

当它在GAE 上运行时,它仍然失败,但它的错误信息如下。

TransportError: ('Connection broken: IncompleteRead(208 bytes read)', IncompleteRead(208 bytes read))

我认为这个错误是由此处描述的 GAE 对出站流量的限制引起的 https://cloud.google.com/appengine/docs/standard/python/issue-requests 但我不知道如何解决它。

在 GAE 环境中使用服务帐户的最佳方式是什么?

最佳答案

很遗憾,App Engine Standard 尚不支持 Google 客户端库,例如您尝试使用的 BigQuery 库,如前所述 in this GitHub topic ,尽管它正在进行中。

或者,如果符合您的要求,您可以尝试在 App Engine Flexible 中进行部署,或者尝试 Google API Client Libraries相反。

关于将服务帐户与 App Engine 结合使用的问题,您可以使用运行该服务时可用的默认内置服务帐户,也可以创建自定义服务帐户。您可以在 documentation 中找到有关 App Engine 标准中服务帐户使用情况的更多信息。 .

关于python - 如何在 GAE 上使用 Python 中的服务帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47482321/

相关文章:

python - 检查应用程序是如何启动的?

python - 如何将高斯法线与直方图相匹配?

python cookielib 错误 :403 Forbidden

node.js - 使用 App Engine Node JS 标准的过滤器进行云数据存储投影查询

python - 如何在 Python 中检查神秘的反序列化对象

google-cloud-platform - 是否有针对 google 语音转文本的语言支持的 API?

python - JMESPath 嵌套 OR 语句

php - 使用 PHP 在 Google Compute Engine 中使用内存缓存

c# - 如何更改 GCS 存储桶中单个对象的存储类?

python - Ubuntu 18.04 flask 无法到达端口 5000 上的 api 端点