gpt4 book ai didi

python - GAE SDK 中出现未经授权的错误,但部署后即可运行

转载 作者:行者123 更新时间:2023-12-01 03:20:43 25 4
gpt4 key购买 nike

我正在一个小示例中运行此代码:

from google.cloud import storage
from google.appengine.api import app_identity

class TestB(base_handler.TRNHandler):
#...
def post(self):
client = storage.Client()
bucket_name = os.environ.get('BUCKET_NAME',
app_identity.get_default_gcs_bucket_name())
bucket = client.get_bucket(bucket_name)
#...

如果我部署此代码,一切都会按预期工作。但是当我在本地运行它(SDK)时,出现错误:未经授权:401 无效凭据。发生了什么事以及如何解决它?

最佳答案

我有一个相当强烈的猜测,尽管在没有看到你的确切日志之类的情况下我无法确定。

google.cloud 库在授权方面非常智能。它使用一种称为“应用程序默认凭据”的东西。如果您在 App Engine 或 GCE 实例上运行该代码,该代码将能够确定哪个服务帐户与该实例关联,并使用该帐户的凭据对自身进行授权。

但是,当您在本地运行该程序时,该库无法知道要使用哪些凭据,因此它只是匿名进行调用。您的存储桶可能尚未授予匿名用户访问权限(这很好),因此调用失败并返回 401。

但是,您可以使用 gcloud 命令在本地注册凭据:

$> gcloud auth application-default login

运行该程序,库将使用您登录一段时间所用的任何凭据。或者,您还可以确保环境变量 GOOGLE_APPLICATION_CREDENTIALS 指向服务帐户的 JSON key 文件。

有一堆文档详细说明了 Application Default Credentials选择一个凭据。

或者,如果您希望在程序中直接指定身份验证,you can do that too :

storage = Storage.from_service_account_json('/path/to/key_file.json')

关于python - GAE SDK 中出现未经授权的错误,但部署后即可运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41948064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com