РАЗРАБОТКА

Четыре полезных скрипта Boto3 для работы с S3 в AWS

Узнайте о четырех практических скриптах Boto3 для эффективного управления AWS S3.

✍️ Редакция iTech News | 31.12.2025 | ⏱ 3 мин | Источник: DEV Community
Полезные скрипты Boto3 для DevOps-инженеров

AWS S3 — популярный инструмент для хранения данных в облаке, но работа с ним через консоль может быть неудобной. Автоматизация с помощью Boto3 упрощает задачи, повышая эффективность и контроль. В этой статье рассмотрим четыре практических скрипта на Python, которые помогут DevOps-инженерам добиться лучших результатов при работе с S3.

Скрипт 1: Список всех бакетов S3 с датами создания

Этот простой скрипт позволит вам получить информацию о всех ваших бакетах в S3. Он полезен для проведения аудитов и отслеживания инвентаризаций.

import boto3
s3 = boto3.client('s3')
response = s3.list_buckets()
print("S3 Buckets:n")
for bucket in response['Buckets']:
    print(f"Name: {bucket['Name']} | Created On: {bucket['CreationDate']}")

Скрипт 2: Загрузка файла в S3 с обработкой ошибок

Загрузка файлов — частая задача, и правильная обработка ошибок делает ваш скрипт более надежным для продакшена.

import boto3
from botocore.exceptions import FileNotFoundError, NoCredentialsError, ClientError
s3 = boto3.client('s3')
file_name = "test.txt"
bucket_name = "your-bucket-name"
object_name = "uploads/test.txt"
try:
    s3.upload_file(file_name, bucket_name, object_name)
    print("File uploaded successfully.")
except FileNotFoundError:
    print("The file was not found.")
except NoCredentialsError:
    print("Credentials not available.")
except ClientError as e:
    print(f"AWS Error: {e}")

Скрипт 3: Загрузка файлов из S3 с отслеживанием прогресса

Для крупных файлов важно видеть процесс загрузки. Этот скрипт отслеживает прогресс передачи данных.

import boto3
s3 = boto3.client('s3')
bucket_name = "your-bucket-name"
object_name = "large-file.zip"
file_name = "downloaded.zip"
def progress_callback(bytes_transferred):
    print(f"Transferred: {bytes_transferred} bytes")
s3.download_file(bucket_name, object_name, file_name, Callback=progress_callback)
print("Download complete.")

Скрипт 4: Программное создание и удаление бакетов S3

Автоматизация управления жизненным циклом бакетов полезна для тестирования и динамических сред. Однако перед удалением необходимо убедиться, что бакет пуст.

import boto3
from botocore.exceptions import ClientError
s3 = boto3.client('s3')
bucket_name = "my-unique-bucket-name-12345"
# Создание бакета
try:
    s3.create_bucket(Bucket=bucket_name, CreateBucketConfiguration={'LocationConstraint': 'eu-west-1'})
    print("Bucket created successfully.")
except ClientError as e:
    print(f"Error creating bucket: {e}")
# Удаление бакета
ttry:
    s3.delete_bucket(Bucket=bucket_name)
    print("Bucket deleted successfully.")
except ClientError as e:
    print(f"Error deleting bucket: {e}")

Практическое значение для разработчиков

Эти скрипты охватывают наиболее распространенные операции с S3: видимость (листинг бакетов), перемещение данных (загрузка/скачивание) и управление ресурсами (создание/удаление). Они просты, но значительно повышают автоматизацию работы с AWS. Для повышения эффективности можно добавить механизмы логирования и обработки ошибок, позволяя более эффективно работать в реальных условиях.

Следующим шагом в развитии автоматизации для S3 станет внедрение более сложных алгоритмов, таких как параллельные загрузки и дополнительные проверки целостности данных.

Поделиться: Telegram X LinkedIn