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

Python 有没有办法使用boto3将文件直接写入S3?,python,amazon-web-services,amazon-s3,boto3,Python,Amazon Web Services,Amazon S3,Boto3,我编写了一个python脚本来处理非常大的文件(总共很少TB),我将在EC2实例上运行它。之后,我想将处理后的文件存储在S3存储桶中。目前,我的脚本首先将数据保存到磁盘,然后将其上载到S3。不幸的是,考虑到等待实例首先写入磁盘然后上载所花费的额外时间,这将是非常昂贵的 有没有办法使用boto3将文件直接写入S3存储桶 编辑:为了澄清我的问题,我询问内存中是否有对象,直接将该对象写入S3,而不首先将该对象保存到磁盘上。您可以使用它。只需将文件对象作为主体传入即可 例如: import boto3

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

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

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

您可以使用它。只需将文件对象作为主体传入即可

例如:

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'
)

它使用S3
put\u对象
方法:

key = 'filename'
response = s3.put_object(Bucket='Bucket_Name',
                         Body=json_data,
                         Key=key)

这正是我需要的。对于任何想知道的人,我的脚本现在将首先使用pickle.dumps来创建对象的字节表示。然后,我使用上面描述的put_对象直接写入S3。若要稍后检索该对象,请使用get_object从S3获取,并使用pickle.loads取消pickle。密钥是什么?@Jwan622这将是您的文件名在仍然使用高级API的情况下是否可以这样做?你要换车吗?