首页 文章

如何使用Google Cloud SDK以编程方式更改活动项目

提问于
浏览
0

我正在使用Google Java SDK访问Google Cloud 端存储 . 我为我的一个项目创建了一个服务帐户并下载了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中,Project X是我的活动项目 gcloud config list . 在我设置活动项目的环境变量中,我无法看到任何地方 . 我能让这个工作的唯一方法是在gcloud中切换我的活动项目 gcloud config configurations activate [Project A Name]

1)Java SDK中是否有一种方法可以通过编程方式覆盖gcloud util在某处神奇设置的当前项目?

2)如果不是从JSON密钥文件中列出的内容中拉出当前项目的代码在哪里? SDK使用什么顺序来确定要使用的项目?

2 回答

  • 0

    问答1的答案可以在这个答案中看到:https://stackoverflow.com/a/44122119/311525

    可以使用setProjectId(PROJECT_ID)覆盖项目

    Storage storage = StorageOptions.newBuilder().setProjectId("your-project-id").setCredentials(credentials).build().getService();
    
  • 0

    为了得到两个答案,我指的是Scottanswer

    问答1的答案可以在这个答案中看到:https://stackoverflow.com/a/44122119/311525可以使用setProjectId(PROJECT_ID)存储存储= StorageOptions.newBuilder() . setProjectId(“你的 . -project-ID“)setCredentials方法(凭证).build()的getService();

    问题2的答案是代码将从JSON文件中提取项目,但您必须将gcloud中的项目设置为生成服务帐户的项目 . 在此示例中,如果要访问项目A,则需要将gcloud设置为项目A.


相关问题