В данной статье мы разберем, как подключиться к S3-совместимому облачному хранилищу, используя API Amazon S3 в среде Ubuntu. Рассмотрим установку необходимых инструментов, настройку Python-скрипта для работы с хранилищем, а также выполним основные операции: просмотр списка бакетов, загрузку и скачивание файлов. Все шаги подробно описаны, чтобы даже начинающий пользователь смог успешно настроить подключение.
Установка Python и pip
Сначала обновляем систему и устанавливаем Python 3 вместе с менеджером пакетов pip:
sudo apt install python3 python3-pip
python3 -m pip install --upgrade pip
Установка библиотеки boto3
Для взаимодействия с S3 используем библиотеку boto3, устанавливаем её следующим образом:
Написание Python-скрипта
Перед этим шагом обозначим, что такое бакет:
Бакет (bucket) — это контейнер для хранения файлов в S3-совместимом хранилище. Он выполняет роль каталога, в котором можно организовывать и управлять объектами (файлами).
Создаем новый файл s3_client.py в текстовом редакторе:
Вставляем код, заменяя ВАШ_КЛЮЧ_ДОСТУПА,ВАШ_СЕКРЕТНЫЙ_КЛЮЧ и https://ваш.endpoint.url на ваши реальные данные:
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).
Запуск скрипта
Для проверки подключения запускаем скрипт:
Если всё настроено правильно, появится список доступных бакетов.
Дополнительные операции с хранилищем
Создание тестового файла
Перед загрузкой файла создадим его:
Загрузка файла в хранилище
Добавляем в скрипт следующий код:
Где:
- local_file.txt — локальный файл,
- bucket_name — имя бакета,
- remote_file.txt — имя файла в хранилище.
Скачивание файла
Для скачивания файла используем:
Где:
- bucket_name — имя бакета,
- remote_file.txt— имя файла в облаке,
- local_file.txt— путь для сохранения загруженного файла.
Проверка зависимостей
При возникновении ошибок стоит проверить зависимости. Например, можно обновить botocore>:
Примечания
- Если у вас нет настроенного S3-совместимого хранилища, уточните у провайдера параметры endpoint_url, ключи доступа и настройки бакетов.
- Вы можете использовать любой удобный текстовый редактор вместо nano.
- Убедитесь, что ваш аккаунт обладает достаточными правами для работы с объектами S3.
FAQ (Часто задаваемые вопросы)
Как исправить ошибку "Access Denied" при подключении к S3?
Проверьте правильность введённых ключей доступа и убедитесь, что у пользователя есть разрешения на чтение/запись объектов в хранилище.
Что делать, если не удаётся установить boto3?
Убедитесь, что у вас установлены последние версии pip и setuptools, а также попробуйте запустить команду:
Можно ли использовать этот скрипт для Amazon S3?
Да, если указать endpoint_url='https://s3.amazonaws.com', скрипт будет работать с официальным сервисом Amazon S3.