AWSPreparação para certificação

Amazon S3

Entenda o Amazon S3, seus principais conceitos, padrões de arquitetura e os cenários que mais importam para a AWS Certified Solutions Architect – Associate.

O Amazon Simple Storage Service (S3) é o serviço de armazenamento de objetos da AWS.

🎯 Para a certificação

Na SAA, o S3 aparece menos como uma pergunta sobre "o que é S3" e mais como parte de uma decisão arquitetural: qual combinação de armazenamento, segurança, acesso, durabilidade, performance e custo atende ao cenário apresentado?

Ele é usado quando precisamos armazenar e recuperar grandes volumes de dados sem administrar servidores ou discos diretamente.

Mais importante do que decorar suas funcionalidades é entender qual problema arquitetural o S3 resolve e como escolher entre suas diferentes opções.

Em uma frase: S3 é armazenamento de objetos altamente durável e escalável, organizado em buckets e objetos.


Resumo

Pense no S3 como um grande repositório de objetos.

Um objeto é identificado por uma key dentro de um bucket.

Bucket
│
├── documentos/contrato.pdf
├── imagens/logo.png
└── backups/2026/database.sql

A estrutura acima parece uma árvore de diretórios, mas o S3 não é um filesystem tradicional. documentos/contrato.pdf é a key do objeto.

O S3 é especialmente útil para:

  • arquivos;
  • imagens e vídeos;
  • backups;
  • logs;
  • datasets;
  • conteúdo estático;
  • data lakes;
  • objetos que precisam ser armazenados por longos períodos.

1. Como o S3 funciona

Os três conceitos fundamentais são:

ConceitoO que representa
BucketContêiner lógico dos objetos
ObjectO dado armazenado
KeyIdentificador do objeto dentro do bucket

Podemos imaginar:

Bucket: leware-arquivos

Key: cursos/aws/s3/aula-01.pdf

Object:
    conteúdo do arquivo
    metadata

O endereço lógico do objeto é formado pelo bucket e pela key.

Importante

cursos/aws/s3/aula-01.pdf não significa que existem três diretórios.

É simplesmente a key do objeto.


2. S3 não é um filesystem

Essa distinção aparece muito em questões de arquitetura.

Em um filesystem tradicional:

diretório
    └── subdiretório
          └── arquivo

No S3:

bucket
    ├── key-a
    ├── key-b
    └── key-c

Os / presentes nas keys são convenções de nomenclatura.

O console do S3 apresenta essas keys de uma maneira semelhante a diretórios, mas isso não transforma o S3 em um filesystem tradicional.


3. Durabilidade e disponibilidade

É importante não confundir:

  • durabilidade: probabilidade de os dados não serem perdidos;
  • disponibilidade: probabilidade de o serviço estar disponível para acesso.

S3 é projetado para altíssima durabilidade.

Isso não significa que devemos ignorar arquitetura de backup, versionamento ou requisitos de recuperação.

A decisão depende do tipo de dado e do impacto de uma perda.


4. Consistência

O S3 oferece strong read-after-write consistency para operações de objetos.

Isso significa que, após uma gravação bem-sucedida, leituras posteriores do objeto refletem a gravação.

Também existe consistência forte para alterações e exclusões de objetos.

Pegadinha de prova: material antigo pode afirmar que S3 possui consistência eventual para leitura de objetos. Essa descrição está desatualizada.

A documentação atual da AWS afirma que o S3 oferece consistência forte para PUT e DELETE de objetos.


5. Storage Classes

Uma das decisões mais importantes em S3 é escolher a classe de armazenamento adequada.

A escolha depende principalmente de:

  • frequência de acesso;
  • necessidade de recuperação rápida;
  • duração do armazenamento;
  • custo.

Principais classes

ClasseCenário típico
S3 StandardAcesso frequente
S3 Intelligent-TieringPadrão de acesso desconhecido ou variável
S3 Standard-IAAcesso infrequente, mas recuperação rápida
S3 One Zone-IAAcesso infrequente e dados que podem ser recriados
S3 Glacier Instant RetrievalArquivo raramente acessado com recuperação imediata
S3 Glacier Flexible RetrievalArquivamento com recuperação que pode levar mais tempo
S3 Glacier Deep ArchiveArquivamento de longo prazo e menor custo de armazenamento

Regra mental

Acesso frequente
        ↓
S3 Standard

Padrão desconhecido
        ↓
Intelligent-Tiering

Pouco acesso + recuperação rápida
        ↓
Standard-IA

Arquivo
        ↓
Glacier

A decisão correta depende sempre dos requisitos.

