Не удается загрузить файл в 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 и ошибка должна исчезнуть.