我是一名GCS新手试图编写一个应用程序,将文件上传到我创建的存储桶中。我已经按照教程使用浏览器界面创建了一个存储桶。但是,当我以编程方式尝试访问我的存储桶时,出现错误。我的应用程序输出"无"而不是打印我的默认存储桶名称。我的整体应用代码如下所示:
import webapp2
from google.appengine.api import app_identity
class MainHandler(webapp2.RequestHandler):
def get(self):
self.response.write(app_identity.get_default_gcs_bucket_name())
app = webapp2.WSGIApplication([
('/', MainHandler)
], debug=True)
我做错了什么?
答案 0 :(得分:4)
<强>更新强>:
现在,您可以通过在云端控制台中访问应用引擎的应用设置https://console.cloud.google.com/appengine/settings?project= 来创建新控制台中的默认存储区
<强>原始强>:
您获得NONE
,因为默认情况下不再是默认存储桶
关于默认云存储分区
使用旧App Engine控制台创建的应用程序可以使用 默认云存储桶,具有免费配额且不需要 要为应用启用结算功能。这些应用程序继续工作 和以前一样在Google Cloud Platform Console中。
但是,在Google云端平台中创建了新的App Engine项目 控制台没有默认的云存储桶。相反,你必须 使用如上所述的标准云存储桶。
但是,由于您手动创建了存储桶,因此您已经拥有其名称,因此可以跳过app_identity.get_default_gcs_bucket_name()
并对存储桶名称进行硬编码或从配置变量等中调用它。
然后,您可以使用gcloud-python lib将文件上传到您的存储桶:
from gcloud import storage
client = storage.Client()
bucket = client.get_bucket('<bucket-name>')
my_file = bucket.blob('/path/to/be/saved/in/bucket')
my_file.upload_from_filename(filename='/path/to/local/file')
如果您在应用引擎上执行此操作,则必须vendor gcloud lib。
如果您仍然希望获得格式为<project-id.appspot.com>
的默认存储桶的旧行为,那么所有这些都说完了,您可以关注GAEfan's answer,简而言之:
转到旧控制台,appengine.google.com&gt;应用程序设置&gt;云集成&gt;创建