Não escolha uma classe apenas porque ela possui o menor preço de armazenamento.


6. Intelligent-Tiering

O S3 Intelligent-Tiering é útil quando o padrão de acesso aos objetos é desconhecido ou muda ao longo do tempo.

O S3 pode mover os objetos entre diferentes níveis de acesso para reduzir custos.

Cenário

Imagine uma empresa que armazena milhões de documentos.

Alguns são acessados frequentemente.

Outros deixam de ser acessados durante meses.

Se não sabemos antecipadamente quais objetos serão acessados, Intelligent-Tiering pode ser uma alternativa interessante.

Como pensar na prova: se o enunciado destaca padrão de acesso desconhecido ou imprevisível, pense em Intelligent-Tiering.


7. Lifecycle

O S3 Lifecycle permite automatizar a evolução dos objetos ao longo do tempo.

Por exemplo:

Upload
  │
  │ 30 dias
  ▼
Standard-IA
  │
  │ 90 dias
  ▼
Glacier
  │
  │ 365 dias
  ▼
Expiração

Uma política de Lifecycle pode definir:

  • transição para outra storage class;
  • expiração;
  • exclusão de objetos;
  • regras baseadas em prefixos ou tags.

Cenário clássico

Uma empresa armazena logs.

Os logs são muito acessados nos primeiros dias.

Depois praticamente não são consultados.

Uma política de Lifecycle pode reduzir automaticamente o custo conforme os dados envelhecem.

Palavra-chave de prova: "automaticamente mover objetos para uma classe mais barata conforme envelhecem".


8. Versioning

O S3 Versioning permite manter múltiplas versões de um mesmo objeto.

Sem versionamento:

documento.pdf
     ↓
novo upload
     ↓
versão anterior substituída

Com versionamento:

documento.pdf
    │
    ├── versão 1
    ├── versão 2
    └── versão 3

Isso é especialmente útil para proteção contra:

  • sobrescrita acidental;
  • exclusão acidental;
  • alterações indesejadas.

Atenção

Versionamento não é backup completo por si só.

Ele ajuda a preservar versões dos objetos, mas a arquitetura de proteção de dados deve considerar os requisitos de recuperação.


9. Delete Marker

Quando o Versioning está habilitado, uma exclusão lógica pode resultar na criação de um delete marker.

Isso é importante porque a exclusão não significa necessariamente que todas as versões anteriores desapareceram.

Conceitualmente:

versão 1
versão 2
versão 3
delete marker

O delete marker passa a representar a exclusão corrente do objeto.

As versões anteriores podem continuar existindo.


10. Segurança

S3 é um dos serviços em que as questões de prova frequentemente misturam:

  • IAM;
  • bucket policy;
  • Block Public Access;
  • encryption;
  • presigned URLs.

A primeira pergunta deve ser:

Quem precisa acessar o objeto e de que maneira?


10.1 IAM

IAM pode controlar quem possui permissão para realizar operações no S3.

Exemplo conceitual:

EC2
 │
 ▼
IAM Role
 │
 ▼
S3

A aplicação não precisa armazenar access keys no código.

Uma IAM Role pode conceder as permissões necessárias.


10.2 Bucket Policy

Uma bucket policy é uma política baseada em recurso.

Ela permite definir regras de acesso diretamente no bucket.

Pode ser usada para cenários como:

  • permitir acesso de um determinado principal;
  • restringir acesso;
  • permitir acesso entre contas;
  • controlar condições específicas.

10.3 Block Public Access

Quando um bucket não deve ser público, o S3 Block Public Access é uma importante camada de proteção.

Regra prática: se o cenário não exige acesso público, não torne o bucket público.

Questões de certificação frequentemente apresentam uma aplicação que precisa acessar S3 sem exigir que o bucket inteiro seja público.

Nesse caso, procure uma solução baseada em IAM, bucket policy ou presigned URL, dependendo do cenário.


11. Encryption

O S3 oferece criptografia no lado do servidor.

Atualmente, o S3 aplica SSE-S3 como nível base de criptografia para objetos novos.

Outras opções podem ser usadas quando requisitos específicos existem, incluindo:

  • SSE-S3 — chaves gerenciadas pelo S3;
  • SSE-KMS — integração com AWS KMS;
  • SSE-C — chave fornecida pelo cliente, quando explicitamente habilitado.

SSE-S3

A AWS gerencia as chaves utilizadas para criptografar os objetos.

É uma solução simples quando não precisamos de controles específicos do KMS.

SSE-KMS

Utiliza o AWS KMS.

