#
Использование S3 Через API в OpenStack
#
Введение
Добро пожаловать в руководство по использованию S3 buckets в OpenStack через API. Это руководство поможет вам получить доступ к объектному хранилищу S3, создать контейнеры (buckets) и управлять ими с помощью Python и boto3.
#
Получение Учетных Данных OpenStack
#
1. Вход в OpenStack Dashboard
- Авторизуйтесь в OpenStack Dashboard.
- Скачайте openstack-rc файл:
- Кликните на ваше имя пользователя в правом верхнем углу.
- Выберите
OpenStack RC File.
Openstack-rc файл содержит необходимые переменные среды для работы с OpenStack API. Более подробная инструкция по получению openstack-rc файла
#
2. Подготовка Python Среды
- Установка Python (на примере Ubuntu):
sudo apt install python3.10 python3.10-venv
- Создание виртуальной среды:
python3.10 -m venv venv
- Активация виртуальной среды:
source ./venv/bin/activate
- Загрузка учетных данных:
source <path to downloaded openrc file>
Обновление pip:
pip install --upgrade pipУстановка OpenStack CLI:
pip install python-openstackclient
Настройка Python среды позволяет использовать библиотеки Python для работы с OpenStack API.
#
3. Генерация S3 Учетных Данных
- Создайте S3 учетные данные:
openstack ec2 credentials create
Запишите полученные access и secret ключи.
Эти ключи доступа S3 используются для операций с объектным хранилищем в вашем проекте.
#
Создание Bucket
#
1. Создание Контейнера в OpenStack UI
- Перейдите в раздел Object Store:
- Откройте
Project -> Object Store -> Containers. - Создайте новый контейнер:
- Нажмите на кнопку
+ Container.
По итогу страница управления s3 должна выглядеть следующим образом
Контейнер (Bucket) в S3 используется для хранения и управления объектами (файлами).
#
2. Тестирование Соединения с Python
- Используйте следующий Python скрипт для тестирования соединения:
import boto3
import pprint
from botocore.exceptions import NoCredentialsError, ClientError
URL = '' # Получите URL из раздела Project -> API Access в Horizon
ACCESS_KEY = '' # Ваш S3 Access Key
SECRET_KEY = '' # Ваш S3 Secret Key
BUCKET = '' # Имя вашего контейнера
# Bucket details
bucket_name = 'test-bucket-12345' # Change to a unique bucket name
# Initialize a session using the provided credentials
session = boto3.session.Session()
s3_client = session.client(
's3',
aws_access_key_id=aws_access_key_id,
aws_secret_access_key=aws_secret_access_key,
endpoint_url=endpoint_url
)
# Test 1: Connection to the S3 service
try:
s3_client.list_buckets()
print("Connection to S3 successful.")
except NoCredentialsError:
print("Credentials not available")
return
# Test 2: Create and delete a bucket
try:
# Create a new bucket
s3_client.create_bucket(Bucket=bucket_name)
print(f"Bucket '{bucket_name}' created successfully.")
# Delete the bucket
s3_client.delete_bucket(Bucket=bucket_name)
print(f"Bucket '{bucket_name}' deleted successfully.")
except ClientError as e:
print(f"Error: {e}")
Этот скрипт подключается к S3 хранилищу и выводит список объектов в указанном контейнере.
#
Заключение
Следуя этому руководству, вы сможете эффективно управлять объектным хранилищем S3 в OpenStack через API, используя Python и библиотеку boto3.