SDK для Python (boto) для работы с Object Storage
boto3 и boto — это наборы средств разработки для работы с сервисами AWS с поддержкой языков программирования Python 2.x и Python 3.x.
Перед началом работы
Для доступа Object Storage подготовьте:
-
Tenant ID — идентификатор тенанта. Его можно скопировать на странице с бакетами.
-
Key ID (логин) и Key Secret (пароль) — формируются при создании персонального API-ключа или ключа сервисного аккаунта.
-
Endpoint — https://s3.cloud.ru.
Настройка
-
Создайте в домашнем каталоге файл .aws/credentials и задайте в нем пару ключей в формате:
[default]aws_access_key_id=<tenant_id>:<key_id>aws_secret_access_key=<key_secret> -
Задайте в файле .aws/config регион:
[default]region=ru-central-1endpoint_url = https://s3.cloud.ru
Примеры операций
#!/usr/bin/env python#-*- coding: utf-8 -*-import boto3session = boto3.session.Session(profile_name='default')s3 = session.client(service_name='s3',endpoint_url='<endpoint_url>')# Создать новый бакетs3.create_bucket(Bucket='my-bucket')# Загрузить объекты в бакет из строкиs3.put_object(Bucket='my-bucket', Key='object_name', Body='EXAMPLE')# Загрузить объекты в бакет из файлаs3.upload_file('/tmp/filename.txt', 'my-bucket', 'storage-filename.txt')s3.upload_file('image.png', 'my-bucket', 'image-in-storage.png')s3.upload_file('my_script.py', 'my-bucket', 'script/my_script.py')# Получить список объектов в бакетеfor key in s3.list_objects(Bucket='my-bucket')['Contents']:print(key['Key'])# Получить объектget_object_response = s3.get_object(Bucket='my-bucket',Key='object_name')print(get_object_response['Body'].read())# Удалить несколько объектовforDeletion = [{'Key':'object_name'}, {'Key':'script/py_script.py'}]response = s3.delete_objects(Bucket='my-bucket', Delete={'Objects': forDeletion})# Удалить бакет и все объекты, включая их версииs3_resource = boto3.resource('s3', endpoint_url='endpoint_url')s3_bucket = s3_resource.Bucket('my-bucket')bucket_versioning = s3_resource.BucketVersioning('my-bucket')if bucket_versioning.status == 'Enabled':s3_bucket.object_versions.delete()else:s3_bucket.objects.all().delete()s3_bucket.delete()
С полной документацией по boto3 вы можете ознакомиться на сайте разработчика.
- Перед началом работы
- Настройка
- Примеры операций