J'ai quelque chose qui me semble avoir un peu plus d'ordre :
import boto3
from pprint import pprint
from botocore.exceptions import NoCredentialsError
class S3(object):
BUCKET = "test"
connection = None
def __init__(self):
try:
vars = get_s3_credentials("aws")
self.connection = boto3.resource('s3', 'aws_access_key_id',
'aws_secret_access_key')
except(Exception) as error:
print(error)
self.connection = None
def upload_file(self, file_to_upload_path, file_name):
if file_to_upload is None or file_name is None: return False
try:
pprint(file_to_upload)
file_name = "your-folder-inside-s3/{0}".format(file_name)
self.connection.Bucket(self.BUCKET).upload_file(file_to_upload_path,
file_name)
print("Upload Successful")
return True
except FileNotFoundError:
print("The file was not found")
return False
except NoCredentialsError:
print("Credentials not available")
return False
Il y a trois variables importantes ici, la BUCKET const, le fichier_à_télécharger et le nom_fichier
BUCKET
: est le nom de votre seau S3
file_to_upload_path
doit être le chemin d'accès au fichier que vous voulez télécharger.
file_name
: est le fichier résultant et le chemin dans votre seau (c'est ici que vous ajoutez des dossiers ou autres).
Il y a plusieurs façons de procéder mais vous pouvez réutiliser ce code dans un autre script comme ceci
import S3
def some_function():
S3.S3().upload_file(path_to_file, final_file_name)