Login
Login
Atualizado em 26 de February de 2026

O Object Lock é usado para proteger objetos no S3 contra exclusão e modificação por um período específico. Esse recurso garante a imutabilidade dos dados durante todo o tempo de armazenamento. O Object Lock é especialmente útil para trabalhar com arquivos de arquivo importantes, backups e outras informações críticas que precisam de proteção contra ações acidentais ou intencionais.

Criar um bucket com Object Lock

O Object Lock só pode ser ativado no momento da criação do bucket. Atualmente, esse recurso não pode ser habilitado pelo console de gerenciamento, portanto o bucket deve ser criado usando clientes ou ferramentas de terceiros. Abaixo está um exemplo de criação de bucket usando a AWS CLI.

Criar um bucket:

aws s3api create-bucket \
	--bucket object-lock-bucket \
	--endpoint-url https://s3.hmstorage.net \
	--object-lock-enabled-for-bucket

Você também pode criar um bucket com a classe de armazenamento cold:

aws s3api create-bucket \
	--bucket object-lock-bucket \
	--endpoint-url https://s3.hmstorage.net \
	--create-bucket-configuration LocationConstraint=us:us-2-cold \
	--object-lock-enabled-for-bucket

Não é possível especificar o tamanho do bucket no momento da criação. Ao criar um bucket por meio de clientes de terceiros, sempre é definido o tamanho mínimo possível: 10 GB para a classe de armazenamento standard e 1 GB para a classe de armazenamento cold. Depois que o bucket é criado, o tamanho pode ser aumentado pelo painel de controle.

Para verificar se o Object Lock está ativado, execute:

aws s3api get-object-lock-configuration \
  --bucket object-lock-bucket \
  --endpoint-url https://s3.hmstorage.net

Resposta esperada:

{
	"ObjectLockConfiguration": {
    	"ObjectLockEnabled": "Enabled"
	}
}

O Object Lock só funciona se o versionamento estiver ativado. Para verificar se o versionamento está ativo, execute:

aws s3api get-bucket-versioning \
  --bucket object-lock-bucket \
  --endpoint-url https://s3.hmstorage.net

A resposta mostrará o status do versionamento:

{
	"Status": "Enabled",
	"MFADelete": "Disabled"
}

Modos do Object Lock

O Object Lock oferece suporte a dois modos de proteção de objetos:

  • Modo COMPLIANCE: Um modo de proteção rigoroso. O objeto e suas versões não podem ser excluídos nem modificados até que o período de bloqueio expire. Mesmo com privilégios de administrador e permissões especiais, não é possível excluir os dados. Esse modo é adequado para cenários em que a imutabilidade dos dados é crítica.
  • Modo GOVERNANCE: Um modo de proteção flexível. Os objetos ficam protegidos contra exclusão e modificação, mas usuários com a permissão BypassGovernanceRetention podem excluir os dados antes que o período de bloqueio expire. Esse modo é útil para evitar exclusões acidentais.

Na implementação atual do armazenamento S3, apenas um usuário é criado com permissões completas, incluindo BypassGovernanceRetention. Portanto, ao usar o modo GOVERNANCE, esse usuário sempre poderá excluir objetos ignorando o bloqueio.

Usar o Object Lock

Vamos ver exemplos de como trabalhar com os modos COMPLIANCE e GOVERNANCE.

Modo COMPLIANCE

Fazer upload de um arquivo com bloqueio de 30 dias:

aws s3api put-object \
	--bucket object-lock-bucket \
	--key compliance-file.txt \
	--body compliance-file.txt \
	--object-lock-mode COMPLIANCE \
	--object-lock-retain-until-date "$(date -d '+30 days' --utc +%Y-%m-%dT%H:%M:%SZ)" \
	--endpoint-url https://s3.hmstorage.net

Descrição dos parâmetros:

  • --bucket: Nome do bucket para onde o objeto será enviado.
  • --key: Nome (caminho) do objeto dentro do bucket.
  • --body: Caminho para o arquivo que será enviado.
  • --object-lock-mode: Modo de bloqueio.
  • --object-lock-retain-until-date: Data de expiração do bloqueio no formato YYYY-MM-DDTHH:MM:SSZ. O objeto não poderá ser excluído antes dessa data.

Verificar se o bloqueio foi aplicado:

