Проблема при загрузке файла из папки Windows 10 в корзину Gcloud через GSUTIL - PullRequest
0 голосов
/ 23 декабря 2018

Привет, Я использую GSUTIL, установленный через GCLOUD SDK, и 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

После прочтения различных вариантовSO отправляет

  1. Выполняет команду gcloud config list --all и видит pass_credentials_to_gsutil как неустановленный, поэтому установил его как false

    gcloud config установил pass_credentials_to_gsutil false

  2. Создан сервисный аккаунт и опробован

    gcloud auth activit-service-account --key-file codes-20180829-2c7c4b3e24df.json

  3. gsutil config -e (создала резервную копию файла .boto, так как он сказал, что собирается его изменить).Здесь указан полный путь к файлу JSON служебной учетной записи.

После этого я вообще не мог работать, поэтому попытался отменить все, что сделал, и все заработало как раньше

  1. заменил файл .boto, который я ранее зарезервировал.
  2. gcloud init (повторно инициализированная конфигурация)
  3. gcloud config set pass_credentials_to_gsutil true

Я использую Windows 10, в основном я хотел бы настроить gsutil для использования служебной учетной записи для загрузки файлов в облачное хранилище с помощью пакетного задания (.bat).Будет хорошо узнать любой пошаговый подход.

Спасибо

Обновлено: 25/12/2018 Правильный ли подход ниже?

  1. Создал S ervice A ccount в IAM с использованием значений по умолчанию и сгенерировал файл p12
  2. Запустил команду config -e gsutil, он запросил полный путьфайла p12 [D: \ BigData \ 16.GCP \ GCS \ Private \ codes-20180829-d05f0ecb939d.p12] и идентификатор электронной почты SA (полученный от самого IAM)
  3. Создан файл .boto сзначения, заполненные для файла gs_service_key_file [p12 filepath], gs_service_client_id [идентификатор электронной почты SA], gs_service_key_file_password [notasecret]
  4. Пошли в каждую группу и вручную добавили SA, установив роль как StorageAdmin
  5. .переменная BOTO_PATH установлена ​​в C: \ Users \ Sushanth.boto

Теперь это работает, хотелось бы знать, корректен ли вышеуказанный подход?

1 Ответ

0 голосов
/ 23 декабря 2018

Вместо этого вы должны вызывать сценарий оболочки gcloud для gsutil:

C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin\gsutil

Этот сценарий передает настроенные параметры аутентификации gcloud через главную точку входа для gsutil (вы вызывали ранее, находясь в ...\google-cloud-sdk\platform\gsutil\gsutil).

Если вы когда-нибудь перепутаете эти два, вы можете определить, какая из них является точкой входа Cloud SDK, запустив команду gsutil version -l для обоих путей.Эта команда выведет информацию о вашей среде, включая информацию о том, вызывали ли вы gsutil через Cloud SDK и какие загружаемые конфигурации .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
[...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...