Pode ser escolhido quando precisamos de:

  • controle adicional sobre chaves;
  • políticas do KMS;
  • integração com requisitos de auditoria;
  • controle mais explícito sobre o ciclo de vida das chaves.

Como pensar na prova: se o requisito destaca integração com KMS ou controle de chaves, SSE-KMS costuma ser a opção relevante.


12. Presigned URLs

Uma presigned URL permite conceder acesso temporário a um objeto sem tornar o bucket público.

Exemplo:

Usuário
   │
   │ solicita download
   ▼
Aplicação
   │
   │ gera URL temporária
   ▼
Presigned URL
   │
   ▼
S3

Isso é extremamente útil para aplicações web.

Exemplo

Uma aplicação possui documentos privados.

Não queremos:

S3 público

Também não queremos enviar o arquivo inteiro através do backend.

Podemos:

  1. autenticar o usuário;
  2. verificar sua autorização;
  3. gerar uma presigned URL;
  4. permitir que o cliente baixe diretamente do S3.

A URL possui validade limitada.

Palavra-chave: acesso temporário sem tornar o bucket público.


13. Upload direto para S3

O mesmo conceito pode ser usado para upload.

Browser
   │
   │ solicita autorização
   ▼
Backend
   │
   │ gera presigned URL
   ▼
Browser
   │
   │ upload direto
   ▼
S3

Isso reduz a carga sobre o backend.

Em vez de:

Browser → Backend → S3

podemos ter:

Browser → Backend
            │
            └── presigned URL

Browser ───────────────→ S3

Esse padrão aparece frequentemente em sistemas que recebem arquivos grandes.


14. Multipart Upload

Para objetos grandes, o S3 oferece Multipart Upload.

O arquivo pode ser dividido em partes:

arquivo
   │
   ├── parte 1
   ├── parte 2
   ├── parte 3
   └── parte 4

As partes podem ser carregadas separadamente.

Depois o S3 monta o objeto final.

Isso pode melhorar:

  • desempenho;
  • paralelismo;
  • tolerância a falhas durante uploads grandes.

Se uma parte falhar, não é necessário necessariamente reenviar o objeto inteiro.


15. Static Website Hosting

S3 pode ser usado para hospedar conteúdo estático.

Exemplos:

  • HTML;
  • CSS;
  • JavaScript;
  • imagens.

Arquiteturas tradicionais podem utilizar:

Usuário
   │
   ▼
CloudFront
   │
   ▼
S3

CloudFront pode fornecer:

  • distribuição global;
  • cache;
  • menor latência;
  • integração com HTTPS.

Cuidado: "S3 hospeda site estático" não significa que S3 seja a melhor opção para qualquer aplicação web. Para uma aplicação com backend dinâmico, precisamos de outros componentes.


16. S3 + CloudFront

Um padrão arquitetural muito comum é:

             ┌──────────────┐
             │    Usuário   │
             └──────┬───────┘
                    │
                    ▼
             ┌──────────────┐
             │  CloudFront  │
             └──────┬───────┘
                    │
                    ▼
             ┌──────────────┐
             │      S3      │
             └──────────────┘

O CloudFront atua como CDN.

O S3 permanece como origem dos objetos.

Esse padrão é útil para conteúdo estático distribuído globalmente.


17. Storage Class x Lifecycle

Esses conceitos são frequentemente confundidos.

Storage Class

Define como o objeto é armazenado.

Lifecycle

Define quando uma ação deve acontecer com o objeto.

Exemplo:

Storage Class:
S3 Standard

e:

Lifecycle:
depois de 30 dias → Standard-IA
depois de 90 dias → Glacier

São conceitos diferentes, mas complementares.


18. Como escolher uma solução

Quando uma questão apresentar S3, procure primeiro o requisito.

RequisitoSolução a considerar
Acesso frequenteS3 Standard
Acesso imprevisívelIntelligent-Tiering
Acesso infrequente + recuperação rápidaStandard-IA
ArquivamentoGlacier
Mover objetos automaticamenteLifecycle
Recuperar versões anterioresVersioning
Acesso temporário privadoPresigned URL
Criptografia com controle via KMSSSE-KMS
Upload/download de arquivos grandesMultipart Upload
Conteúdo estático globalS3 + CloudFront
Acesso de aplicação AWSIAM Role

19. Como Cai na Certificação

O S3 pode aparecer em diferentes domínios do SAA-C03 porque armazenamento participa de decisões de:

  • segurança;
  • resiliência;
  • performance;
  • custo.

