【发布时间】:2018-07-25 22:29:25
【问题描述】:
我正在使用 Google Java SDK 访问 Google Cloud Storage。我为我的一个项目创建了一个服务帐户并下载了 JSON 密钥文件。我决定手动加载 JSON 密钥,如图所示 here 或依赖环境变量:
GoogleCredentials credentials = GoogleCredentials.fromStream(new FileInputStream(jsonPath))
.createScoped(Lists.newArrayList("https://www.googleapis.com/auth/cloud-platform"));
Storage storage = StorageOptions.newBuilder().setCredentials(credentials).build().getService();
此外,我有多个用户和每个用户多个项目:
User1 | User2
-----------------------------------------------------
Project A | Project X
Project B | Project Y
Project C |
当我创建运行我的代码时,它会尝试使用项目 A 的服务帐户密钥,它会尝试访问项目 X。在 gcloud util 中,项目 X 是我的活动项目 gcloud config list。我在设置活动项目的环境变量中看不到任何地方。我可以让它工作的唯一方法是在 gcloud gcloud config configurations activate [Project A Name] 中切换我的活动项目@
1) Java SDK 中是否有办法以编程方式覆盖由 gcloud util 神奇设置的当前项目?
2) 如果不是从 JSON 密钥文件中列出的内容中提取当前项目的代码,那么该代码在哪里? SDK 用于确定要使用的项目的优先顺序是什么?
【问题讨论】:
标签: java google-cloud-platform google-cloud-storage google-cloud-sdk