Как добавить в json файл на AWS S3 - PullRequest
0 голосов
/ 16 января 2020

Мне нужно добавить файл json на aws S3, код 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'

Как я могу добавить к этому файлу логи c, описанные выше?

1 Ответ

1 голос
/ 16 января 2020

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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...