通过boto下载

时间:2014-12-18 15:15:44

标签: python amazon-s3 boto

我正在使用boto客户端下载并将我的文件上传到s3并执行大量其他操作,例如从一个文件夹密钥复制到另一个等等。当我尝试复制大小为0字节的密钥时出现问题。我用来复制的代码在

下面
# Get the connection to the bucket
conn = boto.connect_s3(AWS_KEY, SECRET_KEY)
bucket = conn.get_bucket('mybucket')

# bucket.name is the name of my bucket
# candidate is the source key
destination_key = "destination/path/on/s3"
candidate = "the/file/to/copy"

# now copy the key
bucket.copy_key(destination_key, bucket.name, candidate) # --> This throws an exception

# just in case, see if the key ended up in the destination. 
copied_key = bucket.lookup(destination_key)

我得到的例外是

3ResponseError: 404 Not Found
<Error><Code>NoSuchKey</Code>
     <Message>The specified key does not exist.</Message>
     <Key>the/file/to/copy</Key><RequestId>ABC123</RequestId><HostId>XYZ123</HostId>
</Error>

现在我通过登录aws控制台并导航到源键位置来验证密钥是否存在,密钥在那里,aws控制台显示其大小为0(在我的应用程序中有些情况我可以最终得到空文件,但我需要他们在s3)。

所以上传工作正常,boto上传密钥没有任何问题,但当我尝试复制它时,我得到密钥不存在的错误

那么我应该使用其他逻辑来复制这些密钥吗?在这方面的任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

确保包含源密钥的存储桶。应该是bucket/path/to/file/to/copy

之类的东西

答案 1 :(得分:0)

试试这个:

from boto.s3.key import Key
download_path = '/tmp/dest_test.jpg'
bucket_key = Key(bucket)
bucket_key.key = file_key # e.g. images/source_test.jpg
bucket_key.get_contents_to_filename(download_path)