【问题标题】:How to change active project programmatically with Google Cloud SDK如何使用 Google Cloud SDK 以编程方式更改活动项目
【发布时间】: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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      为了将两个答案合二为一,我在这里指的是Scottanswer

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

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

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

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


      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-27
        • 1970-01-01
        • 2013-09-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多