自动化 gsutil 命令

Automating gsutil commands

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

我在 bash...

中完成了 gcloud init 进程
curl https://sdk.cloud.google.com | bash
gcloud init

当我 运行

时一切正常
  'gsutil ls'

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

我看到提到设置 env 变量 GOOGLE_APPLICATION_CREDENTIALS,所以我将我的凭据从 Web 登录复制到一个文件并尝试了,例如尝试以不同的用户身份进行测试

export GOOGLE_APPLICATION_CREDENTIALS=/home/user/.gsutil/mycreds

然后 gsutil ls,但失败了。

所以我假设我的整个凭据有点不对。我假设某处有一个最初由 gcloud 创建的文件,我可以使用它,但我在任何地方都看不到它?

我查看了答案 here,但根据上一条评论,现在似乎不是最新的。

编辑:我遵循了 Zachary 的步骤,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 配置,它似乎会创建一组新的身份验证,然后会产生另一个错误,因此已将其删除。

您应该能够做到这一点,而无需深入研究 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。您应该经过适当的身份验证。

您必须将默认项目和用户设置为 gsuitl 运行 window/terminal MAC

命令行上的命令

gcloud 初始化

选择 1

它将向您显示不同的用户 select 用户然后 select 项目

我正在尝试创建一个名称为项目 ID 的存储桶。

gsutil mb -l eu gs://PROJECT-ID

正在创建 gs://root****/... 错误: 您正在尝试执行需要项目 ID 的操作,并配置了 none。请 re-run gsutil 配置并确保按照说明查找和输入您的默认项目 ID。

为我解决的步骤:

  1. gcloud 授权登录
  2. gcloud 配置设置项目
  3. gsutil mb -l eu gs://

正在创建 gs://root***/...

错误已消失并按预期工作。