有没有办法使用boto3直接将文件写入S3?

Ric*_*Sun 8 python amazon-s3 amazon-web-services boto3

我写了一个python脚本来处理非常大的文件(总共几TB),我将在EC2实例上运行.之后,我想将处理过的文件存储在S3存储桶中.目前,我的脚本首先将数据保存到磁盘,然后将其上传到S3.不幸的是,考虑到等待实例首先写入磁盘然后上载所花费的额外时间,这将是非常昂贵的.

有没有办法使用boto3直接将文件写入S3存储桶?

编辑:为了澄清我的问题,我问我是否在内存中有一个对象,直接将该对象写入S3而不先将对象保存到磁盘上.

Nic*_*las 9

你可以使用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'
)
Run Code Online (Sandbox Code Playgroud)

  • 这正是我所需要的.对于任何想知道的人,我的脚本现在将首先使用pickle.dumps来创建对象的字节表示.然后,我使用如上所述的put_object直接写入S3.要在以后检索该对象,请使用get_object从S3获取并使用pickle.loads来取消它. (2认同)