Tenho algo que me parece um pouco mais organizado:
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
Existem três variáveis importantes aqui, o BUCKET const, o file_to_upload e o file_name
BUCKET
: é o nome do seu intervalo S3
file_to_upload_path
: deve ser o caminho do arquivo que você deseja enviar
file_name
: é o arquivo resultante e o caminho em seu intervalo (é onde você adiciona pastas ou o que quer que seja)
Existem muitas maneiras, mas você pode reutilizar este código em outro script como este
import S3
def some_function():
S3.S3().upload_file(path_to_file, final_file_name)