谷歌云存储通过python Firebase管理SDK使对象公开

问题描述 投票:1回答:1

我正在尝试制作一个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()
python firebase google-cloud-storage firebase-admin
1个回答
0
投票

我刚刚尝试了以下集成测试用例,它按预期工作。

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项目。还要确保您的文件上传成功完成 - 即文件实际上最终到达预期位置。

© www.soinside.com 2019 - 2024. All rights reserved.