Ответ
Для взаимодействия с 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) и раздачи статического контента в веб-приложениях.
Ответ 18+ 🔞
Да ты посмотри, какие времена настали! Раньше файлы на дискетах таскали, а теперь, блядь, в облаках их хранят. Ну, в облаках... в этих, как их... AWS S3, ёпта. А чтобы с этим чудом техники общаться из Python, есть официальная такая штука — boto3. Библиотека, которая, по сути, твой личный раб для всех операций с бакетами и объектами. Хочешь залить, хочешь скачать, хочешь список получить — всё ей похуй, она сделает.
Что она умеет, эта мартышлюшка:
- Загрузить файл наверх (
upload_file) - Стянуть файл обратно (
download_file) - Посмотреть, что там вообще валяется (
list_objects_v2)
Смотри, как это выглядит в деле
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 # Живет ровно час, потом — хуй с горы
)
print(f"Вот твоя одноразовая ссылка, не потеряй: {url}")
А нахуя это всё? Да чтобы не быть конченым динозавром, вот зачем! На этом строится, блядь, вся автоматизация: бекапы сами делаются, данные между сервисами текут как по маслу, а статика для сайтов раздаётся с космической скоростью. В общем, без этого сейчас — просто пиздец, а не разработка.