最佳答案
我正在尝试用 AWS 的新 Boto3客户端做一个“ hello world”。
我的用例相当简单: 从 S3获取对象并将其保存到文件中。
在 boto 2.X 中,我会这样做:
import boto
key = boto.connect_s3().get_bucket('foo').get_key('foo')
key.get_contents_to_filename('/tmp/foo')
在波多3号。我不能找到一个干净的方法来做同样的事情,所以我手动迭代“ Streaming”对象:
import boto3
key = boto3.resource('s3').Object('fooo', 'docker/my-image.tar.gz').get()
with open('/tmp/my-image.tar.gz', 'w') as f:
chunk = key['Body'].read(1024*8)
while chunk:
f.write(chunk)
chunk = key['Body'].read(1024*8)
或者
import boto3
key = boto3.resource('s3').Object('fooo', 'docker/my-image.tar.gz').get()
with open('/tmp/my-image.tar.gz', 'w') as f:
for chunk in iter(lambda: key['Body'].read(4096), b''):
f.write(chunk)
它工作得很好。我想知道是否有任何“本地”boto3函数可以完成同样的任务?