我正在尝试自动执行一些gsutils命令,但努力查看认证文件保存在何处以及如何重复使用(如果发生了什么)。

我已经在bash中经历了gcloud初始化过程...

curl https://sdk.cloud.google.com | bash
gcloud init

我运行时一切正常
  'gsutil ls'

现在,我正在尝试使该过程自动化,这样就可以在添加到crontab的新服务器上工作(而不是每次都创建一个新配置)。

我看到提到要设置环境变量GOOGLE_APPLICATION_CREDENTIALS,因此我将自己的凭据从网络登录名复制到了文件中并尝试过,例如尝试以其他用户身份进行测试
export GOOGLE_APPLICATION_CREDENTIALS=/home/user/.gsutil/mycreds

然后是gsutil ls,但失败。

因此,我认为我对整个凭据的理解有点不对。我假设某个文件最初是由gcloud创建的,可以使用,但是我在任何地方都看不到?

根据最近的评论,我已经查看了答案here,但现在似乎不是最新的。

编辑:我遵循了Zacharys的步骤,gcloud auth activate-service-account --key-file = myfilelocation

但是,现在有了“gsutil ls”,我得到了..
You are attempting to perform an operation that requires a project id, with none configured. Please re-run gsutil config and make sure to follow the instructions for finding and entering your default project id.

所以我的下一个问题是,它在哪里寻找项目ID?如果我运行gsutil config,它似乎会创建一组新的auth,然后会创建另一个错误,因此已将其删除。

最佳答案

您应该能够做到这一点,而不必深入了解gsutil的身份验证的实现。

如果您使用的是独立的gsutil(如果是通过this method安装的),则链接的问题中的说明仍然有效(如Travis所指出)。

如果您想继续使用通过Cloud SDK提供的gsutil,则应该使用service accounts。服务帐户是在 headless 计算机或非交互上下文中进行身份验证的首选方法。

您的流程如下所示:

  • 通过Google Cloud Developers Console创建服务帐户。
  • 在远程计算机上,安装Cloud SDK和gsutil。如果您不是交互式安装,最好跳过curl ... | bash方法。而是下载this install archive,将其解压缩,然后运行install.sh脚本。该脚本具有选项(可通过--help查看);如果您为所有这些选项指定了选项,则不会提示您。
  • 将服务帐户复制到远程计算机。运行gcloud auth activate-service-account --key-file=/path/to/service-account.json
  • 运行gsutil。您应该经过适当的身份验证。
  • 关于google-cloud-storage - 自动化gsutil命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33898687/

    10-10 23:34