【问题标题】:Automating gsutil commands自动化 gsutil 命令
【发布时间】:2022-01-30 23:16:00
【问题描述】:

我正在尝试自动化一些 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,但根据上次评论,现在似乎不是最新的。

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

【问题讨论】:

  • gcloud 将其配置存储在 ~/.config/gcloud 中,因此,如果您有手动设置的有效安装,您至少应该能够将该配置复制到新服务器。不过,可能还有一种更优雅的方式。
  • 谢谢,我可以在那里看到相关文件。

标签: google-cloud-storage gcloud


【解决方案1】:

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

【讨论】:

  • 您也可以将服务帐户与独立的 gsutil 一起使用,这比在这种情况下复制用户凭据更有意义。
  • 谢谢,我到了某个地方,我似乎可以进行身份​​验证,但现在它在配置中找不到项目 id,或者不清楚它的设置位置,或者如何具体说明它?我在问题的末尾添加了一个编辑。好的,我想我在某个地方 gcloud config set project 'project-id' 似乎没问题
  • gcloud config set project 'your project id' 应该是你所需要的。
  • 这可能为我节省了一个小时的 google api 文档解析时间 - 谢谢!
【解决方案2】:

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

gcloud 初始化

选择 1

它会告诉你不同的用户选择用户然后选择项目

【讨论】:

    【解决方案3】:

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

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

    正在创建 gs://root****/... 错误:您正在尝试执行需要项目 ID 的操作,但未配置。请重新运行 gsutil config 并确保按照说明查找并输入您的默认项目 ID。

    为我解决的步骤:

    1. gcloud 身份验证登录
    2. gcloud 配置集项目
    3. gsutil mb -l eu gs://

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

    ERROR 消失并按预期工作。

    【讨论】:

      猜你喜欢
      • 2021-01-17
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 2021-03-22
      • 2018-03-08
      • 2017-04-13
      • 2020-11-03
      • 2017-11-10
      相关资源
      最近更新 更多