Копирование всех объектов из одного бакета в другой
- AWS CLI
- Python API
Если AWS CLI еще не установлен, установите и настройте его. Для работы с объектным хранилищем используйте команды s3api и s3.
AWS CLI. Копирование всех объектов из одного бакета в другой
В терминале выполните команду:
aws s3 cp --recursive s3://<bucket_name_old> s3://<bucket_name_new>
Укажите:
<bucket_name_old> — имя исходного бакета;
<bucket_name_new> — имя целевого бакета.
Подробнее об объектах см. в статье Об объектах.
Boto3 — это библиотека Python, предоставляющая программный интерфейс (SDK) для взаимодействия с объектным хранилищем S3. Подробности см. в документации AWS Boto3.
Python API. Копирование всех объектов из одного бакета в другой
import boto3
from botocore.exceptions import ClientError
session = boto3.session.Session(profile_name='default') #Создает сессию с использованием профиля default. Профиль находится в файле ~/.aws/credentials.
s3 = session.client('s3', endpoint_url='$endpoint')
def copy_all_objects(bucket_old, bucket_new):
paginator = s3.get_paginator('list_objects_v2')
try:
for page in paginator.paginate(Bucket=bucket_old):
for obj in page.get('Contents', []):
key = obj['Key']
copy_source = {'Bucket': bucket_old, 'Key': key}
s3.copy_object(CopySource=copy_source, Bucket=bucket_new, Key=key)
print(f"Скопирован: {key}")
except ClientError as e:
print(f"Ошибка массового копирования: {e}")
copy_all_objects('<bucket_name_old>', '<bucket_name_new>')
Укажите:
<bucket_name_old> — имя исходного бакета;
<bucket_name_new> — имя целевого бакета.
Подробнее об объектах см. в статье Об объектах.