Tôi có một cái gì đó mà dường như tôi có một chút trật tự hơn:
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
Có ba biến quan trọng ở đây, const BUCKET , file_to_upload và file_name
BUCKET
: là tên của nhóm S3 của bạn
file_to_upload_path
: phải là đường dẫn từ tệp bạn muốn tải lên
file_name
: là tệp kết quả và đường dẫn trong nhóm của bạn (đây là nơi bạn thêm các thư mục hoặc những gì từng có)
Có nhiều cách nhưng bạn có thể sử dụng lại mã này trong một tập lệnh khác như thế này
import S3
def some_function():
S3.S3().upload_file(path_to_file, final_file_name)