У меня есть кое-что, что мне кажется более упорядоченным:
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
Там уже три важных переменных здесь, то ВЕДРО Const, то file_to_upload и имя_файл
BUCKET
: имя вашего ведра S3
file_to_upload_path
: должен быть путь к файлу, который вы хотите загрузить
file_name
: это полученный файл и путь в вашем ведре (сюда вы добавляете папки или что-то еще)
Есть много способов, но вы можете повторно использовать этот код в другом скрипте вроде этого
import S3
def some_function():
S3.S3().upload_file(path_to_file, final_file_name)