Перейти к основному содержимому

Управлять блокировкой объекта

Последнее изменение:

Если у вас в бакете настроен Object Lock, вы можете управлять блокировкой объектов. Доступные действия с блокировкой зависят от типа и режима блокировки.

Управлять блокировкой объекта могут:

Временная блокировка

Проверить наличие временной блокировки

  1. Откройте CLI.

  2. Если вы хотите проверить блокировку определенной версии объекта:

    2.1. Получите идентификатор версии объекта:

    aws s3api list-object-versions --bucket <bucket_name> --prefix <path_to_object>

    Укажите:

    • <bucket_name> — имя бакета;
    • <path_to_object> — путь к объекту в бакете.

    2.2. У нужной версии объекта скопируйте идентификатор, который указан в поле VersionId.

  3. Проверьте наличие блокировки:

    aws s3api get-object-retention \
    --bucket <bucket_name> \
    --key <path_to_object> \
    --version-id <version_id>

    Укажите:

    • <bucket_name> — имя бакета;
    • <path_to_object> — путь к объекту в бакете;
    • --version-id <version_id> — опционально: укажите, чтобы проверить блокировку определенной версии объекта. Здесь <version_id> — идентификатор версии, который вы скопировали на шаге 2.2. Если не указывать, блокировка будет проверена у текущей версии объекта.

Включить временную блокировку

Если у объекта одновременно включена временная и бессрочная блокировка, приоритет будет у бессрочной блокировки.

Чтобы временная блокировка по умолчанию применялась ко всем новым объектам в бакете, используйте подраздел Включить временную блокировку по умолчанию в бакете инструкции Object Lock.

Чтобы загрузить объект сразу с блокировкой, используйте AWS CLI, подробнее в подразделе Загрузить объект инструкции AWS CLI.

  1. Откройте CLI.

  2. Если вы хотите заблокировать определенную версию объекта:

    2.1. Получите идентификатор версии объекта:

    aws s3api list-object-versions --bucket <bucket_name> --prefix <path_to_object>

    Укажите:

    • <bucket_name> — имя бакета;
    • <path_to_object> — путь к объекту в бакете.

    2.2. У нужной версии объекта скопируйте идентификатор, который указан в поле VersionId.

  3. Заблокируйте объект:

    aws s3api put-object-retention \
    --bucket <bucket_name> \
    --key <path_to_object> \
    --version-id <version_id> \
    --retention '{"Mode":"<lock_mode>","RetainUntilDate":"<date>"}'

    Укажите:

    • <bucket_name> — имя бакета;
    • <path_to_object> — путь к объекту в бакете;
    • --version-id <version_id> — опционально: укажите, чтобы заблокировать определенную версию объекта. Здесь <version_id> — идентификатор версии, который вы скопировали на шаге 2.2. Если не указывать, блокировка будет применена к текущей версии объекта;
    • <lock_mode>режим блокировки. Возможные значения — GOVERNANCE или COMPLIANCE;
    • <date> — дата, до которой объект будет заблокирован, в формате ISO 8601, например 2025-09-06T00:00:00Z. Срок блокировки объекта не может быть больше 100 лет или 36 500 дней.

Изменить срок временной блокировки

Если установлен режим блокировки:

  • Governance — срок блокировки можно сократить или продлить;
  • Compliance — срок блокировки можно только продлить.

Чтобы изменить срок блокировки, используйте подраздел Включить временную блокировку и в поле RetainUntilDate укажите новое значение.

Изменить режим временной блокировки

Можно только изменить режим блокировки Governance на Compliance.

Чтобы изменить режим блокировки, используйте подраздел Включить временную блокировку и в поле Mode укажите значение COMPLIANCE.

Отключить временную блокировку

Можно отключить только временную блокировку режима Governance.

