Как записать файл или данные в объект S3 с помощью boto3

В boto 2 вы можете записать объект S3 с помощью следующих методов:

  • Key.set_contents_from_string
  • Key.set_contents_from_file
  • Key.set_contents_from_filename
  • Key.set_contents_from_stream

Есть ли boto 3 эквивалент? Что такое метод boto3 для сохранения данных в объект, хранящийся на S3?

В boto 3 методы «Key.set_contents_from_» были заменены на

  • Object.put ()

  • Client.put_object ()

Например:

 import boto3 some_binary_data = b'Here we have some data' more_binary_data = b'Here we have some more data' # Method 1: Object.put() s3 = boto3.resource('s3') object = s3.Object('my_bucket_name', 'my/key/including/filename.txt') object.put(Body=some_binary_data) # Method 2: Client.put_object() client = boto3.client('s3') client.put_object(Body=more_binary_data, Bucket='my_bucket_name', Key='my/key/including/anotherfilename.txt') 

Альтернативно, двоичные данные могут поступать от чтения файла, как описано в официальных документах, сравнивающих boto 2 и boto 3 :

Хранение данных

Хранение данных из файла, потока или строки легко:

 # Boto 2.x from boto.s3.key import Key key = Key('hello.txt') key.set_contents_from_file('/tmp/hello.txt') # Boto 3 s3.Object('mybucket', 'hello.txt').put(Body=open('/tmp/hello.txt', 'rb'))