将json写入s3存储桶中的文件

时间:2017-10-20 07:28:49

标签: python boto3

此代码将json写入s3中的文件, 我想要实现的不是打开data.json文件并写入s3(sample.json)文件,

如何直接传递json并写入s3中的文件?

import boto3

s3 = boto3.resource('s3', aws_access_key_id='aws_key', aws_secret_access_key='aws_sec_key')
s3.Object('mybucket', 'sample.json').put(Body=open('data.json', 'rb'))

3 个答案:

答案 0 :(得分:10)

我不知道是否有人仍在尝试使用此线程,但是我试图将JSON上载到s3,以尝试使用上述方法,但对我而言并不奏效。 Boto和s3自2018年以来可能已经发生了变化,但这为我带来了成果:

import json
import boto3

s3 = boto3.client('s3')
json_object = 'your_json_object here'
s3.put_object(
     Body=str(json.dumps(json_object))
     Bucket='your_bucket_name'
     Key='your_key_here'
)

答案 1 :(得分:3)

Amazon S3是一个对象存储(实际上是文件存储)。主要操作是PUT和GET。您无法在S3中将数据添加到现有对象中。您只能替换整个对象本身。

有关可在s3上执行的可用操作的列表,请参阅此链接 http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectOps.html

答案 2 :(得分:2)

我不确定问题是否正确。您只想使用Boto3将JSON数据写入文件?以下代码将python字典写入JSON文件。

import json
import boto3    
s3 = boto3.resource('s3')
s3object = s3.Object('your-bucket-name', 'your_file.json')

s3object.put(
    Body=(bytes(json.dumps(json_data).encode('UTF-8')))
)