VK Cloud logo
Обновлена27 сентября 2023 г. в 13:18

Операции с объектами

Проведя предварительные настройки сессии, можно приступить к работе с объектами S3.

Загрузка объекта

Загрузка объектов в бакет инициализируется данной командой:

import boto3
session = boto3.session.Session()
s3_client = session.client(
    service_name='s3',
    endpoint_url='https://hb.vkcs.cloud'
)


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.vkcs.cloud'
)


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.vkcs.cloud'
)


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.vkcs.cloud'
)


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.vkcs.cloud'
)


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.