Раздел описывает управление временной блокировкой версий объектов. Блокировка применяется к отдельной версии объекта и не влияет на другие версии.
Object Storage позволяет устанавливать временную блокировку для версий объектов вручную и включать временную блокировку в бакете по умолчанию. Подробнее о работе с блокировкой по умолчанию — в разделе «Управлять блокировкой бакета».
Блокировать версии можно через AWS S3 API и сторонние инструменты. Раздел описывает работу с блокировкой с помощью AWS CLI и AWS S3 API.
Доступ к действиям с блокировкой и заблокированными версиями зависит от режима блокировки и роли пользователя. Подробнее — в разделе «Действия и роли при блокировке».
Временную блокировку можно установить при загрузке версии объекта и для существующей версии.
Если установить на версию временную строгую блокировку (режим Compliance), никто не сможет снять блокировку, изменить ее срок, поменять режим или удалить версию объекта. Версия будет полностью защищена от удаления и перезаписи до окончания срока блокировки. Хранение данных будет тарифицироваться по стандартным правилам.
Чтобы загрузить версию объекта в бакет и одновременно заблокировать ее:
Если оно выключено или приостановлено, включите его.
Если в бакете отключена возможность блокировки, включите ее.
Выполните команду put-object с указанием параметров --object-lock-mode и --object-lock-retain-until-date:
aws s3api put-object \--bucket <bucket_name> \--key <object_key> \--body <local_file_path> \--endpoint-url https://s3.cloud.ru \--object-lock-mode <object_lock_mode> \--object-lock-retain-until-date <retain_until_date>
Где:
<bucket_name> — название бакета.
<object_key> — ключ (название) объекта.
<local_file_path> — путь к файлу с данными объекта.
<object_lock_mode> — режим временной блокировки. Возможные значения:
COMPLIANCE — для строгой блокировки.
GOVERNANCE — для управляемой блокировки.
<retain_until_date> — дата и время, до которых действует блокировка, в формате YYYY-MM-DDTHH:MM:SSZ в UTC. Дата и время должны быть в будущем.
Пример команды, которая загружает версию объекта my-object в бакет my-bucket и устанавливает для нее временную строгую блокировку до 5 апреля 2027 года, 10:00:00 по UTC:
aws s3api put-object \--bucket my-bucket \--key my-object \--body my-file.txt \--endpoint-url https://s3.cloud.ru \--object-lock-mode COMPLIANCE \--object-lock-retain-until-date 2027-04-05T10:00:00Z
Если оно выключено или приостановлено, включите его.
Если в бакете отключена возможность блокировки, включите ее.
Выполните запрос PutObject. В запросе укажите заголовки x-amz-object-lock-mode и x-amz-object-lock-retain-until-date:
x-amz-object-lock-mode — режим временной блокировки. Возможные значения:
COMPLIANCE — для строгой блокировки.
GOVERNANCE — для управляемой блокировки.
x-amz-object-lock-retain-until-date — дата и время, до которых действует блокировка, в формате YYYY-MM-DDTHH:MM:SSZ в UTC. Дата и время должны быть в будущем.
Пример запроса, который загружает в бакет my-bucket версию объекта my-object и устанавливает для нее временную строгую блокировку до 5 апреля 2027 года, 10:00:00:
PUT /my-bucket/my-object HTTP/1.1Host: s3.cloud.rux-amz-object-lock-mode: COMPLIANCEx-amz-object-lock-retain-until-date: 2027-04-05T10:00:00ZContent-Type: text/plainX-Amz-Content-Sha256: e3b0c44298fc1c149afbf4c8996fb92427ae41e46********X-Amz-Date: 20241031T112716ZAuthorization: e3b0c44298fc1c149*********Content-Length: 12345[11434 bytes of object data]
Версия объекта будет загружена в бакет с заданными настройками блокировки.
Чтобы установить временную блокировку на уже загруженную версию объекта:
Если оно выключено или приостановлено, включите его.
Если в бакете отключена возможность блокировки, включите ее.
Выполните команду:
aws s3api put-object-retention \--bucket <bucket_name> \--key <object_key> \--version-id <version_id> \--endpoint-url https://s3.cloud.ru \--retention '{"Mode": <object_lock_mode>,"RetainUntilDate": <retain_until_date>}'
Где:
<bucket_name> — название бакета.
<object_key> — ключ (название) объекта.
<version_id> — идентификатор версии объекта.
<object_lock_mode> — режим временной блокировки. Возможные значения:
COMPLIANCE — для строгой блокировки.
GOVERNANCE — для управляемой блокировки.
<retain_until_date> — дата и время, до которых действует блокировка, в формате YYYY-MM-DDTHH:MM:SSZ в UTC. Дата и время должны быть в будущем.
Пример команды, которая устанавливает строгую блокировку для объекта my-object версии 123abc в бакете my-bucket до 5 апреля 2027 года, 10:00:00 по UTC:
aws s3api put-object-retention \--bucket my-bucket \--key my-object \--version-id 123abc \--endpoint-url https://s3.cloud.ru \--retention '{"Mode": "COMPLIANCE","RetainUntilDate": "2027-04-05T10:00:00Z"}'
Версия объекта будет заблокирована до указанного срока.
Пользователи с ролью s3e.admin могут:
сократить или продлить срок управляемой блокировки (режим Governance);
сменить режим блокировки с управляемого на строгий (Compliance);
продлить срок строгой блокировки.
Чтобы изменить настройки временной блокировки:
Если оно выключено или приостановлено, включите его.
Если в бакете отключена возможность блокировки, включите ее.
Выполните команду:
aws s3api put-object-retention \--bucket <bucket_name> \--key <object_key> \--version-id <version_id> \--endpoint-url https://s3.cloud.ru \--retention '{"Mode": <object_lock_mode>,"RetainUntilDate": <retain_until_date>}' \[--bypass-governance-retention]
Где:
<bucket_name> — название бакета.
<object_key> — ключ (название) объекта.
<version_id> — идентификатор версии объекта.
<object_lock_mode> — режим временной блокировки. Возможные значения:
COMPLIANCE — для строгой блокировки.
GOVERNANCE — для управляемой блокировки.
<retain_until_date> — дата и время, до которых действует блокировка, в формате YYYY-MM-DDTHH:MM:SSZ в UTC. Дата и время должны быть в будущем.
--bypass-governance-retention — параметр, который позволяет обойти ограничения существующей блокировки. Укажите его, если сокращаете срок управляемой блокировки.
Предположим, для версии 123abc объекта my-object в бакете my-bucket установлена временная управляемая блокировка со сроком до 5 апреля 2028 года, 10:00:00. Команда ниже сокращает срок блокировки для версии до 5 апреля 2027 года, 10:00:00:
aws s3api put-object-retention \--bucket my-bucket \--key my-object \--version-id 123abc \--endpoint-url https://s3.cloud.ru \--retention '{"Mode": "GOVERNANCE","RetainUntilDate": "2027-04-05T10:00:00Z"}' \--bypass-governance-retention
Команда, которая меняет режим временной блокировки с управляемого на строгий для той же версии:
aws s3api put-object-retention \--bucket my-bucket \--key my-object \--version-id 123abc \--endpoint-url https://s3.cloud.ru \--retention '{"Mode": "COMPLIANCE","RetainUntilDate": "2027-04-05T10:00:00Z"}'
Настройки временной блокировки будут обновлены.
Чтобы снять блокировку с версии:
Выполните команду put-object-retention с параметром --bypass-governance-retention и пустым параметром --retention:
aws s3api put-object-retention \--bucket <bucket_name> \--key <object_key> \--version-id <version_id> \--endpoint-url https://s3.cloud.ru \--retention '{}'--bypass-governance-retentionГде:
<bucket_name> — название бакета;
<object_key> — ключ (название) объекта;
<version_id> — идентификатор версии объекта.
С версии объекта будет снята блокировка. Если для версии не установлена бессрочная блокировка, версию можно будет удалить или перезаписать.
Чтобы просмотреть настройки временной блокировки версии объекта:
Выполните команду:
aws s3api get-object-retention \--bucket <bucket_name> \--key <object_key> \--version-id <version_id> \--endpoint-url https://s3.cloud.ru
Где:
<bucket_name> — название бакета;
<object_key> — ключ (название) объекта;
<version_id> — идентификатор версии объекта.
Формат ответа, если блокировка установлена:
{"Retention": {"Mode": <object_lock_mode>,"RetainUntilDate": <retain_until_date>}}
Где:
<object_lock_mode> — режим временной блокировки. Возможные значения:
COMPLIANCE — строгая блокировка.
GOVERNANCE — управляемая блокировка.
<retain_until_date> — дата и время, до которых действует блокировка, в формате YYYY-MM-DDTHH:MM:SSZ в UTC, например "2027-04-05T10:00:00Z" — 5 апреля 2027 года, 10:00:00.