我正在尝试自动执行一些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 计算机或非交互上下文中进行身份验证的首选方法。
您的流程如下所示:
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/