# Использование S3 Через API в OpenStack

# Введение

Добро пожаловать в руководство по использованию S3 buckets в OpenStack через API. Это руководство поможет вам получить доступ к объектному хранилищу S3, создать контейнеры (buckets) и управлять ими с помощью Python и boto3.

# Получение Учетных Данных OpenStack

# 1. Вход в OpenStack Dashboard

  • Авторизуйтесь в OpenStack Dashboard.
  • Скачайте openstack-rc файл:
    • Кликните на ваше имя пользователя в правом верхнем углу.
    • Выберите OpenStack RC File.

Вход в OpenStack Dashboard
Вход в OpenStack Dashboard

# 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

# 3. Генерация S3 Учетных Данных

  • Создайте S3 учетные данные:

openstack ec2 credentials create

Запишите полученные access и secret ключи.

# Создание Bucket

# 1. Создание Контейнера в OpenStack UI

  • Перейдите в раздел Object Store:
  • Откройте Project -> Object Store -> Containers.
  • Создайте новый контейнер:
  • Нажмите на кнопку + Container.

Создание bucket
Создание bucket
Создание bucket 2
Создание bucket 2

По итогу страница управления s3 должна выглядеть следующим образом

Успешное создание bucket
Успешное создание bucket

# 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 в OpenStack через API, используя Python и библиотеку boto3.