S3的BOTO在尝试复制现有密钥时返回NoSuchKey

| 我已经在S3上创建了一个密钥。
mykey.exists()
返回
true
mykey.get_contents_to_filename()
生成正确的文件 但:
mykey.copy(\'bucket\', \'/backup/file\')
返回:
NoSuchKey
The Specified key does not exist.
Key = mykey
看来我正在使用boto 2.0b4 如果密钥存在,为什么会出现
NoSuchKey
错误? 我想念什么? 编辑:将密钥名称中的反斜杠更改为我实际使用的正斜杠     
已邀请:
我有一个理论,因为亚马逊s3最终是一致的,所以一个请求可以看到密钥(.exists()== True),而另一个请求最终在另一个不知道新密钥的s3服务器上结束(不一致读取-这是最终保持一致的数据存储的难点。这是s3的已知行为,即先放置put后再放置head / get。我希望它也可以保留副本。)通常经过很短(但不确定)的时间后所有请求都会看到您的密钥。通常,这大约只有一两秒钟。在代码中,将30秒的超时时间置于exist()检查与副本之间。还会发生吗? 此处描述了此问题:https://forums.aws.amazon.com/thread.jspa?threadID=21634&tstart=0)     
我认为您的密钥名称可能会出现问题。字符串\'\\ backup \\ file \'中的baskslash字符实际上被解释为字符串转义符,因此\'\\ b \'被替换为ASCII退格字符,并且\'\\ f \'被解释为ASCII换页(有关更多详细信息,请参见此内容)。虽然这可能不是您想要的,但它确实应该仍然有效,但是boto2.0b4中的键名转义中存在一个错误(该错误已在github master中修复),阻止了此操作。 如果您实际上希望键名是\“ \\ backup \\ file \”,请尝试在Python中将其指定为r \'\\ backup \\ file \'。这会将其视为原始字符串,并且不会进行转义处理。     

要回复问题请先登录注册