首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GCloud复位GOOGLE_APPLICATION_CREDENTIALS

GCloud复位GOOGLE_APPLICATION_CREDENTIALS
EN

Stack Overflow用户
提问于 2022-02-04 10:21:24
回答 1查看 282关注 0票数 0

我有一个经常旋转的GCloud凭证和一个使用它们的bash脚本。我希望在bast脚本中检测到,如果在运行过程中更改了凭据并覆盖它们。

我的逻辑是:

获取SA json并使用导出GOOGLE_APPLICATION_CREDENTIALS="${current_sa_path}"

  • watch进行SA

  • 中的旋转,如果发生旋转,则尝试使用新的json值

修改current_sa_path

所以我有这样的东西:

代码语言:javascript
复制
function check_for_new_sa() {
    new_sa_path=<get-path-to-the-new-sa-json>

    diff "${current_sa_path}" "${new_sa_path}"
    if [ $? -ne "0" ]; then
      cat ${new_sa_path} > "${current_sa_path}"
      unset GOOGLE_APPLICATION_CREDENTIALS
      export GOOGLE_APPLICATION_CREDENTIALS="${current_sa_path}"
    fi
    rm -rf ${new_sa_path}
}

不幸的是,我看到gcloud没有注意到这一变化,并且仍然试图通过旧的服务帐户进行连接。也许一旦它被导出,它就会被缓存在某处或idk中。你有什么想法吗?我怎么能重新设置它?

您还可以通过将GOOGLE_APPLICATION_CREDENTIALS导出到一个文件来轻松地再现它。修改该文件之后,当您尝试某些命令时,gcloud将使用旧的文件凭据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-04 19:03:07

当您编写"gcloud“时,我假设您指的是某个客户端应用程序;gcloud本身并不使用GOOGLE_APPLICATION_CREDENTIALS变量。

因为在运行应用程序之前需要使用export GOOGLE_APPLICATION_CREDENTIALS,所以应用程序将在内存中保存凭据。如果凭据更改,则有>2个解决方案:

  1. 终止应用程序进程并重新启动它,以便读取更新的GOOGLE_APPLICATION_CREDENTIALS变量值
  2. 更新应用程序(!)查找GOOGLE_APPLICATION_CREDENTIALS引用的文件中的更改,并在文件更改时重新启动.

我认为选项1更好,因为在GCP上运行时,应用程序凭据将从元数据服务而不是文件中获得。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70984739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档