我编写了一个python脚本来处理非常大的文件(总共几TB),我将在EC2实例上运行。之后,我想将处理过的文件存储在S3存储桶中。目前,我的脚本首先将数据保存到磁盘,然后将其上传到S3。不幸的是,考虑到等待实例首先写入磁盘然后上传所花费的额外时间,这将是非常昂贵的。
有没有办法使用boto3直接将文件写入S3存储桶?
编辑:为了澄清我的问题,我问我是否在内存中有一个对象,直接将该对象写入S3而不先将对象保存到磁盘上。
答案 0 :(得分:8)
您可以使用put_object。只需将您的文件对象作为正文传递。
例如:
import boto3
client = boto3.client('s3')
response = client.put_object(
Bucket='your-s3-bucket-name',
Body='bytes or seekable file-like object',
Key='Object key for which the PUT operation was initiated'
)
答案 1 :(得分:0)
它正在使用S3 put_object
方法:
key = 'filename'
response = s3.put_object(Bucket='Bucket_Name',
Body=json_data,
Key=key)