如何在不保存文件的情况下使用 boto3 从 s3 执行凭据下载?

How do you perform a credentialed download from s3 using boto3 without saving a file?

使用

执行从 s3 到文件的凭据下载很简单
import boto3

s3 = boto3.resource('s3')
def save_file_from_s3(bucket_name, key_name, file_name):
    b = s3.Bucket(bucket_name)
    b.download_file(key_name, file_name)

使用

很容易从 s3 下载到类似文件的对象
import from StringIO import StringIO
import urllib

file_like_object = StringIO(urllib.urlopen(url).read())

(参见 How do I read image data from a URL in Python?

但是如何执行从 s3 到类文件对象的凭据下载?

您只需拨打s3.Bucket.Object.get:

import boto3

s3 = boto3.resource('s3')
# obj = s3.Object(bucket_name, key_name).get()
bucket = s3.Bucket(bucket_name)
obj = bucket.Object(key_name).get()
body = obj.get('Body')