https://github.com/lucaspanizio/url-shortener
Encurtador de URL Java com AWS Lambda, Amazon S3 e Amazon Api Gateway.
https://github.com/lucaspanizio/url-shortener
amazon-api-gateway amazon-s3 aws-lambda java
Last synced: about 2 months ago
JSON representation
Encurtador de URL Java com AWS Lambda, Amazon S3 e Amazon Api Gateway.
- Host: GitHub
- URL: https://github.com/lucaspanizio/url-shortener
- Owner: lucaspanizio
- License: mit
- Created: 2024-11-21T02:43:27.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-26T01:13:54.000Z (over 1 year ago)
- Last Synced: 2025-06-04T05:33:31.943Z (about 1 year ago)
- Topics: amazon-api-gateway, amazon-s3, aws-lambda, java
- Language: Java
- Homepage:
- Size: 11.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Url Shortener
Aplicação back-end em Java que utiliza AWS Lambda, Amazon S3 e Amazon API Gateway para encurtamento de URLs. A aplicação gera um código único para cada URL fornecida e também realiza o processo inverso, retornando a URL original com base no código fornecido.
☝ Pré-requisitos |
🛠️ Como configurar |
⚡Como utilizar |
📜 Licença
## ☝ Pré-Requisitos
➡️ [Ter uma conta na AWS](https://signin.aws.amazon.com/signin?client_id=arn%3Aaws%3Asignin%3A%3A%3Aconsole%2Fcanvas&redirect_uri=https%3A%2F%2Fconsole.aws.amazon.com%2Fconsole%2Fhome%3FhashArgs%3D%2523%26isauthcode%3Dtrue%26nc2%3Dh_ct%26oauthStart%3D1732579892312%26src%3Dheader-signin%26state%3DhashArgsFromTB_us-east-2_ca9e6689173b76fc&page=resolve&code_challenge=6KycKHmPxwXqzDIu0vUFPo-8kLixJnzAut9Hx4fq-3Y&code_challenge_method=SHA-256&backwards_compatible=true)
➡️ [Ter o JDK 17 ou posterior instalado](https://adoptium.net/)
## 🛠️ Como configurar
Clone este repositório
```bash
git clone https://github.com/lucaspanizio/url-shortener.git
```
Acesse o diretório da aplicação
```bash
cd url-shortener
```
Instale as dependências. Pode fazer isso por meio da IDE ou por meio de linha de comando se tiver o mvn instalado de forma global.
```bash
mvn clean install
```
Compile a aplicação. Novamente isso pode ser feito via IDE ou linha de comando.
```bash
mvn clean package
```
Configurações AWS
#### 1. Criação de um Bucket S3
Crie um bucket no **Amazon S3** com as **configurações padrão**.
---
#### 2. Criação da Função Lambda `ShortUrlGenerator`
Crie uma função Lambda chamada **`ShortUrlGenerator`** com a linguagem **Java**.
⚠️ Certifique-se de selecionar a versão do Java compatível com o projeto. Por padrão, o projeto utiliza **Java 17**, mas você pode ajustar essa configuração no arquivo `pom.xml`.
**Configurações**:
- Habilite a URL da função Lambda.
- Tipo de autenticação: **NONE** (sem autenticação).
- Utilize as demais configurações padrão.
- Modifique o manipulador da função para:
**`com.rocketseat.ShortUrlGenerator::handleRequest`**.
- Acesse o **papel de execução (IAM Role)** associado à função e **Criar política em linha** com permissões para:
- `s3:GetObject`
- `s3:PutObject`
- `s3:ListBucket`
- Especifique a ARN do bucket criado na etapa anterior.
- Compile a aplicação e faça upload do arquivo **`.jar`** gerado.
---
#### 2.1. Criação da Função Lambda `ShortUrlResolver`
Repita os passos acima para criar uma segunda função Lambda chamada **`ShortUrlResolver`**. A única diferença deve ser o **manipulador da função**, para esta função defina-o como:
**`com.rocketseat.ShortUrlResolver::handleRequest`**.
---
#### 3. Configuração de Variáveis de Ambiente
1. Para ambas as funções Lambda (`ShortUrlGenerator` e `ShortUrlResolver`), adicione uma variável de ambiente chamada **`S3_BUCKET_NAME`** e valor igual ao nome do bucket S3 definido no **passo 1**.
---
#### 4. Configuração do API Gateway
1. Crie uma instância do **Amazon API Gateway** do tipo **HTTP** com as opções padrão.
2. Configure as rotas na API Gateway:
- **POST /**:
- Integração: Função Lambda.
- ARN: **Função Lambda `ShortUrlGenerator`**.
- **GET /{urlCode}**:
- Integração: Função Lambda.
- ARN: **Função Lambda `ShortUrlResolver`**.
3. Conceda permissão em ambas as integrações ao **API Gateway** para invocar as funções Lambda.
## ⚡Como utilizar
Recebe a URL original e o timestamp em segundos da data de expiração do short code que será gerado.
Recebe como param path o short code da URL e retorna o link original.
Com o param query redirect=T você será automaticamente redirecionado para o link original.
Após o tempo de expiração estipulado ao criar o short code, a resposta será essa.
## 📜 Licença
Esse projeto está sob a licença MIT.
#### Desenvolvido por José Lucas Panizio 🖖
[](https://www.linkedin.com/in/lucaspanizio/)
[](mailto:lucaspanizio@gmail.com)