Dans le boto 3, les méthodes "Key.set_contents_from_" ont été remplacées par les méthodes suivantes
Par exemple :
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')
Alternativement, les données binaires peuvent provenir de la lecture d'un fichier, comme décrit dans la rubrique les docs officiels comparant boto 2 et boto 3 :
Stockage des données
Il est facile de stocker des données à partir d'un fichier, d'un flux ou d'une chaîne :
# 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'))