Cкачать объект нужной версии
- AWS CLI
- Python API
Если AWS CLI еще не установлен, установите и настройте его. Для работы с объектным хранилищем используйте команды s3api и s3.
AWS CLI. Cкачать объект нужной версии
В терминале выполните команду:
aws s3api get-object \
--bucket <bucket_name> \
--key <object_name> \
--version-id <versionid>\
<path>
Укажите:
<bucket_name> — имя бакета;
<object_name> — имя объекта;
<versionid> — уникальный идентификатор версии, которую вы хотите скачать;
<path> — путь к файлу на локальной машине .
Если не указать
--version-id, будет скачана актуальная (IsLatest) версия. Если попытаться скачатьdelete marker(в случае, если он является IsLatest), будет ошибка вида404 Not Found, так какdelete markerне содержит данных.
Подробнее о версионировании см. в статье Версионирование бакета. Подробнее о бакетах см. в статье О бакетах.
Boto3 — это библиотека Python, предоставляющая программный интерфейс (SDK) для взаимодействия с объектным хранилищем S3. Подробности см. в документации AWS Boto3.
Python API. Cкачать объект нужной версии
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 download_object_version(bucket_name, object_key, file_path, version_id=None):
try:
params = {
'Bucket': bucket_name,
'Key': object_key,
}
if version_id:
params['VersionId'] = version_id
response = s3.get_object(**params)
with open(file_path, 'wb') as f:
f.write(response['Body'].read())
print(f"Файл скачан: {file_path}")
except ClientError as e:
if e.response['Error']['Code'] == '404':
print("Объект или указанная версия не найдены (возможно, это delete marker).")
else:
print(f"Ошибка при скачивании: {e}")
download_object_version(
bucket_name='<bucket_name>',
object_key='<object_name>',
file_path='<path>',
version_id='<versionid>'
)
Укажите:
<bucket_name> — имя бакета;
<object_name> — имя объекта;
<versionid> — уникальный идентификатор версии, которую вы хотите скачать;
<path>— путь к файлу на локальной машине.
Если
version_id=None, скачивается последняя (IsLatest) версия. Если попытаться скачатьdelete marker(в случае, если он является IsLatest), будет ошибка вида404 Not Found, так какdelete markerне содержит данных.
Подробнее о версионировании см. в статье Версионирование бакета. Подробнее о бакетах см. в статье О бакетах.