如何为CloudRun上的FastAPI应用配置Pub/Sub服务账号认证
Cloud Run上FastAPI应用配置Pub/Sub发布认证步骤
移除本地硬编码凭证配置
直接删除代码中设置GOOGLE_APPLICATION_CREDENTIALS的相关代码,Cloud Run会自动为服务挂载默认服务账号的凭证,无需依赖本地JSON密钥文件。为Cloud Run服务的默认服务账号添加Pub/Sub发布权限
- 找到你的Cloud Run服务使用的默认服务账号,格式通常为
[项目编号]-compute@developer.gserviceaccount.com - 执行以下gcloud命令为该账号添加
roles/pubsub.publisher角色:gcloud projects add-iam-policy-binding 你的项目ID \ --member="serviceAccount:你的服务账号邮箱" \ --role="roles/pubsub.publisher"
也可以直接在Google Cloud控制台的IAM页面手动添加该角色。
- 找到你的Cloud Run服务使用的默认服务账号,格式通常为
适配Cloud Run环境的Pub/Sub发布代码(结合FastAPI)
简化后的代码示例,客户端库会自动读取环境中的凭证:from fastapi import FastAPI from google.cloud import pubsub_v1 import os app = FastAPI() # 初始化发布客户端 publisher = pubsub_v1.PublisherClient() # 通过环境变量获取项目ID,构建Topic路径 topic_path = publisher.topic_path(os.getenv("PROJECT_ID"), "你的Pub/Sub主题名称") @app.post("/publish-message") async def publish_message(message: str): data = message.encode("utf-8") # 发布消息 future = publisher.publish(topic_path, data) return {"message_id": future.result()}部署时传入必要环境变量
部署Cloud Run服务时,通过参数传入项目ID:gcloud run deploy 你的服务名称 \ --image=你的镜像地址 \ --set-env-vars=PROJECT_ID=你的项目ID \ --region=你的部署区域
内容的提问来源于stack exchange,提问作者Sarah
相关产品推荐
相关产品推荐