O guia atual do exame organiza o conteúdo em quatro domínios:

  1. Design de arquiteturas seguras — 30%
  2. Design de arquiteturas resilientes — 26%
  3. Design de arquiteturas de alto desempenho — 24%
  4. Design de arquiteturas com custo otimizado — 20%

Storage aparece explicitamente entre as tecnologias e conceitos relevantes do exame.

Isso significa que estudar S3 não deve ser tratado como decorar uma lista de features.

A prova tende a avaliar decisão arquitetural.


20. Pegadinhas importantes

"Precisamos de acesso temporário a um objeto privado."

Não torne o bucket público.

Pense em:

Presigned URL.


"O padrão de acesso aos objetos é desconhecido."

Pense em:

S3 Intelligent-Tiering.


"Objetos antigos devem ficar mais baratos automaticamente."

Pense em:

S3 Lifecycle + Storage Classes.


"A aplicação precisa acessar S3."

Não coloque access keys no código.

Pense em:

IAM Role.


"Precisamos recuperar versões anteriores."

Pense em:

S3 Versioning.


"Precisamos de controle de chaves através do KMS."

Pense em:

SSE-KMS.


"O site possui conteúdo estático distribuído globalmente."

Pense em:

S3 + CloudFront.


21. Cenário Prático

Imagine uma aplicação que recebe documentos de clientes.

Os requisitos são:

  • os documentos são privados;
  • o backend autentica os usuários;
  • alguns documentos são grandes;
  • o usuário deve conseguir fazer upload diretamente;
  • documentos antigos raramente são acessados;
  • documentos precisam permanecer disponíveis para recuperação.

Uma arquitetura possível:

                    ┌─────────────┐
                    │    Usuário  │
                    └──────┬──────┘
                           │
                           ▼
                    ┌─────────────┐
                    │   Backend   │
                    └──────┬──────┘
                           │
                   Presigned URL
                           │
                           ▼
                    ┌─────────────┐
                    │     S3      │
                    │             │
                    │  Versioning │
                    │  Lifecycle  │
                    └─────────────┘

Para arquivos grandes, o upload pode utilizar Multipart Upload.

Para reduzir custos conforme os objetos envelhecem, Lifecycle pode movê-los para classes mais econômicas.

A aplicação não precisa transportar o conteúdo inteiro do arquivo pelo backend.


22. Laboratório Prático

Atenção: recursos da AWS podem gerar cobrança. Antes de executar qualquer laboratório, verifique os preços atuais e o Free Tier disponível para sua conta.

Objetivo

Criar um bucket S3, armazenar um objeto, habilitar versionamento e observar o comportamento das versões.

Pré-requisitos

  • conta AWS;
  • acesso ao console da AWS;
  • região definida;
  • atenção aos custos.

Passos

1. Criar um bucket

No console da AWS:

S3 → Create bucket

Escolha um nome globalmente único.

Mantenha o bloqueio de acesso público habilitado.

2. Enviar um arquivo

Crie um pequeno arquivo local, por exemplo:

s3-lab.txt

Faça upload para o bucket.

3. Habilitar Versioning

Abra as propriedades do bucket e habilite:

Bucket Versioning → Enable

4. Alterar o arquivo

Modifique o conteúdo de s3-lab.txt.

Faça upload novamente usando a mesma key.

5. Observar as versões

Verifique o objeto no console e habilite a visualização das versões.

Você deverá conseguir observar que o S3 mantém versões diferentes do objeto.

Resultado esperado

O mesmo objeto terá mais de uma versão armazenada.

Isso demonstra na prática que Versioning protege contra determinadas sobrescritas e exclusões acidentais.

Limpeza

Ao terminar:

  1. remova os objetos;
  2. remova todas as versões;
  3. remova delete markers, se existirem;
  4. exclua o bucket.

Não deixe recursos desnecessários ativos.


23. Questões de Revisão

Questão 1

Uma aplicação precisa permitir que usuários façam download de objetos privados no S3 por alguns minutos. O bucket não deve ser público. Qual solução é mais adequada?

Questão 2

Uma empresa armazena milhões de objetos e não consegue prever quais serão acessados com frequência. Deseja reduzir automaticamente os custos de armazenamento. Qual opção deve ser considerada?

Questão 3

Uma aplicação precisa armazenar objetos e mover automaticamente dados antigos para classes de armazenamento mais econômicas. Qual recurso deve ser utilizado?

Questão 4

Uma aplicação executando em EC2 precisa acessar um bucket S3. A equipe deseja evitar credenciais estáticas no código. Qual solução é mais apropriada?

Questão 5

