复制文件://InstreamImpression.csv.gz [Content-Type = application / octet-stream] ...
AccessDeniedException:401 Login Requiredfe13d1e0fb408639_4 ...:46.75 MB / 46.77 MB
CommandException:无法传输1个文件/对象。
似乎整个对象正在转移,但最后给出了401错误。而且它已经发生了一段时间。
Ran" gcloud auth login"几次。但仍然是同样的错误
我可以从不同的机器上传文件。
有什么想法吗?
答案 0 :(得分:3)
这是一个奇怪的案例。
该文件位于Windows服务器下的" D:"驱动器,我从那里运行gsutil工具。
即。 D:> gsutil -m cp xyz.csv gs:\ somebucket \
我对D:drive
没有足够的许可但是一旦我从" C:"运行相同的命令推动它运作良好
即 C:> gsutil -m cp" D:\ xyz.csv" GS:\ somebucket \
答案 1 :(得分:0)
这可能是gsutil / boto如何处理Windows上的OS路径分隔符的问题,如引用here。这最终应该合并到sdk工具中,但在此之前,以下内容应该有效:
转到
谷歌-云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):
接下来,转到
谷歌云-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,错误应该消失。