默认 GCS 存储桶名称

3
根据 https://cloud.google.com/appengine/docs/python/googlecloudstorageclient/activate
默认的存储桶名称通常为.appspot.com,其中您需要使用您的应用ID替换。您可以在App Engine管理控制台应用程序设置页面下找到存储桶名称,在标签Google Cloud Storage Bucket下。另外,您可以使用App Identity get_default_gcs_bucket_name()方法以编程方式查找名称。
当我查看标签Google Cloud Storage Bucket时,我看到.appspot.com,其中是我的应用程序标识符。这似乎与上面段落中的前两个句子一致。
但是,当我像最后一句建议的那样调用get_default_gcs_bucket_name()时,返回值是app_default_bucket。
由于我将此应用部署到多个站点,因此我想使用该方法调用。是否有任何方法可以使其返回真实的默认存储桶名称?

你是在SDK中测试还是已经部署了? - Greg
@Greg SDK。我还没有尝试过部署。顺便说一下,既然你的问题表明你在这方面有一些经验,如果你也能看一下https://dev59.com/1F8d5IYBdhLWcg3wzU6r,我会非常感激。 - Lindsay
我在使用开发服务器中的GCS插件时遇到了问题。尝试部署它并查看结果。 - Ryan
@Greg @Bruyere 我尝试部署,但出现了“没有名为cloudstorage的模块”(请参见上面提到的线程)。因此,我注释掉了致命的导入语句及其依赖项,好消息是,get_default_gcs_bucket_name() 正确地工作了。这解决了这个线程。谢谢! - Lindsay
2个回答

3

在开发环境中,大多数服务都被桩替代。一旦您将应用程序部署到GAE上,get_default_gcs_bucket_name将返回<app_id>.appspot.com

我使用以下应用程序验证了该行为:

import webapp2

from google.appengine.api import app_identity


class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write(app_identity.get_default_gcs_bucket_name())

application = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)

0

您可以在开发服务器上使用客户端库。但是,由于没有 Cloud Storage 的本地仿真,所有读写文件的请求都必须通过互联网发送到实际的 Cloud Storage 存储桶。

要在开发应用程序服务器上使用客户端库:

激活 Cloud Storage 存储桶。

使用标志 --default_gcs_bucket_name [BUCKET_NAME] 运行 dev_appserver.py,将 [BUCKET_NAME] 替换为您正在使用的 Cloud Storage 存储桶的名称。

此标志控制应用程序调用 file.DefaultBucketName(ctx) 时返回的存储桶。

在 Google 文档中找到了这个 - https://cloud.google.com/appengine/docs/standard/python/googlecloudstorageclient/setting-up-cloud-storage#activating_a_cloud_storage_bucket


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接