我创建了存储桶,通过
上传文件 gsutil cp -a public-read test.htm gs://BUCKETNAME
我可以在存储浏览器中看到该文件,并使用gsutil ls
当我尝试使用以下代码阅读时,我得到了
NotFoundError:期待来自Google存储的状态[200]。但得到了地位 404。
代码:
import logging
import os
import lib.cloudstorage as gcs
import webapp2
from google.appengine.api import app_identity
my_default_retry_params = gcs.RetryParams(initial_delay=0.2,
max_delay=5.0,
backoff_factor=2,
max_retry_period=50)
gcs.set_default_retry_params(my_default_retry_params)
class MainPage(webapp2.RequestHandler):
def get(self):
bucket_name = os.environ.get('BUCKET_NAME',
app_identity.get_default_gcs_bucket_name())
self.response.headers['Content-Type'] = 'text/plain'
self.response.write('Demo GCS Application running from Version: '
+ os.environ['CURRENT_VERSION_ID'] + '\n')
self.response.write('Using bucket name: ' + bucket_name + '\n\n')
bucket = '/' + bucket_name
filename = bucket + '/test.htm'
self.read_file(filename)
def read_file(self, filename):
self.response.write('Abbreviated file content (first line and last 1K):\n')
gcs_file = gcs.open(filename)
self.response.write(gcs_file)
app = webapp2.WSGIApplication([
('/', MainPage),
], debug=True)
当我在我的环境中使用此处的示例代码(https://github.com/GoogleCloudPlatform/appengine-gcs-client/blob/master/python/demo/main.py)时,会发生Strage事情。
代码在同一个存储桶上创建并写入文件,然后读取并删除它。工作正常,但当我注释掉删除部分时,我无法在存储浏览器或gsutil中看到这些文件,但我仍然可以使用代码读取它们。
我在存储浏览器中检查了我的存储桶权限,看起来很好,该应用的服务帐户是存储桶拥有者。
非常感谢任何帮助。
答案 0 :(得分:0)
在重新审视之后,由于最近的需求,我想出来了。 gsutil有一个bug,我在github读到了它的某个地方。当我通过存储浏览器或python客户端库上传文件时,它可以工作。