【问题标题】:How to append to json file on AWS S3如何附加到 AWS S3 上的 json 文件
【发布时间】:2020-05-03 13:35:40
【问题描述】:

我需要附加到 aws S3 上的 json 文件,python 代码在 EC2 实例上运行。

在本地设置中,我可以轻松地执行以下操作:

import json

#example data
json_data = {"id": "123", "name": "XYZ", "transaction": [20.0, 30.0]}
# path
local_path = '/home/ubuntu/test.json'

with open(local_path, 'a', encoding='utf-8-sig') as file:
    json.dump(json_data, file)
    file.write('\n')
    file.close()

在 EC2 上,我可以按如下方式连接到 S3:

import boto
s3_open = boto.connect_s3(host='s3.eu-central-1.amazonaws.com')

我定义了到 S3 的路径:

s3_path = 's3://my-bucket/test.json'

如何使用上述逻辑附加到此文件?

【问题讨论】:

  • 当你说追加你的意思是添加到远程文件?或者添加到本地文件然后上传? S3 没有附加操作。
  • 添加到托管在 S3 上的远程文件。如果 S3 没有附加操作,还有什么替代方法?
  • 下载并重新上传...查看答案示例

标签: python json amazon-s3 append


【解决方案1】:

S3 没有附加操作,您可以下载文件,自行附加,然后将其作为同一对象的新版本上传。

类似的东西。

import json
import boto3

s3_path = '/some/s3/path'
bucket = 'somebucket'
local_data = {"id": "123", "name": "XYZ", "transaction": [20.0, 30.0]}

s3 = boto3.client('s3')
resp=s3.get_object(Bucket=bucket, Key=s3_path)
data=resp.get('Body')

json_data = json.loads(data)
json_data.append(local_data)
s3.put_object(Bucket=bucket, Key=s3_path, Body=json.dumps(json_data).encode())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    • 2019-12-29
    • 2020-09-18
    相关资源
    最近更新 更多