【发布时间】:2019-08-16 04:14:35
【问题描述】:
我找不到使用 Python3.7 在 Google App Engine 标准环境中获得有效签名 URL 的方法。
我在这里查看了文档: https://cloud.google.com/storage/docs/access-control/signing-urls-manually
在 Google App Engine 应用程序中,您可以使用 App Engine App Identity 服务对您的字符串进行签名。
但 App Engine App Identity 依赖于 google.appenginepackage,这在 python 3.7 env 上不可用,解释为 here
专有的 App Engine API 在 Python 3 中不可用。本部分列出了推荐的替代方法。
总体目标是您的应用应该是完全可移植的并且可以在任何标准 Python 环境中运行。您编写的是标准 Python 应用程序,而不是 App Engine Python 应用程序。作为这一转变的一部分,您不再需要为应用的核心功能使用专有的 App Engine API 和服务。目前,App Engine API 在 Python 3.7 运行时中不可用。
sdk 上的所有 api 都依赖于 google.appengine 并在 python 3.7 env 上引发异常:EnvironmentError('The App Engine APIs are not available.') raise here
依赖专有 api:
try:
from google.appengine.api import app_identity
except ImportError:
app_identity = None
我知道我可以使用许多解决方案,例如ServiceAccountCredentials.from_json_keyfile_dict(service_account_dict),但我必须直接在应用引擎上上传带有凭据的文件,但我不能这样做,因为项目凭据将在 git 或 ci 上公开。
我真的很想依赖来自应用引擎的默认凭据,例如 storage.Client() 等其他 Google Cloud api,例如开箱即用。
有什么建议吗?
【问题讨论】:
标签: python-3.x google-app-engine google-cloud-storage