Tengo algo que me parece que tiene un poco más de orden:
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
Hay tres variables importantes en este caso, el CUBO const, el file_to_upload y el nombre_archivo
BUCKET
: es el nombre de su bucket de S3
file_to_upload_path
: debe ser la ruta del archivo que desea cargar
file_name
: es el archivo resultante y la ruta en su depósito (aquí es donde agrega carpetas o lo que sea)
Hay muchas formas, pero puede reutilizar este código en otro script como este
import S3
def some_function():
S3.S3().upload_file(path_to_file, final_file_name)