Как записать файл или данные в объект S3 с помощью boto3
в boto 2 Вы можете написать объекту S3, используя следующие методы:
- ключ.set_contents_from_string()
- ключ.set_contents_from_file()
- ключ.set_contents_from_filename()
- ключ.set_contents_from_stream()
есть ли эквивалент boto 3? Что такое метод boto3 для сохранения данных в объект, хранящийся на S3?
3 ответов
boto3 также имеет метод для загрузки файла напрямую:
s3.Bucket('bucketname').upload_file('/local/file/here.txt','mains3bucket/folder/s3key')
http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Bucket.upload_file
вот хороший трюк, чтобы прочитать JSON из s3:
import json, boto3
s3 = boto3.resource("s3").Bucket("bucket")
json.load_s3 = lambda f: json.load(s3.Object(key=f).get()["Body"])
json.dump_s3 = lambda obj, f: s3.Object(key=f).put(Body=json.dumps(obj))
теперь вы можете использовать json.load_s3
и json.dump_s3
С тем же API, что и load
и dump