23.06.2025

Подключениe к S3-совместимому хранилищу через Amazon S3 API на Ubuntu с предварительной установкой Python

В этой статье мы рассмотрим пошаговый процесс подключения к S3-совместимому хранилищу с использованием Amazon S3 API на Ubuntu. Вы узнаете, как установить необходимые инструменты, настроить Python-скрипт для взаимодействия с хранилищем, а также выполнять базовые операции: получение списка бакетов, загрузку и скачивание файлов. Мы детально разберём каждый шаг, чтобы даже начинающий пользователь смог уверенно настроить и протестировать подключение

Установка Python и pip

Обновляем систему и устанавливаем Python 3 и pip:

sudo apt update
sudo apt install python3 python3-pip
python3 -m pip install --upgrade pip

Установка библиотеки boto3

Устанавливаем библиотеку для работы с S3:

pip3 install boto3

Создание Python-скрипта

Создаем новый файл (например, s3_client.py) в любом текстовом редакторе:

nano s3_client.pyp

Вставляем следующий код, заменяя ВАШ_КЛЮЧ_ДОСТУПА, ВАШ_СЕКРЕТНЫЙ_КЛЮЧ и https://ваш.endpoint.url на соответствующие значения:

import boto3
from botocore.client import Config

# Заменяем эти значения на свои
access_key = 'ВАШ_КЛЮЧ_ДОСТУПА'
secret_key = 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ'
endpoint_url = 'https://ваш.endpoint.url'

# Создание клиента S3
s3_client = boto3.client(
's3',
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=endpoint_url,
config=Config(signature_version='s3')
)

# Пример: Получение списка бакетов
try:
response = s3_client.list_buckets()
print("Список бакетов:")
for bucket in response['Buckets']:
print(f" {bucket['Name']}")
except Exception as e:
print(f"Ошибка: {e}")

Сохраняем изменения и выходим из редактора (Ctrl + X, затем Y и Enter).

Запуск скрипта

Запускаем скрипт:

python3 s3_client.py

Если всё настроено верно, вы увидите список бакетов в вашем хранилище.

Дополнительные операции с хранилищем

Создание тестового файла
Для проверки загрузки и скачивания файла создаём тестовый файл:

echo "Пример содержимого файла" > local_file.txt

Загрузка файла
Для загрузки файла добавляем в скрипт:

s3_client.upload_file('local_file.txt', 'bucket_name', 'remote_file.txt')

Где:

Скачивание файла
Для скачивания файла добавляем:

s3_client.download_file('bucket_name', 'remote_file.txt', 'local_file.txt')

Где:

Если возникают ошибки, убедитесь, что установлены все необходимые зависимости. Например, можно обновить botocore вручную:

pip3 install --upgrade botocore

Примечания

Если у вас нет настроенного S3-совместимого хранилища, уточните у вашего поставщика услуг доступные endpoint_url, ключи доступа и настройки бакетов.
Вы можете использовать альтернативные текстовые редакторы, такие как vim или любой другой удобный вам инструмент.
Убедитесь, что ваш пользователь обладает достаточными правами на создание и управление файлами в S3-хранилище.