如何在 multi-project/multi-configuration 设置中使用 Tensorflow 的 `file_io`?

How to use Tensorflow's `file_io` in multi-project/multi-configuration setting?

我参与了多个 GCP 组织和项目。当我 运行 gcloud config configurations list 我得到:

NAME        IS_ACTIVE   ACCOUNT          PROJECT
default     False       knub@org_1.com   org1
project_b   True        knub@org_2.com   org2

现在我正在尝试 运行

from tensorflow.python.lib.io import file_io

file_io.file_exists("gs://bucket_from_project_b/test.txt")

但我收到错误

knub@org_1.com does not have storage.objects.get access to
gs://bucket_from_project_b/test.txt`

即使活动项目是 project_b,也会发生这种情况。其他一切,如 gcloudgsutil,工作并遵守当前活动的配置。

如何让 file_io 遵守我的活动配置?

问题是 file_io 使用 ~/.config/gcloud/application_default_credentials.json 中的应用程序凭据而不是 ~/.config/gcloud/active_config 中的活动配置。 此外,application_default_credentials.json在项目之间切换时(通过gcloud config configurations activate default)不会更新,而是每次切换后都必须通过调用gcloud auth application-default login再次手动更新。