Как использовать rewriteToken в пакетном хранилище json api? - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь скопировать целый беспорядок файлов (1000+) между ведрами, используя GCS json пакетирование API . Мы группируем наши файлы в пакеты по 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"
}

totalBytesRewritten идет в обратном направлении! Я пробовал это разными способами уже больше суток и не могу понять, что делаю не так. 1009 *, и здесь не говорится о том, как использовать пакетный API. Затем я попытался найти местоположение пакета, указанное в обнаружении api для хранилища, и эта ссылка вернула 404 https://www.googleapis.com/discovery/v1/apis/batch/storage/v1/rest

Ответы [ 2 ]

1 голос
/ 10 июля 2020

В документации из rewrite есть функция «попробовать сейчас». Это может помочь вам сгенерировать запрос curl, и я попробовал его проверить. rewriteToken похоже, находится в ссылке на команду POST, например:

POST 'https://...<path with rewriteTo>...?rewriteToken=MyRewriteToken...' etc.

Вы можете использовать «попробуйте сейчас», чтобы сгенерировать всю вашу команду curl.

I надеюсь, это поможет!

0 голосов
/ 11 июля 2020

Токен перезаписи должен быть закодирован по URL-адресу, а затем добавлен в качестве параметра запроса. Причина, по которой я получал «недопустимый аргумент», заключается в том, что возвращаемый rewriteToken содержал символы '/' и '=', которые нарушали синтаксический анализ URL. Как только я начал кодировать URL-адрес rewriteToken, это сработало. Например, если возвращаемый rewriteToken равен token/part1&part2%part3, тогда 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
...