- tocdepth
2
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 boto3
session = 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())
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import os
from boto.s3.key import Key
from boto.s3.connection import S3Connection
os.environ['S3_USE_SIGV4'] = 'True'
conn = S3Connection(
host='<endpoint>'
)
conn.auth_region_name = 'us-east-1'
# Создать новый бакет
conn.create_bucket('my-bucket')
bucket = conn.get_bucket('my-bucket')
# Загрузить объекты в бакет из строки
bucket.new_key('example-string').set_contents_from_string('EXAMPLE')
# Загрузить объекты в бакет из файла
file_key_1 = Key(bucket)
file_key_1.key = 'py_script.py'
file_key_1.set_contents_from_filename('this_script.py')
file_key_2 = Key(bucket)
file_key_2.key = 'script/py_script.py'
file_key_2.set_contents_from_filename('this_script.py')
# Получить список объектов в бакете
keys_list=bucket.list()
for key in keys_list:
print key.key
# Удалить несколько объектов
response = bucket.delete_keys(['example-string', 'py_script.py'])
# Получить объект
key = bucket.get_key('script/py_script.py')
print key.get_contents_as_string()
С полной документацией по boto3 вы можете ознакомиться на сайте разработчика.
Была ли статья полезной?
Запустили Evolution free tier
для Dev & Test
Получить
для Dev & Test