aws s3api get-object-retention \
  --bucket object-lock-bucket \
  --key compliance-file.txt \
  --endpoint-url https://s3.hmstorage.net

Saída esperada:

{
	"Retention": {
    	"Mode": "COMPLIANCE",
    	"RetainUntilDate": "2025-04-04T10:02:21.000000000Z"
	}
}

Agora vamos tentar excluir o objeto:

aws s3api delete-object \
  --bucket object-lock-bucket \
  --key compliance-file.txt \
  --endpoint-url https://s3.hmstorage.net

O arquivo desaparecerá da aba Objetos no painel de controle e também dos clientes de terceiros. Será criado um marcador de exclusão, mas o objeto continuará no bucket.

Verificar as versões do objeto:

aws s3api list-object-versions \
  --bucket object-lock-bucket \
  --prefix compliance-file.txt \
  --endpoint-url https://s3.hmstorage.net

A versão será mantida e um marcador de exclusão será criado. A versão excluída pode ser restaurada seguindo as instruções de recuperação.

Você não conseguirá excluir uma versão específica com um bloqueio ativo:

aws s3api delete-object \
  --bucket object-lock-bucket \
  --key compliance-file.txt \
  --version-id <VersionId_of_object> \
  --endpoint-url https://s3.hmstorage.net

Até a data de expiração do bloqueio, o comando retornará um erro:

An error occurred (AccessDenied) when calling the DeleteObject operation: forbidden by object lock

Modo GOVERNANCE

Fazer upload de um arquivo com bloqueio de 30 dias:

aws s3api put-object \
	--bucket object-lock-bucket \
	--key governance-file.txt \
	--body governance-file.txt \
	--object-lock-mode GOVERNANCE \
	--object-lock-retain-until-date "$(date -d '+30 days' --utc +%Y-%m-%dT%H:%M:%SZ)" \
	--endpoint-url https://s3.hmstorage.net

Descrição dos parâmetros:

  • --bucket: Nome do bucket para onde o objeto será enviado.
  • --key: Nome (caminho) do objeto dentro do bucket.
  • --body: Caminho para o arquivo que será enviado.
  • --object-lock-mode: Modo de bloqueio.
  • --object-lock-retain-until-date: Data de expiração do bloqueio no formato YYYY-MM-DDTHH:MM:SSZ. O objeto não poderá ser excluído antes dessa data.

Verificar se o bloqueio foi aplicado:

aws s3api get-object-retention \
  --bucket object-lock-bucket \
  --key governance-file.txt \
  --endpoint-url https://s3.hmstorage.net

Saída esperada:

{
	"Retention": {
    	"Mode": "GOVERNANCE",
    	"RetainUntilDate": "2025-04-04T10:07:44.000000000Z"
	}
}

Tentar excluir o objeto:

aws s3api list-object-versions \
  --bucket object-lock-bucket \
  --prefix governance-file.txt \
  --endpoint-url https://s3.hmstorage.net

O arquivo desaparecerá da aba Objetos no painel de controle e dos clientes de terceiros. Será criado um marcador de exclusão, mas o objeto continuará no bucket.

Verificar as versões do objeto:

aws s3api list-object-versions \
  --bucket object-lock-bucket \
  --prefix governance-file.txt \
  --endpoint-url https://s3.hmstorage.net

A versão do objeto e o marcador de exclusão estarão visíveis. A versão excluída pode ser restaurada seguindo as instruções de recuperação.

Agora vamos tentar excluir um objeto ignorando o bloqueio. Diferentemente do modo COMPLIANCE, objetos no modo GOVERNANCE podem ser excluídos antes do término do bloqueio usando a flag --bypass-governance-retention.

aws s3api delete-object \
  --bucket object-lock-bucket \
  --key governance-file.txt \
  --bypass-governance-retention \
  --version-id <VersionId_of_object> \
  --endpoint-url https://s3.hmstorage.net

Agora verifique novamente as versões do objeto:

aws s3api list-object-versions \
  --bucket object-lock-bucket \
  --prefix governance-file.txt \
  --endpoint-url https://s3.hmstorage.net

Apenas o marcador de exclusão será exibido.

Esta página foi útil?
Atualizado em 26 de February de 2026

Tem perguntas,
comentários ou preocupações?

Nossos profissionais estão disponíveis para ajudá-lo a qualquer momento,
seja para assistência ou apenas se você não souber por onde começar.
Envie-nos um e-mail
Hostman's Support