SDK для Python (boto) для работы с Object Storage
boto3 и boto — это наборы средств разработки для работы с сервисами AWS с поддержкой языков программирования Python 2.x и Python 3.x.
Для установки воспользуйтесь инструкциями в репозиториях boto3 и boto.
Перед началом работы
Для доступа Object Storage потребуются:
Tenant ID — идентификатор тенанта. ID тенанта можно скопировать в сервисе Object Storage платформы Evolution.
Key ID (логин) и Key Secret (пароль) — формируются при создании персонального API-ключа или ключа сервисного аккаунта.
Endpoint — 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-1
Примеры операций
#!/usr/bin/env python#-*- coding: utf-8 -*-import boto3session = boto3.session.Session(profile_name='default')s3 = session.client(service_name='s3',endpoint_url='https://<endpoint>')# Создать новый бакет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'])# Удалить несколько объектовforDeletion = [{'Key':'object_name'}, {'Key':'script/py_script.py'}]response = s3.delete_objects(Bucket='my-bucket', Delete={'Objects': forDeletion})# Удалить бакет и все объекты, включая их версииs3 = boto3.resource('s3')s3_bucket = s3.Bucket('my-bucket')bucket_versioning = s3.BucketVersioning('my-bucket')if bucket_versioning.status == 'Enabled':s3_bucket.object_versions.delete()else:s3_bucket.objects.all().delete()s3_bucket.delete()# Получить объектget_object_response = s3.get_object(Bucket='my-bucket',Key='py_script.py')print(get_object_response['Body'].read())
С полной документацией по boto3 вы можете ознакомиться на сайте разработчика.
Была ли статья полезной ?
Предыдущая статья
AWS CLI для работы с Object Storage
Следующая статья
CyberDuck для работы с Object Storage
- Перед началом работы
- Настройка
- Примеры операций