google 云存储通过 python Firebase admin SDK 创建对象 public

google cloud storage make object public through python Firebase admin SDK

我正在尝试制作上传到 Firebase 存储(google 云存储)的 excel 文件 public 仅可作为 link 使用。当我使用 blob.make_public() 方法时,出现禁止访问的 403 错误:权限不足。

我正在为 python 使用 Firebase Admin SDK。据我所知,在云控制台的 IAM 部分,admin SDK 具有 Editor 和 Storage Object Admin 角色。有什么方法可以让上传的对象public通过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 bucket中找到data/dinosaurs.json文件,标记为public。

确保您使用正确的服务帐户文件来初始化 Admin SDK。还要确保您尝试访问的存储桶与凭证属于同一个 Firebase 项目。还要确保您的文件上传成功完成——即文件实际上最终到达了预期的位置。