После предварительных настроек можно начать работу с объектами S3.
Загрузка объекта
Объект можно загрузить в бакет при помощи команды:
import boto3
session = boto3.session.Session()
s3_client = session.client(
service_name='s3',
endpoint_url='https://hb.bizmrg.com'
)
test_bucket_name = 'boto3-test-bucket-name'
#Загрузка данных из строки
s3_client.put_object(Body='TEST_TEXT_TEST_TEXT', Bucket=test_bucket_name, Key='test_file.txt')
#Загрузка локального файла
s3_client.upload_file('some_test_file_from_local.txt', test_bucket_name, 'copy_some_test_file.txt')
#Загрузка локального файла в директорию внутри бакета
s3_client.upload_file('some_test_file_from_local.txt', test_bucket_name, 'backup_dir/copy_some_test_file.txt')
Узнать больше о командах PUT_OBJECT и UPLOAD_FILE можно в официальной документации библиотеки boto3 по методам PUT и UPLOAD.
Копирование объектов между бакетами
Запустить процесс копирования объектов между бакетами можно с помощью команды:
import boto3
session = boto3.session.Session()
s3_client = session.client(
service_name='s3',
endpoint_url='https://hb.bizmrg.com'
)
source_bucket_name = 'boto3-source-bucket-name'
source_path = 'object_key1.txt'
target_bucket_name = 'boto3-target-bucket-name'
target_path = 'backup/copy_object_key1.txt'
copy_source = {
'Bucket': source_bucket_name,
'Key': source_path
}
s3_client.copy(copy_source, target_bucket_name, target_path)
О команде COPY можно прочитать в официальной документации библиотеки boto3.
Получение объекта
Чтобы получить объект из бакета нужно воспользоваться командой:
import boto3
session = boto3.session.Session()
s3_client = session.client(
service_name='s3',
endpoint_url='https://hb.bizmrg.com'
)
response = s3_client.get_object(Bucket='boto3-bucket-name-test', Key='object_name.txt')
print(response)
print(response['Body'].read())
О команде GET_OBJECT можно прочитать в официальной документации библиотеки boto3.
Получение списка объектов
Чтобы получить список объектов в бакете следует воспользоваться командой:
import boto3
session = boto3.session.Session()
s3_client = session.client(
service_name='s3',
endpoint_url='https://hb.bizmrg.com'
)
test_bucket_name = 'boto3-test-bucket-name'
for key in s3_client.list_objects(Bucket=test_bucket_name)['Contents']:
print(key['Key'])
Подробнее о команде LIST_OBJECT можно прочитать в официальной документации библиотеки boto3.
Удаление объекта
Для удаления объекты следует воспользоваться командой:
import boto3
session = boto3.session.Session()
s3_client = session.client(
service_name='s3',
endpoint_url='https://hb.bizmrg.com'
)
test_bucket_name = 'boto3-test-bucket-name'
#Удаление одного объекта
s3_client.delete_object(Bucket='boto3-bucket-name-test', Key='object_name.txt',)
#Удаление множества объектов
object_to_delete = [{'Key':'objectkey1.txt'}, {'Key':'objectkey2.txt'}]
s3_client.delete_objects(Bucket=test_bucket_name, Delete={'Objects': object_to_delete})
Полную информацию о команде DELETE_OBJECTS можно прочитать в официальной документации библиотеки boto3.