通过GSUTIL将文件从Windows 10文件夹上传到Gcloud存储桶时出现问题

时间:2018-12-23 08:10:24

标签: windows gcloud gsutil

你好 我正在使用通过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帖子后尝试以下方法

  1. 执行的命令gcloud配置列表--all并看到pass_credentials_to_gsutil未设置,因此将其设置为false

    gcloud配置设置pass_credentials_to_gsutil为假

  2. 创建了一个服务帐户并尝试过

    gcloud auth激活服务帐户-密钥文件代码-20180829-2c7c4b3e24df.json

  3. gsutil config -e(备份.boto文件,因为它说将要对其进行更改)。这里给出了服务帐户JSON文件的完整路径。

此后,我根本无法运行,因此尝试撤消我所做的一切,并像以前一样工作

  1. 替换了我之前备份的.boto文件。
  2. gcloud init(重新初始化的配置)
  3. gcloud配置将pass_credentials_to_gsutil设置为真

我正在使用Windows 10,基本上我想设置一个gsutil以使用服务帐户通过批处理作业(.bat)将文件上传到Cloud存储。最好能逐步了解任何方法。

谢谢

更新时间:2018年12月25日 下面的方法是对的吗?

  1. 使用默认设置在IAM中创建 S 服务 A 帐户,并生成p12文件
  2. 运行gsutil config -e命令,它要求输入p12文件的完整路径[D:\ BigData \ 16.GCP \ GCS \ Private \ codes-20180829-d05f0ecb939d.p12]和SA电子邮件ID(从IAM处获取)本身)
  3. 它已生成一个.boto文件,其中填充了gs_service_key_file [p12文件路径],gs_service_client_id [SA电子邮件ID],gs_service_key_file_password [notasecret]
  4. 进入每个存储桶并手动添加SA,​​将角色设置为StorageAdmin
  5. 拥有环境。变量BOTO_PATH设置为C:\ Users \ Sushanth.boto

现在可以了,想知道上述方法正确吗?

1 个答案:

答案 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
[...]