Storage Transfer Service使用哪个服务账号?如何查找?
Storage Transfer Service 服务账号说明与报错修复
配置项提及的服务账号身份
配置「保留对象原始ACL」时要求具备源对象权限的服务账号,是Google Cloud为所属项目自动生成的Storage Transfer Service服务代理账号,既非用户手动创建的自定义服务账号,也不是Compute Engine默认服务账号。
查找传输任务对应服务账号的方法
两种可直接落地的查询方式:
- 控制台查询:进入Storage Transfer Service管理页面,选中传输任务所属的项目,页面自动加载的项目关联传输服务代理账号即为目标账号,账号格式固定为
project-[项目数字ID]@storage-transfer-service.iam.gserviceaccount.com - 命令行查询:在已完成gcloud CLI初始化、且持有项目
resourcemanager.projects.getIamPolicy权限的环境中,执行如下命令即可直接获取账号信息:
gcloud beta transfer service-agent --project=[你的项目ID]
命令返回的邮箱地址就是执行传输任务的服务账号。
「无法读取源对象ACL」报错修复步骤
按以下顺序检查配置即可解决问题:
- 校验源存储桶访问控制模式
若源端是Google Cloud Storage存储桶,必须关闭storage.uniformBucketLevelAccess(统一桶级访问)配置,切换为细粒度ACL控制模式,配置变更后通常需要3-5分钟生效。 - 授予服务账号所需权限
给查询到的传输服务代理账号,授予源存储桶维度的storage.objects.getIamPolicy权限:可直接绑定包含该权限的预定义角色(如存储遗留桶读取者),也可在自定义角色中添加该权限后绑定到服务账号。 - 等待IAM权限全局同步(通常1-2分钟)后,重新触发传输任务即可。
补充说明:如果传输源是第三方云存储(如AWS S3、阿里云OSS)或公网HTTP/HTTPS地址,不存在GCS统一桶级访问配置要求,只需确认你配置的源端访问凭证持有读取对象ACL的对应权限即可。
内容的提问来源于stack exchange,提问作者lf215
相关产品推荐
相关产品推荐

