Versionamento de objetos
O versionamento no S3 permite reter todas as alterações feitas nos objetos enviados a um bucket. Isso ajuda a proteger os dados contra exclusões ou sobrescritas acidentais e permite restaurar versões anteriores quando necessário.
O versionamento pode ser ativado usando diferentes clientes, como AWS CLI, S3 Browser e outros. Este artigo aborda o trabalho com versões usando AWS CLI.
Ativar versionamento Copiar link
O versionamento pode ser ativado pelo painel de controle ou usando clientes como AWS CLI, S3 Browser e outros.
Usando o Painel de Controle Copiar link
- Vá até a seção Armazenamento S3 e clique no bucket.
- Abra a aba Configurações e clique em Alterar ao lado de O histórico de versões está desativado.

-
Confirme a ativação do versionamento clicando em Ativar versionamento.
Usando AWS CLI Copiar link
Para ativar o versionamento em um bucket S3 via AWS CLI, execute:
aws s3api put-bucket-versioning --bucket <bucket_name> --versioning-configuration Status=Enabled --endpoint-url https://s3.hmstorage.netPara verificar se o versionamento está ativo:
aws s3api get-bucket-versioning --bucket <bucket_name> --endpoint-url https://s3.hmstorage.netSaída esperada:
{
"Status": "Enabled",
"MFADelete": "Disabled"
}Testar o versionamento Copiar link
Exemplo de como o versionamento funciona:
-
Crie um arquivo de teste:
echo "Version 1" > testfile.txt-
Envie para o bucket:
aws s3 cp testfile.txt s3://<bucket_name>/ --endpoint-url https://s3.hmstorage.net-
Atualize o arquivo:
echo "Version 2" > testfile.txt-
Envie novamente:
aws s3 cp testfile.txt s3://<bucket_name>/ --endpoint-url https://s3.hmstorage.netAgora o arquivo possui múltiplas versões. Para verificá-las:
aws s3api list-object-versions --bucket <bucket_name> --prefix testfile.txt --endpoint-url https://s3.hmstorage.netExemplo de saída:
{
"Versions": [
{
"Key": "testfile.txt",
"VersionId": "S7hpDH6F0RYfubNoTjin6hpBu5ewDj.",
"IsLatest": true
},
{
"Key": "testfile.txt",
"VersionId": "pdFehsuCbaPz2hNh4b9DBndfEwzjTfH",
"IsLatest": false
}
]
}Observações importantes
- Cada versão do objeto ocupa espaço no bucket.
- As versões dos objetos não são exibidas no painel de controle ou em outros clientes S3.
- Mesmo se um objeto for excluído, todas as suas versões permanecem no bucket.
Trabalhar com versões no Painel de Controle Copiar link
Para visualizar a lista de versões de um objeto:
- Vá até Armazenamento S3 e clique no bucket.
- Abra a aba Objetos.
- Clique nos três pontos ao lado do objeto e selecione Histórico de versões.
- Passe o cursor sobre uma versão para ver as ações disponíveis:
-
- Link do arquivo: gera uma URL pré-assinada para esta versão do objeto.
- Baixar: permite baixar a versão selecionada.
- Restaurar versão do objeto: torna a versão selecionada a versão atual.
- Excluir versão do objeto: ao clicar nos três pontos, permite excluir a versão escolhida.
Gerenciar versões de objetos Copiar link
Listar todas as versões de um objeto específico Copiar link
aws s3api list-object-versions --bucket <bucket_name> --prefix <object_name> --endpoint-url https://s3.hmstorage.netListar todos os objetos e suas versões Copiar link
aws s3api list-object-versions --bucket <bucket_name> --query 'Versions[*].[Key, VersionId, Size]' --endpoint-url https://s3.hmstorage.netBaixar uma versão específica de um objeto Copiar link
Para baixar uma versão específica de um objeto, use:
aws s3api get-object --bucket <bucket_name> \
--key testfile.txt \
--version-id pdFehsuCbaPz2hNh4b9DBndfEwzjTfH \
testlocalfile.txt \
--endpoint-url https://s3.hmstorage.netParâmetros:
--key: nome do objeto no bucket.--version-id: ID da versão do objeto (obtido comlist-object-versions).testlocalfile.txt: nome do arquivo local onde a versão será salva.
Restaurar uma versão específica de um objeto Copiar link
Se um objeto foi atualizado ou excluído, você pode restaurar uma versão anterior copiando-a sobre a atual:
aws s3api copy-object --bucket <bucket_name> \
--key testfile.txt \
--copy-source <bucket_name>/<object_name>?versionId=<version_id> \
--endpoint-url https://s3.hmstorage.netParâmetros:
<bucket_name>/<object_name>: caminho completo do objeto no bucket.?versionId=<version_id>: versão a ser restaurada.
Este comando criará uma nova versão no bucket idêntica à restaurada.
Excluir uma versão específica de um objeto Copiar link
Para excluir uma versão específica de um objeto:
aws s3api delete-object --bucket <bucket_name> --key <object_name> --version-id <version_id> --endpoint-url https://s3.hmstorage.net--version-id é o ID da versão do objeto a ser excluída.
Configurar exclusão automática de versões antigas Copiar link
Para evitar o acúmulo de versões antigas, você pode criar uma política de ciclo de vida de objetos.
- Crie um arquivo chamado
lifecycle.json:
{
"Rules": [
{
"ID": "DeleteOldVersions",
"Status": "Enabled",
"Filter": {},
"NoncurrentVersionExpiration": {
"NoncurrentDays": 30
}
}
]
}Essa regra exclui versões de objetos com mais de 30 dias, mantendo as versões atuais intactas.
- Aplique a política de ciclo de vida:
aws s3api put-bucket-lifecycle-configuration --bucket <bucket_name> --lifecycle-configuration file://lifecycle.json --endpoint-url https://s3.hmstorage.net- Verifique aplicação da política
aws s3api get-bucket-lifecycle-configuration --bucket <bucket_name> --endpoint-url https://s3.hmstorage.net