Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация
На главную
25eb9e0a-a5a8-472a-ace7-940b8bd2adf0
Облачные сервисы

Python

boto3 — это официальный SDK от Amazon для работы с S3 на языке Python. С его помощью можно управлять объектами: загружать и скачивать файлы, получать списки объектов, работать с метаданными, выполнять мультипарт-загрузку и создавать подписанные URL.

Установка

Для установки boto3 используйте pip:

    
pip install boto3

После установки библиотека доступна для использования в Python-коде.

Настройка доступа

При использовании boto3 реквизиты доступа можно задать несколькими способами:

Через файлы ~/.aws/config и ~/.aws/credentials

При использовании AWS CLI в домашней директории пользователя автоматически создается папка .aws с файлами, содержащими данные для подключения к S3. При необходимости эту папку и файлы можно создать вручную — без использования AWS CLI.  Файл ~/.aws/credentials должен содержать такие данные:

    
[default] aws_access_key_id = <ACCESS_KEY> aws_secret_access_key = <SECRET_KEY>

И ~/.aws/config:

    
[default] output = json endpoint_url = https://s3.twcstorage.ru region = ru-1

При использовании профиля default дополнительная настройка в коде не требуется — boto3 автоматически подхватит эти данные.

Через переменные окружения

Реквизиты доступа можно задать с помощью переменных окружения:

    
export AWS_ACCESS_KEY_ID=<ACCESS_KEY> export AWS_SECRET_ACCESS_KEY=<SECRET_KEY>

Через код приложения

Реквизиты можно передать напрямую при создании клиента S3:

    
import boto3 s3 = boto3.client( "s3", aws_access_key_id="<ACCESS_KEY>", aws_secret_access_key="<SECRET_KEY>", endpoint_url="https://s3.twcstorage.ru", region_name="ru-1" )

Этот способ не рекомендуется для продакшена, так как ключи доступа хранятся непосредственно в коде.

Использование отдельных профилей

Если в файлах ~/.aws/config и ~/.aws/credentials настроено несколько профилей, можно явно указать нужный профиль при создании сессии:

    
import boto3 session = boto3.Session(profile_name="myprofile") s3 = session.client("s3")

Это удобно, если один и тот же код используется для работы с несколькими бакетами или окружениями.

Пример

Рассмотрим, как при помощи SDK выполнять базовые операции с объектами. В этом примере скрипт:

  • загружает файл в бакет;
  • выводит список всех объектов;
  • скачивает загруженный файл под другим именем;
  • удаляет объект из хранилища.

Предварительно создайте файл с именем example.txt в той же директории, где находится скрипт.

Код скрипта:

    
import boto3 import os bucket_name = "имя_бакета" endpoint_url = "https://s3.twcstorage.ru" local_upload_path = "example.txt" s3_key = "example.txt" local_download_path = "downloaded_example.txt" # Создание клиента S3 s3 = boto3.client("s3", endpoint_url=endpoint_url) # 1. Загрузка файла в бакет if os.path.exists(local_upload_path): print(f"Загрузка файла {local_upload_path} в бакет...") s3.upload_file(local_upload_path, bucket_name, s3_key) print("Загрузка завершена.") else: print(f"Файл {local_upload_path} не найден. Пропуск загрузки.") # 2. Получение списка объектов в бакете print("\nСодержимое бакета:") paginator = s3.get_paginator("list_objects_v2") for page in paginator.paginate(Bucket=bucket_name): for obj in page.get("Contents", []): print(f"- {obj['Key']}") # 3. Скачивание файла из бакета print(f"\nСкачивание {s3_key} в {local_download_path}...") s3.download_file(bucket_name, s3_key, local_download_path) print("Скачивание завершено.") # 4. Удаление файла из бакета print(f"\nУдаление {s3_key} из бакета...") s3.delete_object(Bucket=bucket_name, Key=s3_key) print("Удаление завершено.")

Дополнительные примеры использования SDK вы можете найти в нашем репозитории GitHub.

Была ли статья полезна?
Ваша оценка очень важна
Пока нет комментариев