Uma equipe está desenhando o armazenamento de arquivos de uma aplicação e considera o S3 como um filesystem tradicional, com diretórios reais. Qual afirmação descreve corretamente o modelo de dados do S3?

Questão 6

Um arquiteto está avaliando os riscos de perda de dados de um bucket S3 versus os riscos de indisponibilidade do serviço. Qual afirmação distingue corretamente durabilidade e disponibilidade no contexto do S3?

Questão 7

Um material de estudo antigo afirma que o S3 possui consistência eventual para leitura de objetos recém-gravados. Qual afirmação reflete o comportamento atual documentado pela AWS?

Questão 8

Uma empresa possui dados que podem ser facilmente recriados a partir de outra fonte caso sejam perdidos (ex: thumbnails gerados de imagens originais). Esses dados são acessados esporadicamente, mas quando acessados, precisam de recuperação imediata. Qual storage class reduz custo de armazenamento sem exigir recuperação de horas?

Questão 9

Uma empresa precisa arquivar registros fiscais por 10 anos por exigência regulatória. Esses registros praticamente nunca são acessados, e quando são, um prazo de recuperação de até 12 horas é aceitável. O objetivo principal é minimizar o custo de armazenamento de longo prazo. Qual storage class é mais adequada?

Questão 10

Uma organização habilitou Versioning em um bucket para proteger contra exclusões acidentais. Um desenvolvedor apagou um objeto crítico por engano usando uma exclusão simples (sem especificar version ID). O que aconteceu com o objeto, e como recuperá-lo?

Questão 11

Duas contas AWS diferentes precisam compartilhar acesso a um mesmo bucket S3: a Conta A é dona do bucket, e a Conta B precisa poder ler objetos dele. Qual mecanismo resolve esse cenário de acesso entre contas?

Questão 12

Uma equipe de segurança quer garantir que, por padrão, nenhum bucket da conta possa se tornar acessível publicamente por engano — mesmo que alguém configure uma ACL ou bucket policy permissiva no futuro. Qual recurso do S3 atende esse requisito preventivo?

Questão 13

Uma aplicação faz upload de objetos para um bucket S3 sem especificar nenhuma configuração de criptografia. Qual é o comportamento padrão atual do S3 para esses objetos?

Questão 14

Uma empresa do setor financeiro precisa que toda operação de descriptografia de objetos em um bucket S3 fique registrada em log de auditoria, e que o acesso às chaves de criptografia possa ser controlado por política própria, independente da política do bucket. Qual opção de criptografia atende esse requisito?

Questão 15

Uma aplicação precisa fazer upload de um arquivo de 8 GB para o S3. Qual afirmação sobre esse upload está correta?

Questão 16

Uma empresa hospeda um site totalmente estático em S3 usando o recurso de Static Website Hosting e precisa que o site seja servido via HTTPS com domínio customizado. Qual arquitetura atende esse requisito?

Questão 17

Uma equipe de arquitetura está confusa sobre a diferença entre Storage Class e Lifecycle ao desenhar a política de armazenamento de um bucket. Qual afirmação descreve corretamente a diferença entre os dois conceitos?

Questão 18

Um tópico SNS publica uma notificação sempre que um novo objeto é gravado num bucket S3, mas o time quer entender melhor a integração entre os dois serviços em um cenário de arquitetura orientada a eventos. Considerando o padrão descrito ao longo deste capítulo, qual componente normalmente atua como origem (origin) num padrão de distribuição de conteúdo global junto ao S3?

Questão 19

Uma aplicação recebe uploads de arquivos grandes (vídeos de até 2 GB) diretamente de usuários finais via navegador. A equipe quer evitar que esse tráfego passe pelo backend, tanto para reduzir custo quanto para não segurar conexões longas no servidor. Qual arquitetura resolve esse requisito?

Questão 20

Uma aplicação armazena documentos privados de clientes em S3. Os requisitos são: documentos privados, backend autentica os usuários, alguns documentos são grandes, upload direto pelo usuário, documentos antigos raramente acessados, mas precisam continuar recuperáveis. Qual combinação de recursos do S3 atende a todos esses requisitos simultaneamente?

Questão 21

Uma aplicação usa criptografia SSE-C em um bucket S3, onde o cliente fornece a própria chave de criptografia a cada requisição. Qual afirmação sobre esse modelo está correta?

Questão 22

Um arquiteto está decidindo entre usar uma bucket policy ou uma política IAM para conceder a uma aplicação dentro da mesma conta AWS acesso de leitura a um bucket S3 específico. Qual afirmação compara corretamente as duas abordagens nesse cenário (mesma conta)?