You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python上传PDF至Google Cloud Bucket时遇认证错误求助

解决Firebase存储桶PDF上传时的GCE元数据服务错误

这个错误的核心原因是你在本地(非Google Compute Engine环境)运行代码,但storage.Client()默认尝试从GCE元数据服务获取认证凭据,而本地环境无法访问这个服务,导致认证失败。你已经通过Firebase Admin加载了服务账号凭据,但没有将其传递给Storage客户端,所以客户端走了默认的认证流程。

方案一:直接将服务账号凭据传给Storage客户端

修改代码,在创建storage.Client时显式传入加载好的凭据:

from google.cloud import storage
from google.oauth2 import service_account

# 加载服务账号密钥文件
cred = service_account.Credentials.from_service_account_file('CERTIFICATE')

def upload_pdf_to_storage(pdf_path, bucket_name, destination_blob_name):
    # 传入凭据创建Storage客户端
    storage_client = storage.Client(credentials=cred)
    bucket = storage_client.bucket(bucket_name)
    blob = bucket.blob(destination_blob_name)
    
    blob.upload_from_filename(pdf_path)

# 使用示例
pdf_path = 'sample_cv.pdf'
bucket_name = "MYBUCKETNAME"
destination_blob_name = "pdfs/pdf_filename.pdf"

upload_pdf_to_storage(pdf_path, bucket_name, destination_blob_name)

方案二:通过Firebase Admin SDK获取存储桶(更贴合Firebase使用场景)

利用Firebase Admin初始化时的配置直接获取存储桶,无需单独创建storage.Client:

import firebase_admin
from firebase_admin import credentials
from firebase_admin import storage

# 初始化Firebase Admin,同时指定存储桶名称
cred = credentials.Certificate('CERTIFICATE')
firebase_admin.initialize_app(cred, {
    'storageBucket': 'MYBUCKETNAME'  # 替换为你的存储桶完整名称,格式通常是[项目ID].appspot.com
})

def upload_pdf_to_storage(pdf_path, destination_blob_name):
    # 直接从Firebase App获取存储桶
    bucket = storage.bucket()
    blob = bucket.blob(destination_blob_name)
    
    blob.upload_from_filename(pdf_path)

# 使用示例
pdf_path = 'sample_cv.pdf'
destination_blob_name = "pdfs/pdf_filename.pdf"

upload_pdf_to_storage(pdf_path, destination_blob_name)

额外注意事项

  • 确保服务账号密钥文件(CERTIFICATE)的路径正确,且当前运行环境有读取该文件的权限
  • 存储桶名称要准确,可在Firebase控制台的「存储」页面查看完整名称
  • 服务账号需具备Storage Object Creator或更高权限,否则会出现上传权限不足的错误

内容的提问来源于stack exchange,提问作者Momo0815

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 11:47:51