如何使用Google Storage Transfer Service跨项目传输文件至外部存储桶
解决Storage Transfer Service使用外部服务账号密钥访问目标桶的方法
步骤1:准备存放密钥的自有GCS桶
- 用你自己项目下的一个GCS桶(或新建一个),用来存储外部服务账号的JSON密钥文件。
- 将你持有的外部服务账号密钥JSON上传到这个桶里,比如存放在路径
credentials/external-sa-key.json下。
步骤2:给STS服务账号授予密钥文件读取权限
- 找到错误提示里的STS服务账号:
project-xxxxxxxxxxxxx@storage-transfer-service.iam.gserviceaccount.com。 - 在你自己的项目中,给这个账号添加Storage Object Viewer角色(对应权限
storage.objects.get),确保它能读取你上传的密钥文件。
步骤3:创建传输任务时配置目标认证
- 进入Storage Transfer Service的任务创建流程,在目标桶配置阶段:
- 选择Google Cloud Storage作为目标类型,输入外部桶名
destination-bucket-name。 - 展开「高级选项」,找到「目标认证」区域,选择「使用服务账号密钥文件」。
- 填入密钥文件的GCS路径,格式为
gs://你的自有桶名/credentials/external-sa-key.json。
- 选择Google Cloud Storage作为目标类型,输入外部桶名
步骤4:验证权限并完成任务
- 确认外部服务账号本身已被授予目标桶的必要权限:至少包含
storage.buckets.get(获取桶位置)、storage.objects.create(写入文件),若需要覆盖文件还需storage.objects.delete。 - 保存任务并测试运行,确认权限错误消除。
内容的提问来源于stack exchange,提问作者Alessio Innocenzi
相关产品推荐
相关产品推荐

