AWS — Criando função Lambda que converte uma Url em PDF
Aprenda a criar uma API Gateway na AWS para realizar conversões de URLs para PDFs de forma externa
![AWS — Criando função Lambda que converte uma Url em PDF](/content/images/size/w2000/2024/02/book-1659717_1920-1.jpg)
Olá Gente!
Existem muitos sites que convertem sites em PDF, porem, ou são pagos ou não funcionam bem.
Então iremos criar uma função Lambda na AWS que faz a conversão e iremos configurar a API Gateway para fazermos as conversões externamente.
Função Lambda
Acesse o painel de funções lambda:
https://us-east-1.console.aws.amazon.com/lambda/home?region=us-east-1#/functions
Clique em “Criar Função” e na janela exibida selecione “Node.js 16.x”:
Após isto, clique em “Criar Função”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-mfh7rrgss0ganrzd1f-w7w.png)
Após a função ser criada clique em “Configuração”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-l4eb21djit9vmegcp3al7g.png)
Em “Configurações Gerais” clique em “Editar”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-jmwfj3jixgp2kvrchysoaq.png)
Altere o campo “Memória” para 512 mb e o campo “Tempo Limite” para 1 minuto, e após clique em “Salvar”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-vg9vnuyaaabnrrgpcgpx2g.png)
Em “Variáveis de ambiente” clique em “Editar”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-hfr9mkn8fldglck4d8g8aa.png)
Clique em “Adicionar variáveis de ambiente” e preencha com:
- Chave: FONTCONFIG_PATH
- Valor: /opt/etc/fonts
Após clique em “Salvar”.
Volte para “Código”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-ok3eo7tp2--loodnk4h2gw.png)
Desça a janela até “Camadas” e clique em “Adicionar Camada”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-trj4mhnksxlnbr8tf5f_ww.png)
Na janela seguinte, selecione “Especifique um ARN” e preencha com:
arn:aws:lambda:us-east-1:347599033421:layer:wkhtmltopdf-0_12_6:1
Após clique em “Verificar” e depois em “Adicionar”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-jokpbnsn4rcydne2otceow.png)
Agora precisamos subir o repositório.
Para isto, acesse o repositório abaixo e faça o download do arquivo “lambda_url_to_pdf.zip”:
Volte ao Lambda e clique em “Fazer upload de” e selecione “Arquivo .zip”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-f51ntywlwyryuf6hinmkjg.png)
Agora iremos configurar um teste, para isto, clique no botão “Test”.
Na janela, preencha o “Nome do Evento” como “Teste” e preencha o Json abaixo e clique em “Salvar”:
{
"url": "https://pt.lipsum.com/feed/html",
"options": {
"page-size": "A4",
"margin-bottom": 10,
"margin-left": 10,
"margin-top": 10,
"margin-right": 10,
"viewport-size": "1280x1024",
"image-quality": 100
}
}
E agora clique em “Test” novamente, isto ira iniciar a execução do código:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-neromxzz8sgerefu2wnxya.png)
Será exibido o arquivo gerado indicando que teve sucesso:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-h_9n7xk-6bhyyww2c07ohg.png)
API Gateway
Agora iremos criar uma API para permitir a comunicação externa com a função lambda.
Acesse o módulo de API Gateway:
https://us-east-1.console.aws.amazon.com/apigateway/home?region=us-east-1#/apis
Clique em “Criar API” e depois clique em “Compilar” em “API REST”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-m6hnjxiinehprrmtsdg_rg.png)
Nesta janela, preencha um nome para sua API e mantenha os outros campos sem alteração, e depois clique em “Criar API”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-8i7azrt_a6ccniewgwqvbq.png)
Em “Recursos” clique em “Ações” e depois em “Criar Recurso”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-rv2d2qwdzgypz8vfx7tkna.png)
Preencha o “Nome do recurso” e o “Caminho do recurso” com “url_to_pdf” e clique em “Criar Recurso”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1--5bmwlcn3gdjd31edtdrrw.png)
Clique em “Ações” e depois em “Criar Método”, selecione “POST” e clique no “OK”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-pxq3490a7qovxslllwy74g.png)
Agora iremos configurar o que será feito ao fazer um “POST” para “url_to_pdf”.
Selecione “Função Lambda” e preencha o nome da função que criamos no campo “Função Lambda”, e depois clique em “Salvar”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-pzjhsutuz4an1aq9wcx_0g.png)
Será exibido um alerta de permissão, clique em “OK”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-urhw13z5chiv60c6depfrq.png)
Agora precisamos publicar a API, clique em “Ações” e depois em “Implantar API”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-emolkd4w5kptkcvrab5pra.png)
No campo “Estágio de implantação” selecione “Nome Estágio”, preencha com o nome “prod” e clique em “Implante”:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-ai4gibpbt_ttgodv0rj8qw.png)
Será exibido uma janela com o campo “Invocar URL”, esta é a URL da API:
![](https://www.palomamacetko.com.br/content/images/2024/02/1-qqap5ep5nfxboj3epkc27w.png)
Agora basta fazermos um POST para “Invocar URL” + “Método”, como neste exemplo:
https://oidx9cyjac.execute-api.us-east-1.amazonaws.com/prod/url_to_pdf
E no corpo da requisição, preenchamos com:
{
"url": "https://pt.lipsum.com/feed/html",
"options": {
"page-size": "A4",
"margin-bottom": 10,
"margin-left": 10,
"margin-top": 10,
"margin-right": 10,
"viewport-size": "1280x1024",
"image-quality": 100
}
}
Aqui precisamos configurar o campo “url“ com a url pública do PDF.
No objeto “options” podemos aplicar algumas configurações que mudam a forma como o PDF será gerado.
Em caso de Sucesso, iremos receber de resposta um Json semelhante ao abaixo:
{
"statusCode": 200,
"body":{
"Nome": "d025d412–86ca-4c2b-b7d9–3edfc58f15fd.pdf",
"Pdf": "XXXXX"
}
}
Em caso de Falha, iremos receber de resposta um Json semelhante ao abaixo:
{
"statusCode": 500,
"body":{
"Msg": "Url nao informada"
}
}
Onde o PDF é retornado em Base64 no campo “body/Pdf”.
Finalizando este artigo, pessoal! 🛑
Até mais! 👋