我正试图使用python-webapp2在谷歌云存储桶上创建一个csv文件,使用以下代码:
full_filename = '/' + TEST_BUCKET + "/" + DATA + "/" + 'employee.csv'
logging.info("full_filename is %s ", full_filename)
gcs_file = cloudstorage.open(full_filename,
'w',
content_type='text/plain',
retry_params=cloudstorage.RetryParams(backoff_factor=1.1))
gcs_file.write(file_obj.getvalue())
gcs_file.close()
logging.info("done writing into cloud storage !!")
它正在成功创建,作为GAE控制台一部分的开发人员可以看到文件的内容。
但不属于GAE
控制台的员工看不到这一点,也看不到403 Forbidden
。
其想法是,属于同一组织的员工(以谷歌工作区域为例:example.com(应该能够访问该文件,无论他们是否属于GAE控制台。因此,我尝试赋予bucket级别的权限(uniform access control
(,并添加example.com作为新的主体和Role作为:Storage Legacy Bucket Reader
,但它们仍然获得相同的403 Forbidden
。
资源:https://cloud.google.com/iam/docs/overview#g_suite_domain
https://cloud.google.com/storage/docs/access-control
谷歌云存储上的GSuite权限
https://cloud.google.com/storage/docs/access-control/lists
此错误(403(表示用户未经谷歌云存储授权进行请求。
- 403 Forbidden的谷歌云存储错误文档中列出了导致此错误的各种可能原因
- 此错误的一个常见来源是未正确设置bucket权限(bucket ACL(以允许您的应用程序访问
由于您提到作为GAE一部分的开发人员能够访问bucket内容,因此我们可以排除上述ACL场景。
但是,您可以尝试以下方法:
-
将域用户添加到组中。
-
在谷歌云平台控制台上转到";存储->浏览器";,在你的桶上,在右边的菜单上选择";编辑存储桶权限";。
-
在";添加成员";将集团置于";存储->存储对象查看器";以在经过身份验证时为整个组授予只读权限或您需要的任何其他权限组合。
或者,您可以查看此文档以了解更多详细信息。