我正在尝试制作一个excel文件,我将其作为链接公开上传到Firebase存储(谷歌云存储)。当我使用方法blob.make_public()
时,我得到一个Forbidden 403错误:权限不足。
我正在使用Firebase Admin SDK进行python。据我所知,在云控制台的IAM部分,管理员SDK具有编辑器和存储对象管理员角色。有没有办法通过python公开上传的对象?
没有找到任何在文档中有效的东西:Python GCS API
谢谢。
代码示例
# Access google cloud storage bucket
bucket = firebase_admin.storage.bucket(app=app)
# Blob - Google's wrapper for objects stored in buckets
destination_blob_name = 'excelReports/' + filename + '_' + datetime.now().strftime("%b_%d_%Y_%H_%M_%S")
blob = bucket.blob(destination_blob_name)
# Upload file
blob.upload_from_filename(filename)
# Make the file available for public download by those who have the link.
blob.make_public()
我刚刚尝试了以下集成测试用例,它按预期工作。
from firebase_admin import storage
def test_make_public(project_id):
bucket_name = '{0}.appspot.com'.format(project_id)
bucket = storage.bucket(bucket_name)
blob = bucket.blob('data/dinosaurs.json')
blob.upload_from_filename('tests/data/dinosaurs.json')
blob.make_public()
测试后,我可以在GCS桶中找到data/dinosaurs.json
文件,标记为公共。
确保您使用正确的服务帐户文件来初始化Admin SDK。并确保您尝试访问的存储桶属于与凭据相同的Firebase项目。还要确保您的文件上传成功完成 - 即文件实际上最终到达预期位置。