AWS Builder Center
O site sem servidor

O site sem servidor

S3 é um lugar para guardar arquivos. Você sobe um arquivo, ele fica lá, e você o acessa por uma URL. Sem disco para dimensionar, sem servidor para manter

Series: Minicurso | Construindo um encurtador de URL serverless na AWS (6 articles)

  1. 2
    O site sem servidor This article
cloudops
Parte da série Construindo um encurtador de URL serverless na AWS.

Como funciona

O S3 guarda objetos dentro de buckets. Um objeto é o arquivo mais seus metadados, e um bucket é o contêiner. O nome do bucket é único no mundo inteiro, não só na sua conta, e é por isso que todo tutorial manda botar um número no fim.
Duas coisas que confundem no começo:
O S3 não é um sistema de arquivos. Não existe pasta de verdade. O que parece pasta é só a barra no nome do objeto: assets/app.js é um objeto cujo nome contém uma barra. O console desenha pastinhas por conveniência.
O S3 é regional. O bucket vive numa região e é servido de lá. Para servir mais perto do usuário é preciso um CDN na frente, que é outro serviço.

Onde entra no encurtador

O S3 hospeda o frontend: o HTML, o CSS e o JavaScript que o usuário abre no navegador. Nada mais.
É o jeito mais direto de entender serverless: um site estático não precisa de Nginx, de Apache, de contêiner nem de máquina. Precisa de um lugar que devolva arquivos por HTTP, que é exatamente o que o S3 faz.

Hands-on

1. Criar o bucket

Console → busque S3 → Create bucket.
  • Bucket name: url-shortener-site-SUAMATRICULA (troque pelo seu número de matrícula)
  • AWS Region: us-east-1
  • Deixe o resto no padrão → Create bucket
a tela de criação com o nome preenchido, destacando o aviso de que o nome é globalmente único
a tela de criação com o nome preenchido, destacando o aviso de que o nome é globalmente único

2. Liberar o acesso público

Por padrão a AWS bloqueia tudo. Entre no bucket → aba Permissions → seção Block public access (bucket settings) → Edit → desmarque Block all public access → marque o reconhecimento → Save changes.
O aviso em vermelho é esperado: estamos abrindo de propósito, porque é um site.

3. Subir o index.html

Aba Objects → Upload → Add files → escolha o index.html → Upload.

4. Ligar o website hosting

Aba Properties → role até Static website hosting → Edit → Enable → Index document: index.html → Save changes.
Anote a URL que aparece. É algo como http://url-shortener-site-SUAMATRICULA.s3-website-us-east-1.amazonaws.com.
a seção de Static website hosting já habilitada, com a URL visível
a seção de Static website hosting já habilitada, com a URL visível

O que deu errado (e por quê)

403 ao abrir a URL. Esse pega quase todo mundo na primeira vez, e a causa costuma ser a mesma: você desmarcou o Block Public Access mas não criou a policy.
São dois controles diferentes, e isso é proposital:
  • O Block Public Access é a trava de segurança. Ele não concede nada, apenas impede que você conceda.
  • A bucket policy é a permissão em si.
Destravar não abre. É como destrancar a porta sem abri-la.
403 mesmo com a policy. Confira o /* no fim do Resource. Sem ele, a policy fala sobre o bucket, não sobre os objetos dentro dele, e o que o navegador quer ler são os objetos.

5. Conceder leitura pública

Aba Permissions → Bucket policy → Edit → cole, trocando o nome:
1
2
3
4
5
6
7
8
9
10
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::url-shortener-site-SUAMATRICULA/*"
}]
}
Save changes. Agora abra a URL do passo 4.
o site carregado no navegador, com o formulário vazio
o site carregado no navegador, com o formulário vazio

Como isso sustenta serverless

Você acabou de pôr um site no ar e não existe servidor nenhum envolvido. Não há sistema operacional para atualizar, processo para reiniciar, certificado para renovar nem capacidade para dimensionar. Se amanhã mil pessoas abrirem ao mesmo tempo, não muda nada do seu lado.
E o custo acompanha o uso: você paga pelo armazenado e pelo transferido. Um site que ninguém visita custa praticamente zero, algo que não dá para fazer num servidor, que cobra por estar ligado.

O que ainda não dá para fazer

Clique em Encurtar. Não acontece nada, ou aparece um aviso de que a API não respondeu.
Faz sentido: existe uma página, e só. Não há onde guardar os links nem quem processe o pedido. É isso que vamos construir, e o próximo passo é decidir onde o dado vai morar.

Series: Minicurso | Construindo um encurtador de URL serverless na AWS (6 articles)

  1. 2
    O site sem servidor This article
Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article