自动化gsutil命令

时间:2015-11-24 16:18:36

标签: google-cloud-storage gcloud

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

我已经在bash中完成了gcloud init进程...

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

当我跑

时一切正常
  'gsutil ls'

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

我看到设置env变量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配置,它似乎创建了一组新的auth,然后创建了另一个错误,所以删除了它。

2 个答案:

答案 0 :(得分:10)

你应该能够做到这一点,而不必过于深入地执行gsutil的身份验证。

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

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

您的流程将如下所示:

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

答案 1 :(得分:1)

您必须将defult项目和用户设置为gsuitl 在MAC的窗口/终端上的命令行上运行命令

gcloud初始化

选择1

它将显示您不同的用户,然后选择用户,然后选择项目

相关问题