自动化gsutil命令

Ian*_*Ian 7 google-cloud-storage gcloud

我正在尝试自动化一些gsutils命令,但很难看到保存身份验证文件的位置以及如何重用(如果发生这种情况).

我在bash中经历了gcloud init进程...

curl https://sdk.cloud.google.com | bash
gcloud init
Run Code Online (Sandbox Code Playgroud)

当我跑步时,一切运作良好

  'gsutil ls'
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试自动化该过程,因此这可以在新服务器上添加到其上的crontab(而不是每次都创建新的配置).

我看到提到设置env变量GOOGLE_APPLICATION_CREDENTIALS,所以我将我的凭据从Web登录复制到文件并尝试了,例如尝试作为其他用户进行测试

export GOOGLE_APPLICATION_CREDENTIALS=/home/user/.gsutil/mycreds
Run Code Online (Sandbox Code Playgroud)

然后gsutil ls,但失败了.

所以我假设我的整个凭证有点不对劲.我假设有一个文件位于最初由gcloud创建,我可以使用,但我无法在任何地方看到它?

我已经看过这里的答案,但现在似乎没有更新,正如最后的评论.

编辑:我已经按照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.
Run Code Online (Sandbox Code Playgroud)

所以我的下一个问题是,它在哪里寻找项目ID?如果我运行gsutil配置,它似乎创建了一组新的auth,然后创建另一个错误,所以已删除它.

Zac*_*man 14

你应该能够做到这一点,而不必深入到实施身份验证gsutil.

如果您使用独立gsutil(如果您通过此方法安装),链接问题中的说明仍然有效(如Travis指出).

如果您想继续使用gsutil通过Cloud SDK提供的内容,则应使用服务帐户.服务帐户是在无头机器或非交互式上下文中进行身份验证的首选方法.

您的流程将如下所示:

  1. 通过Google Cloud Developers Console创建服务帐户.
  2. 在远程计算机上,安装Cloud SDK和gsutil.如果您不是以交互方式安装,最好跳过该curl ... | bash方法.而是下载此安装存档,解压缩并运行install.sh脚本.这个脚本有选项(可见--help); 如果您为所有这些选项指定选项,则不会提示您.
  3. 将服务帐户复制到远程计算机.跑gcloud auth activate-service-account --key-file=/path/to/service-account.json.
  4. gsutil.您应该进行适当的身份验证.

  • gcloud config set project'您的项目ID'应该是您所需要的。 (3认同)