如何在多项目/多配置设置中使用Tensorflow的`file_io`?

时间:2019-04-04 15:32:23

标签: python tensorflow google-cloud-storage gcloud

我是多个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尊重我的活动配置?

1 个答案:

答案 0 :(得分:2)

问题是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来再次手动手动更新。