引用现有S3存储桶以使用Boto保存文件

Mic*_*ael 3 python amazon-s3 boto

我正在按照此帮助指南进行操作,该指南介绍了如何在创建文件后将文件保存到S3存储桶.但是,我找不到如何保存到现有存储桶的说明.更具体地说,我不确定如何引用预先存在的桶.我相信更换create_bucketget_bucket的伎俩.这允许我保存文件,但因为文档说get_bucket"按名称检索存储桶"我想在这里检查并确保它只检索存储桶的元数据并且不会将存储桶的所有内容下载到我的电脑.我这样做是对还是有更多的pythonic方式?

import boto
s3 = boto.connect_s3()
bucket = s3.get_bucket('mybucket')
from boto.s3.key import Key
k = Key(bucket)
k.key = 'foobar'
k.set_contents_from_string('This is a test of S3')
Run Code Online (Sandbox Code Playgroud)

gar*_*aat 5

你的代码看起来合理.该get_bucket方法将返回一个Bucket对象,或者,如果指定的存储桶名称不存在,它将引发一个S3ResponseError.

您可以稍微简化一下代码:

import boto
s3 = boto.connect_s3()
bucket = s3.get_bucket('mybucket')
k = bucket.new_key('foobar')
k.set_contents_from_string('This is a test of S3')
Run Code Online (Sandbox Code Playgroud)

但它完成了同样的事情.

  • 好吧,我写了boto库.我可能应该知道8 ^) (2认同)
  • 它不是下载存储桶的内容.铲斗可能有数百万甚至数十亿的物体.一旦你有了Bucket对象,就可以通过执行``for key in bucket:``循环来循环遍历其中的所有对象.boto将自动为你处理数据的分页.但即使在这里,您只获取有关对象的元数据,而不是对象本身. (2认同)