Отключить ее может только пользователь с ролью member или пользователь с другой ролью с доступом в S3, если политика доступа разрешает ему действие s3:BypassGovernanceRetention.

  1. Откройте CLI.

  2. Если вы хотите отключить блокировку определенной версии объекта:

    2.1. Получите идентификатор версии объекта:

    aws s3api list-object-versions --bucket <bucket_name> --prefix <path_to_object>

    Укажите:

    • <bucket_name> — имя бакета;
    • <path_to_object> — путь к объекту в бакете.

    2.2. У нужной версии объекта скопируйте идентификатор, который указан в поле VersionId.

  3. Отключите блокировку:

    aws s3api put-object-retention \
    --bucket <bucket_name> \
    --key "<path_to_object>" \
    --version-id <version_id> \
    --retention '{}' \
    --bypass-governance-retention

    Укажите:

    • <bucket_name> — имя бакета;
    • <path_to_object> — путь к объекту в бакете;
    • --version-id <version_id> — опционально: укажите, чтобы отключить блокировку определенной версии объекта. Здесь <version_id> — идентификатор версии, который вы скопировали на шаге 2.2. Если не указывать, блокировка будет отключена у текущей версии объекта.
  1. Откройте CLI.

  2. Если вы хотите проверить блокировку определенной версии объекта:

    2.1. Получите идентификатор версии объекта:

    aws s3api list-object-versions --bucket <bucket_name> --prefix <path_to_object>

    Укажите:

    • <bucket_name> — имя бакета;
    • <path_to_object> — путь к объекту в бакете.

    2.2. У нужной версии объекта скопируйте идентификатор, который указан в поле VersionId.

  3. Проверьте наличие блокировки:

    aws s3api get-object-legal-hold \
    --bucket <bucket_name> \
    --key <path_to_object> \
    --version-id <version_id>

    Укажите:

    • <bucket_name> — имя бакета;
    • <path_to_object> — путь к объекту в бакете;
    • --version-id <version_id> — опционально: укажите, чтобы проверить блокировку определенной версии объекта. Здесь <version_id> — идентификатор версии, который вы скопировали на шаге 2.2. Если не указывать, блокировка будет проверена у текущей версии объекта.

Если у объекта одновременно включена временная и бессрочная блокировка, приоритет будет у бессрочной блокировки.

  1. Откройте CLI.

  2. Если вы хотите заблокировать не текущую версию объекта:

    2.1. Получите идентификатор версии объекта:

    aws s3api list-object-versions --bucket <bucket_name> --prefix <path_to_object>

    Укажите:

    • <bucket_name> — имя бакета;
    • <path_to_object> — путь к объекту в бакете.

    2.2. У нужной версии объекта скопируйте идентификатор, который указан в поле VersionId.

  3. Заблокируйте объект:

    aws s3api put-object-legal-hold \
    --bucket <bucket_name> \
    --key <path_to_object> \
    --version-id <version_id> \
    --legal-hold '{"Status": "ON"}'

    Укажите:

    • <bucket_name> — имя бакета;
    • <path_to_object> — путь к объекту в бакете;
    • --version-id <version_id> — опционально: укажите, если вы блокируете не текущую версию объекта. Здесь <version_id> — идентификатор версии, который вы скопировали на шаге 2.2. Если не указывать, блокировка будет применена к текущей версии объекта.
  1. Откройте CLI.

  2. Чтобы разблокировать не текущую версию объекта:

    2.1. Получите идентификатор заблокированной версии объекта:

    aws s3api list-object-versions --bucket <bucket_name> --prefix <path_to_object>

    Укажите:

    • <bucket_name> — имя бакета;
    • <path_to_object> — путь к объекту в бакете.

    2.2. У нужной версии объекта скопируйте идентификатор, который указан в поле VersionId.

  3. Разблокируйте объект:

    aws s3api put-object-legal-hold \
    --bucket <bucket_name> \
    --key <path_to_object> \
    --version-id <version_id> \
    --legal-hold '{"Status": "OFF"}'

    Укажите:

    • <bucket_name> — имя бакета;
    • <path_to_object> — путь к объекту в бакете;
    • --version-id <version_id> — опционально: укажите, если вы снимаете блокировку с определенной версию объекта. Здесь <version_id> — идентификатор версии, который вы скопировали на шаге 2.2. Если не указывать, блокировка будет снята с текущей версии объекта.