Не удается загрузить файл в GCS с помощью gsutil

Копирование файла: //InstreamImpression.csv.gz [Content-Type = application / octet-stream]...

AccessDeniedException: 401 Требуется вход в систему fe13d1e0fb408639_4...: 46,75 МБ /46,77 МБ

CommandException: 1 файлы / объекты не могут быть переданы.

Похоже, что весь объект передается, но в конце выдает ошибку 401. И это происходит некоторое время.

Запустил "gcloud auth login" пару раз. Но все та же ошибка

Я могу загружать файлы с другой машины.

Любая идея?

2 ответа

Это был странный случай.

Файл находился на сервере Windows под диском "D:", и оттуда я запускал gsutil.

т.е. D:>gsutil -m cp xyz.csv gs:\somebucket\

Мне не хватило разрешения на диск D:

Но как только я запускаю ту же команду с диска "C:", она работает нормально

т.е. C:>gsutil -m cp "D:\xyz.csv" gs:\somebucket\

Это может быть проблемой с тем, как gsutil / boto обрабатывает разделители пути ОС в Windows, как указано здесь. В конечном итоге это должно быть объединено с инструментами SDK, но до этого должно работать следующее:

Идти к
Google-облако SDK \ платформа \ GSUtil \ THIRD_PARTY \ бото \ бото \ pyami \ config.py

и заменить строку:

for path in os.environ['BOTO_PATH'].split(':'):

с:

for path in os.environ['BOTO_PATH'].split(os.path.pathsep):

Далее перейдите к
Google-облако SDK \ Bin \ самонастройки \ gsutil.py

замените строки, использующие ':'

if boto_config:
      boto_path = ':'.join([boto_config, gsutil_path])
    elif boto_path:
      # this is ':' for windows as well, hardcoded into the boto source.
      boto_path = ':'.join([boto_path, gsutil_path])
    else:
      path_parts = ['/etc/boto.cfg',
                    os.path.expanduser(os.path.join('~', '.boto')),
                    gsutil_path]
      boto_path = ':'.join(path_parts)

с

if boto_config:
      boto_path = os.path.pathsep.join([boto_config, gsutil_path])
    elif boto_path:
      # this is ':' for windows as well, hardcoded into the boto source.
      boto_path = os.path.pathsep.join([boto_path, gsutil_path])
    else:
      path_parts = ['/etc/boto.cfg',
                    os.path.expanduser(os.path.join('~', '.boto')),
                    gsutil_path]
      boto_path = os.path.pathsep.join(path_parts)

Перезагрузите cmd и ошибка должна исчезнуть.

Другие вопросы по тегам