Este projeto utiliza Java com Maven e Lombok implementando um serviço de encurtador de URLs utilizando AWS Lambda, API Gateway e S3 (Bucket). A ideia principal é fornecer uma maneira simples de gerar links encurtados e realizar o redirecionamento para o URL original.
-
AWS Lambda: Funções serverless para o processamento.
-
API Gateway: Gerencia as requisições HTTP e invoca as Lambdas.
-
S3: Armazenamento dos dados das URLs encurtadas.
O projeto possui duas funções principais:
-
Create: Gera uma URL encurtada e armazena os dados no S3.
-
Redirect: Redireciona o usuário para o URL original, verificando se a URL ainda é válida (com base no tempo de expiração).
A função Create recebe um URL original e um tempo de expiração em segundos, gera um código de URL curto (um UUID), e armazena as informações no S3.
A função Redirect recebe o código curto, verifica o tempo de expiração, e redireciona para o URL original.
-
Pré-requisitos:
- AWS CLI configurado com as credenciais da sua conta AWS.
- Java 21 instalado no seu computador.
- Maven instalado para compilar o código.
- Conta AWS com permissões para Lambda, S3 e API Gateway.
git clone https://github.com/seu-usuario/url-shortener.git cd url-shortener
mvn clean install
Crie duas funções Lambda: Create e Redirect.
Faça o deploy das funções utilizando o AWS CLI ou console AWS.
Configure o API Gateway para as funções Lambda.
Verifique se o bucket S3 está configurado para armazenar os dados das URLs encurtadas. O código curto gerado será armazenado como arquivos JSON no S3, onde cada arquivo conterá a URL original e o tempo de expiração.
-
Create Lambda: Responsável por gerar o código encurtado e armazenar os dados no S3.
-
Redirect Lambda: Responsável por redirecionar o usuário para o URL original.
-
Endpoint: POST /create
-
Entrada: JSON contendo o URL original e o tempo de expiração.
-
Saída: JSON com o código curto gerado.
-
Endpoint: GET /{shortUrlCode}
-
Entrada: Código da URL encurtada.
-
Saída: Redirecionamento (código HTTP 302) para a URL original.
{ "originalUrl": "https://www.exemplo.com", "expirationTime": "1734846656" }
{ "code": "42314d" }
GET /42314d
Resposta: Redireciona para "https://www.exemplo.com."
Quando o código encurtado é acessado via o API Gateway, ele chama a função Lambda de Redirect que consulta o S3 para verificar se o código existe e se o tempo de expiração não passou. Se o tempo de expiração tiver passado, retorna um código 410. Caso contrário, retorna um redirecionamento (HTTP 302) para o URL original.
Esse projeto exemplifica como utilizar as funções serverless da AWS para criar um serviço de encurtador de URLs simples, escalável e com baixo custo. Você pode expandir facilmente a aplicação, como adicionar autenticação, melhorar o processo de expiração, ou até mesmo adicionar uma interface de usuário para facilitar o uso.