你好 我正在使用通过GCLOUD SDK和gsutil安装的GSUTIL作为其正常工作的命令,我能够创建存储桶并将文件上传到该存储桶。当我尝试通过Windows批处理文件(.bat)使用同一文件时,其失败并显示以下错误,
Caught non-retryable exception while listing gs://sushanth-07081985/: ServiceException: 401 Anonymous caller does not have storage.objects.list access to sushanth-07081985.
CommandException: Caught non-retryable exception - aborting rsync
下面是我的批处理文件
set gsutil="C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\bundledpython\python.exe" "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\gsutil\gsutil"
echo Backing up Test Folder
%gsutil% -m rsync -n -r -d -x ".*node_modules.*^|.*\.git.*" ./TestFolder gs://sushanth-07081985
阅读各种S.O帖子后尝试以下方法
执行的命令gcloud配置列表--all并看到pass_credentials_to_gsutil未设置,因此将其设置为false
gcloud配置设置pass_credentials_to_gsutil为假
创建了一个服务帐户并尝试过
gcloud auth激活服务帐户-密钥文件代码-20180829-2c7c4b3e24df.json
gsutil config -e(备份.boto文件,因为它说将要对其进行更改)。这里给出了服务帐户JSON文件的完整路径。
此后,我根本无法运行,因此尝试撤消我所做的一切,并像以前一样工作
我正在使用Windows 10,基本上我想设置一个gsutil以使用服务帐户通过批处理作业(.bat)将文件上传到Cloud存储。最好能逐步了解任何方法。
谢谢
更新时间:2018年12月25日 下面的方法是对的吗?
现在可以了,想知道上述方法正确吗?
答案 0 :(得分:1)
您应该改为为gsutil调用gcloud包装器脚本:
C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin\gsutil
此脚本会将您配置的gcloud auth选项传递到gsutil的主入口点(您之前调用的入口,位于...\google-cloud-sdk\platform\gsutil\gsutil
)。
如果您将两者混为一谈,则可以通过对两个路径运行gsutil的version -l
命令来确定哪个是Cloud SDK入口点。此命令将打印出有关您的环境的信息,包括您是否通过Cloud SDK调用了gsutil以及正在加载哪些.boto配置:
> C:\path\to\google-cloud-sdk\platform\gsutil\gsutil version -l
[...]
using cloud sdk: False
pass cloud sdk credentials to gsutil: False
config path(s): C:\Users\bob\.boto
[...]