tch*_*udo 7 google-app-engine python-3.x google-cloud-storage
我找不到一种方法可以在使用 Python3.7 的 Google App Engine 标准环境中获得有效的签名网址。
我在这里查看了文档: https: //cloud.google.com/storage/docs/access-control/signing-urls-manually
在 Google App Engine 应用程序中,您可以使用App Engine App Identity服务对字符串进行签名。
但是 App Engine App Identity 依赖于google.appengine包,在 python 3.7 env 上不可用,如此处解释
专有 App Engine API 在 Python 3 中不可用。本节列出了推荐的替代品。
总体目标是您的应用程序应该完全可移植并在任何标准 Python 环境中运行。您编写的是标准 Python 应用程序,而不是 App Engine Python 应用程序。作为这一转变的一部分,您不再需要为应用程序的核心功能使用专有的 App Engine API 和服务。目前,App Engine API 在 Python 3.7 运行时中不可用。
sdk 上的所有 api 都依赖于google.appenginepython 3.7 env 并引发异常:在此处EnvironmentError('The App Engine APIs are not available.')引发
依赖于专有 api 的异常:
try:
from google.appengine.api import app_identity
except ImportError:
app_identity = None
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用许多解决方案,ServiceAccountCredentials.from_json_keyfile_dict(service_account_dict)但我必须直接在应用程序引擎上上传带有凭据的文件,但我无法执行此操作,因为项目凭据将在 git 或 ci 上公开。
我真的很想依赖应用程序引擎的默认凭据,就像其他 Google Cloud api 一样,storage.Client()例如开箱即用的。
有什么建议吗?
对于与 Google Cloud 的 Python 交互,请使用App Engine 标准 Python 3 运行时支持的Python 客户端。
要使用 App Engine Standard 中的 google-cloud-storage 访问 Cloud Storage:
storage.Client()仅进行身份验证。根据您需要实现的目标,我还建议尝试不同的可能方法:
还可以使用appengine api 对 blob 进行签名:
google.appengine.api.app_identity.sign_blob()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1502 次 |
| 最近记录: |