Копирование объекта между бакетами
- AWS CLI
- Python API
Если AWS CLI еще не установлен, установите и настройте его. Для работы с объектным хранилищем используйте команды s3api и s3.
AWS CLI. Копирование объекта между бакетами
В терминале выполните команду:
aws s3 cp s3://<bucket_name_old>/<object_name_old> s3://<bucket_name_new>/<object_name_new>
Укажите:
<bucket_name_old> — имя исходного бакета;
<object_name_old> — имя исходного объекта;
<bucket_name_new> — имя целевого бакета;
<object_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_object(bucket_old, object_old, bucket_new, object_new):
try:
copy_source = {'Bucket': bucket_old, 'Key': object_old}
s3.copy_object(CopySource=copy_source, Bucket=bucket_new, Key=object_new)
print(f"Объект скопирован: {bucket_old}/{object_old} -> {bucket_new}/{object_new}")
except ClientError as e:
print(f"Ошибка копирования: {e}")
copy_object('<bucket_name_old>', '<object_name_old>', '<bucket_name_new>', '<object_name_new>')
Укажите:
<bucket_name_old> — имя исходного бакета;
<object_name_old> — имя исходного объекта;
<bucket_name_new> — имя целевого бакета;
<object_name_new> — имя целевого объекта.
Подробнее об объектах см. в статье Об объектах.