Как программно работать с облачным хранилищем AWS S3 в Python

Ответ

Для взаимодействия с AWS S3 из Python используется официальный SDK — библиотека boto3. Она позволяет выполнять все основные операции с объектами и бакетами.

Ключевые операции:

  • Загрузка файлов (upload_file)
  • Скачивание файлов (download_file)
  • Получение списка объектов (list_objects_v2)

Пример использования boto3

import boto3

# Рекомендуется настраивать доступ через переменные окружения или IAM-роли,
# а не передавать ключи напрямую в код.
s3_client = boto3.client('s3')

BUCKET_NAME = 'my-unique-bucket-name'

# 1. Загрузка файла
s3_client.upload_file(
    Filename='local_document.txt', 
    Bucket=BUCKET_NAME, 
    Key='documents/remote_document.txt' # Имя объекта в бакете
)

# 2. Скачивание файла
s3_client.download_file(
    Bucket=BUCKET_NAME, 
    Key='documents/remote_document.txt', 
    Filename='downloaded_document.txt'
)

# 3. Генерация presigned URL
# Временная ссылка для доступа к приватному объекту
url = s3_client.generate_presigned_url(
    'get_object',
    Params={'Bucket': BUCKET_NAME, 'Key': 'documents/remote_document.txt'},
    ExpiresIn=3600 # Ссылка действительна 1 час
)
print(f"Presigned URL: {url}")

Почему это важно? Программный доступ к облачным хранилищам является основой для автоматизации бэкапов, построения конвейеров обработки данных (data pipelines) и раздачи статического контента в веб-приложениях.