boto3 — это официальный SDK от Amazon для работы с S3 на языке Python. С его помощью можно управлять объектами: загружать и скачивать файлы, получать списки объектов, работать с метаданными, выполнять мультипарт-загрузку и создавать подписанные URL.
Установка
Для установки boto3 используйте pip:
После установки библиотека доступна для использования в Python-коде.
Настройка доступа
При использовании boto3 реквизиты доступа можно задать несколькими способами:
Через файлы ~/.aws/config и ~/.aws/credentials
При использовании AWS CLI в домашней директории пользователя автоматически создается папка .aws с файлами, содержащими данные для подключения к S3. При необходимости эту папку и файлы можно создать вручную — без использования AWS CLI. Файл ~/.aws/credentials должен содержать такие данные:
И ~/.aws/config:
При использовании профиля default дополнительная настройка в коде не требуется — boto3 автоматически подхватит эти данные.
Через переменные окружения
Реквизиты доступа можно задать с помощью переменных окружения:
Через код приложения
Реквизиты можно передать напрямую при создании клиента S3:
Этот способ не рекомендуется для продакшена, так как ключи доступа хранятся непосредственно в коде.
Использование отдельных профилей
Если в файлах ~/.aws/config и ~/.aws/credentials настроено несколько профилей, можно явно указать нужный профиль при создании сессии:
Это удобно, если один и тот же код используется для работы с несколькими бакетами или окружениями.
Пример
Рассмотрим, как при помощи SDK выполнять базовые операции с объектами. В этом примере скрипт:
- загружает файл в бакет;
- выводит список всех объектов;
- скачивает загруженный файл под другим именем;
- удаляет объект из хранилища.
Предварительно создайте файл с именем example.txt в той же директории, где находится скрипт.
Код скрипта: