Google cloud storage 如何在批存储json api中使用重写令牌?

Google cloud storage 如何在批存储json api中使用重写令牌?,google-cloud-storage,Google Cloud Storage,我试图使用GCS在存储桶之间复制一大堆文件(1000+)。我们将文件分为100个批次,然后使用json api端点提交它们。但是,当我们为需要很长时间才能复制的文件返回rewriteToken时,我们不确定如何使用它。我甚至无法使用简单的curl命令使其工作: curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) \ -H "Content-Type: applicatio

我试图使用GCS在存储桶之间复制一大堆文件(1000+)。我们将文件分为100个批次,然后使用json api端点提交它们。但是,当我们为需要很长时间才能复制的文件返回rewriteToken时,我们不确定如何使用它。我甚至无法使用简单的curl命令使其工作:

curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) \
-H "Content-Type: application/json" \
https://storage.googleapis.com/storage/v1/b/geoff-dev-central/o/sample.bin/rewriteTo/b/geoff-dev-test/o/sample.bin 

{
  "kind": "storage#rewriteResponse",
  "totalBytesRewritten": "1677721600",
  "objectSize": "4328521728",
  "done": false,
  "rewriteToken": "token1"
}

curl -X POST -H "Authorization: Bearer "$(gcloud auth print-access-token) \
-H "Content-Type: application/json" \
https://storage.googleapis.com/storage/v1/b/geoff-dev-central/o/sample.bin/rewriteTo/b/geoff-dev-test/o/sample.bin \
-d '{"rewriteToken": "token1"}'

{
  "kind": "storage#rewriteResponse",
  "totalBytesRewritten": "662700032",
  "objectSize": "4328521728",
  "done": false,
  "rewriteToken": "token2"
}
重写的TotalBytes正在倒退!一天多来,我一直在用各种不同的方式尝试,但我不知道自己做错了什么

PS我试着看了一下,但它没有谈到如何使用批处理api。然后,我尝试查找存储api发现中引用的批处理位置,该链接在“重写”功能中返回了404。它可能会帮助您生成curl请求,我尝试过对其进行测试
rewriteToken
似乎位于POST命令的链接中,如:

POST'https://......?rewriteToken=MyRewriteToken...'等。

您可以使用“立即试用”来生成整个curl命令


我希望这会有帮助

重写令牌需要进行url编码,然后添加为queryparameter。我得到“invalid argument”的原因是返回的rewriteToken包含“/”和“=”字符,这些字符破坏了url解析。一旦我开始对重写令牌进行url编码,它就工作了。例如,如果返回的rewriteToken是
token/part1&part2%part3
,那么调用rewrite的url将是

https://storage.googleapis.com/storage/v1/b/geoff-dev-central/o/sample.bin/rewriteTo/b/geoff-dev-test/o/sample.bin?rewriteToken=token%2Fpart1%26part2%25part3