Introdução
Ative versões no S3, publique um rascunho errado, recupere os bytes anteriores e remova só suas versões.
Conclua os laboratórios anteriores do portfólio. Este ambiente fornece seus próprios recursos e capacidades anteriores necessárias. Reutilize conhecimentos, não instâncias, arquivos ou credenciais anteriores.
Relação com certificação
| Certificação | Tarefas | Prática |
|---|---|---|
| AWS Certified Cloud Practitioner (CLF-C02) | Task 3.6 | Preservar e recuperar conteúdo com versionamento S3. |
Visão geral

Preserve uma versão correta
Nesta etapa, você ativará versões e salvará um VersionId. Confirme inicialmente AURA. Uma leitura normal recebe a versão atual; VersionId seleciona uma versão específica. Confirme os produtos de skincare na capa AURA. As quatro versões iniciais são null; você criará versões novas somente de images/aura-brand.webp.
Entre no projeto.
cd /home/labex/project
Carregue e mostre o bucket.
source website.env
echo "$PORTFOLIO_BUCKET"
Ative Status=Enabled.
aws s3api put-bucket-versioning --bucket "$PORTFOLIO_BUCKET" --versioning-configuration Status=Enabled
Leia Enabled. O objeto anterior conserva null; a ativação não cria um ID novo retroativamente.
aws s3api get-bucket-versioning --bucket "$PORTFOLIO_BUCKET"
put-object envia o arquivo de body; salve e mostre ORIGINAL_VERSION. A barra invertida no fim continua o mesmo comando na linha seguinte.
ORIGINAL_VERSION=$(aws s3api put-object \
--bucket "$PORTFOLIO_BUCKET" --key images/aura-brand.webp \
--body portfolio-assets/images/aura-brand.webp --content-type image/webp \
--query VersionId --output text)
echo "$ORIGINAL_VERSION"
Confirme os produtos de skincare na capa AURA. As quatro versões iniciais são null; você criará versões novas somente de images/aura-brand.webp.
Observe a atualização errada
Nesta etapa, você publicará o rascunho deliberadamente incorreto na mesma Key.
Envie aura-draft.webp e salve DRAFT_VERSION.
DRAFT_VERSION=$(aws s3api put-object \
--bucket "$PORTFOLIO_BUCKET" --key images/aura-brand.webp \
--body aura-draft.webp --content-type image/webp \
--query VersionId --output text)
echo "$DRAFT_VERSION"
aura-draft.webp contém a imagem do disco ECHO. Ao publicar na Key AURA, a capa mostra o disco em vez de skincare. FORMA e ECHO permanecem iguais, e a versão correta anterior continua em S3. A lista mostra as versões do bucket. Observe as linhas com Key images/aura-brand.webp; as outras três Keys mantêm null.
aws s3api list-object-versions --bucket "$PORTFOLIO_BUCKET"
aura-draft.webp contém a imagem do disco ECHO. Ao publicar na Key AURA, a capa mostra o disco em vez de skincare. FORMA e ECHO permanecem iguais, e a versão correta anterior continua em S3.

Recupere a imagem anterior
Nesta etapa, você baixará a versão salva e publicará seus bytes como atuais.
get-object com version-id escolhe ORIGINAL_VERSION; o último nome é o destino local.
aws s3api get-object --bucket "$PORTFOLIO_BUCKET" --key images/aura-brand.webp --version-id "$ORIGINAL_VERSION" recovered-aura.webp
cmp sem saída confirma bytes idênticos.
cmp portfolio-assets/images/aura-brand.webp recovered-aura.webp
Envie o arquivo recuperado e salve RESTORED_VERSION.
RESTORED_VERSION=$(aws s3api put-object \
--bucket "$PORTFOLIO_BUCKET" --key images/aura-brand.webp \
--body recovered-aura.webp --content-type image/webp \
--query VersionId --output text)
echo "$RESTORED_VERSION"
Atualize: AURA volta a mostrar skincare. Baixar sozinho não altera a versão atual; publicar os bytes recuperados cria RESTORED_VERSION. FORMA, ECHO e projects.json permanecem intactos.

Limpe as versões criadas
Nesta etapa, você removerá três versões exatas, preservando null. Apagar uma Key sem ID pode adicionar delete marker em vez de apagar histórico.
Remova só RESTORED_VERSION.
aws s3api delete-object --bucket "$PORTFOLIO_BUCKET" --key images/aura-brand.webp --version-id "$RESTORED_VERSION"
Remova só DRAFT_VERSION.
aws s3api delete-object --bucket "$PORTFOLIO_BUCKET" --key images/aura-brand.webp --version-id "$DRAFT_VERSION"
Remova só ORIGINAL_VERSION criado no primeiro passo.
aws s3api delete-object --bucket "$PORTFOLIO_BUCKET" --key images/aura-brand.webp --version-id "$ORIGINAL_VERSION"
Confirme que somente null permanece. A lista mostra as versões do bucket. Observe as linhas com Key images/aura-brand.webp; as outras três Keys mantêm null.
aws s3api list-object-versions --bucket "$PORTFOLIO_BUCKET"
Encerre o servidor temporário.
aws ec2 terminate-instances --instance-ids "$INSTANCE_ID"
Espere o estado final.
aws ec2 wait instance-terminated --instance-ids "$INSTANCE_ID"
Preserve bucket, imagem original null e referências. O versionamento permanece ativo. A próxima atividade fornece outro ambiente.
Resumo
Você recuperou a imagem a partir de uma versão guardada e removeu apenas as versões do exercício.
Referências oficiais: S3 Versioning, retrieving object versions.



