本地Eclipse运行Spring Boot时如何修改Google Cloud Storage关联服务账号
问题解答
1. 当前加载的服务账号来源
Google Cloud SDK的默认凭据提供器会按固定优先级查找可用凭据,你本地Eclipse启动时加载的lo*ideal@api-project-8##9.iam.gserviceaccount.com来自以下路径中优先级最高的一个:
- Spring Boot项目配置文件:检查
application.properties/application.yml中是否显式配置了spring.cloud.gcp.credentials.location、spring.cloud.gcp.credentials.encoded-key或者spring.cloud.gcp.service-account-id参数 - 系统环境变量:本地环境变量
GOOGLE_APPLICATION_CREDENTIALS指向的服务账号JSON密钥对应的就是该账号 - 本地gcloud CLI配置:如果你的设备安装过gcloud命令行工具,之前执行过
gcloud auth application-default login或者gcloud config set account绑定的服务账号会被默认读取
2. 403报错说明
你收到的403错误是因为当前加载的
lo*ideal@api-project-8##9.iam.gserviceaccount.com账号没有目标GCS桶的storage.objects.list权限,你可以选择给该账号添加对应桶的访问权限,或者直接切换为另一台设备上使用的、已有权限的admlocal开头的服务账号。
3. 切换为admlocal开头服务账号的操作步骤
以下方法按优先级从高到低排序,推荐优先用项目级配置避免影响本地其他应用:
方法1:Spring Boot配置文件指定(项目级生效,最推荐)
- 先拿到admlocal开头服务账号的JSON密钥文件,存到本地项目的安全路径(不要提交到代码仓库)
- 在
application.properties中添加配置:
# 替换为你本地admlocal服务账号密钥文件的实际路径 spring.cloud.gcp.credentials.location=file:/path/to/your/admlocal-service-account-key.json # 可选配置,显式指定服务账号ID避免加载错误 spring.cloud.gcp.service-account-id=admlocal****@xxx.iam.gserviceaccount.com
如果用的是yml格式配置:
spring: cloud: gcp: credentials: location: file:/path/to/your/admlocal-service-account-key.json service-account-id: admlocal****@xxx.iam.gserviceaccount.com
配置完成后重启项目即可生效。
方法2:修改系统环境变量(全局生效)
- 把系统环境变量
GOOGLE_APPLICATION_CREDENTIALS的值修改为admlocal服务账号JSON密钥文件的全路径 - Windows设备需要重启Eclipse生效,Mac/Linux设备需要重启启动Eclipse的终端会话后再启动项目生效。
方法3:通过gcloud CLI修改默认凭据(适合多Google Cloud项目切换场景)
如果本地安装了gcloud命令行工具,执行以下命令即可切换默认凭据:
# 直接导入admlocal服务账号的密钥文件 gcloud auth activate-service-account admlocal****@xxx.iam.gserviceaccount.com --key-file=/path/to/your/admlocal-service-account-key.json # 设置为当前默认账号 gcloud config set account admlocal****@xxx.iam.gserviceaccount.com
执行完成后重启Eclipse启动项目即可看到凭据已切换。
内容的提问来源于stack exchange,提问作者Kris Swat
相关产品推荐
相关产品推荐

