PT
EspañolEnglishFrançaisDeutschPortuguêsItaliano
Entrar Comece grátis
Lambda

Como fazer com que uma função Lambda responda a partir de um endereço web, sem montar mais nada

Explicado de raiz: o que é uma função Lambda, o que é um URL de função e como ativá-lo para que o seu código responda quando alguém abre um endereço web ou um programa o chama, com a segurança mínima para não apanhar surpresas.

⏱ 10 minutos ◎ Para todos Atualizado em 26/10/2026

Imagine um pequeno programa que só quer que se execute quando alguém o chama: receber o aviso de que um cliente pagou, processar um formulário de contacto, converter uma imagem. Não quer um servidor ligado 24 horas para isso. Para isso existe o Lambda: dá o seu código à Amazon, e a Amazon executa-o só quando é preciso e cobra-lhe só por esse bocado. Nada de máquinas para manter.

A pergunta é: como é que o chama? O mais universal é dar-lhe um endereço web, um URL como https://algo.on.aws/, de forma que qualquer navegador ou programa o possa "abrir" e o seu código responda. Este guia faz exatamente isso com a opção que o Lambda traz de série, chamada URL de função. Não é preciso instalar nem contratar mais nada.

Antes de começar: o que significa cada coisa

Função Lambda
Um pedaço de código seu (em Python, Node.js, etc.) guardado na Amazon, que se executa quando algo o chama e se desliga ao terminar. Paga por cada execução, não por ter algo ligado.
URL
Um endereço web, o que se escreve na barra do navegador. Aqui, o endereço pelo qual se pode chamar a sua função.
Pedido e resposta
Quando um navegador ou um programa abre um URL, envia um "pedido" (o que quer) e recebe uma "resposta" (o que lhe devolvem). A sua função recebe o pedido e fabrica a resposta.
Webhook
Um aviso automático que um serviço (por exemplo, a sua plataforma de pagamentos) envia para um URL seu quando acontece algo. Para o receber, precisa de um URL que responda: este guia dá-lho.
API Gateway
Outro serviço da Amazon, mais completo e mais complexo, que também serve para pôr um endereço web à frente de uma função. Durante anos era a única opção. Hoje, para a maioria dos casos simples, não é preciso, e este guia não o usa.
CORS
Uma regra de segurança dos navegadores: uma página web só pode chamar endereços de outros sites se esses sites o permitirem expressamente. Se a sua função vai ser chamada por uma página web sua, há que dizer ao Lambda que páginas o podem fazer.
Registos (logs)
O diário do que a sua função faz em cada execução: quanto demorou, se falhou e porquê. Guardam-se noutro serviço chamado CloudWatch.

Passo a passo

  1. Confirme que a sua função sabe responder a um pedido web

    Quando a função é chamada pelo seu endereço web, o Lambda entrega-lhe um pacote de dados com o pedido (o que pedia, com que dados) e espera que o seu código devolva uma resposta com duas coisas: um código de estado (200 quer dizer "tudo bem") e um corpo (o texto ou os dados que devolve). Se a sua função foi feita para outro uso, há que adaptá-la. Um exemplo mínimo, em Node.js, que responde "olá, mundo":

    export const handler = async (event) => ({
      statusCode: 200,
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ hola: "mundo" })
    });

    Se não é você quem programa, passe este parágrafo a quem o faça: saberá o que significa.

  2. Decida quem vai poder chamar a função

    É a única decisão importante do guia, e convém entendê-la bem. Há duas opções:

    • Só com credenciais da AWS (a opção chama-se AWS_IAM): só a poderá chamar um programa seu que tenha permissões na sua conta da Amazon. É a mais segura, mas um navegador normal ou um serviço externo não a poderão usar.
    • Aberta (a opção chama-se NONE): qualquer pessoa que conheça o endereço poderá chamá-la. É o que precisa se for chamada por um serviço externo (um webhook) ou por uma página web. Em troca, a segurança tem de ser posta pelo seu código: verificar uma palavra-passe ou uma assinatura em cada chamada. Vemos isso no último passo.

    Regra simples: se não sabe qual escolher, escolha a primeira. Se a função tiver de receber chamadas de fora da sua conta, escolha a segunda e não salte o último passo.

  3. Ative o endereço web

    Na consola da AWS entre em Lambda, abra a sua função e clique no separador Configuração. No menu da esquerda escolha URL da função e clique em Criar URL da função. Escolha o tipo de acesso do passo anterior.

    Se for chamada por uma página web sua a partir de outro domínio, abra CORS e escreva o endereço dessa página em "Permitir origem" (por exemplo https://miweb.com). Se puser um asterisco, qualquer site do mundo poderá chamá-la a partir do navegador; evite-o salvo se for isso que quer. Guarde. Em cima aparece o endereço novo, com este aspeto: https://xxxxxxxx.lambda-url.eu-west-1.on.aws/. Esse é o seu URL.

  4. Teste-o

    Se escolheu a opção aberta, copie o endereço e cole-o no navegador: deverá ver a resposta da sua função (no exemplo, o texto "olá, mundo"). Já está a funcionar.

    Se preferir testá-lo a partir de um terminal, no CloudShell (o ícone de terminal na barra superior da consola da AWS) escreva:

    curl -i https://xxxxxxxx.lambda-url.eu-west-1.on.aws/

    Se escolheu a opção com credenciais, o navegador dirá "Forbidden": é o esperado, porque não leva credenciais. O teste terá de ser feito pelo programa seu que a vai chamar, usando as bibliotecas da AWS, que já sabem assinar os pedidos.

  5. Veja o diário de execuções

    Separador Monitorar, botão Visualizar logs do CloudWatch. Cada chamada deixa uma anotação com o que demorou e o que o seu código tiver escrito. Se uma chamada devolver um erro, aqui verá o motivo. Um conselho que poupa dinheiro: nesse grupo de registos, ponha uma retenção de, por exemplo, 30 dias; senão, os registos guardam-se para sempre e são cobrados.

  6. Se a deixou aberta, proteja-a

    Aberta quer dizer que qualquer pessoa a pode chamar, por isso o seu código deve verificar algo em cada chamada. O normal: o serviço que lhe envia o webhook inclui uma assinatura ou uma chave secreta em cada aviso, e a sua função verifica que está correta antes de fazer seja o que for. Guarde essa chave nas variáveis de ambiente da função (separador Configuração), não escrita no código.

    E ponha um limite a quantas vezes pode executar-se ao mesmo tempo (simultaneidade reservada, em Configuração): se alguém bombardear o endereço, o limite evita que a fatura dispare.

O que pode correr mal

A página web diz algo sobre "CORS" e não recebe resposta

É o navegador a proteger o utilizador: a sua função não disse que essa página a pode chamar. Edite o URL da função, secção CORS, e acrescente o endereço exato da sua página e o tipo de pedido que usa (GET, POST). Se o seu código também devolver cabeçalhos CORS por conta própria, retire-os de um dos dois sítios: duplicados também falham.

Devolve "Forbidden" apesar de a ter deixado aberta

Falta à função a permissão que deixa que qualquer pessoa a chame. Ao criar o URL a partir da consola, ela é acrescentada sozinha; se foi criado por um programa ou um script, peça a quem o fez que acrescente a permissão lambda:InvokeFunctionUrl para o público (principal *).

A primeira chamada demora vários segundos e depois vai rápido

Chama-se "arranque a frio": se a função está há um bocado sem ser usada, a Amazon tem de a carregar de novo. Para um webhook é indiferente. Para um site com utilizadores à espera, pode reduzir-se tornando a função mais pequena ou pagando para a ter sempre pronta (simultaneidade provisionada).

Preciso que o endereço seja do meu domínio, ou de controlar quem chama e quanto

Para isso já é preciso o API Gateway, o serviço mais completo que mencionámos no início, ou pôr o CloudFront à frente. O URL de função é a via curta e para a maioria chega; quando ficar curto, vai notar.

No Simplio

No Simplio as suas funções Lambda aparecem com o seu estado e os seus registos numa lista; se estiverem em Python, Node.js ou Ruby pode editar o código, guardar com o duplo fator e testá-las no momento vendo a resposta. E dar-lhes um endereço web é um clique, com o tipo de acesso explicado em claro. Cada pessoa da sua equipa vê só as funções que lhe atribuir.

O mesmo, na AWS e no Simplio

Na consola da AWSNo Simplio
Dar o endereço web à funçãoLambda, Configuração, URL da função, tipo de acesso, CORS: 5 passosBotão "URL público" na função, com o tipo de acesso explicado: 1 clique
Testá-la e ver o que devolveuNavegador ou curl, e CloudWatch para os registosTestar a partir do Simplio vendo resposta e registos no mesmo ecrã
Mudar o códigoEditor do Lambda, sem controlo de quem lhe mexeuEditor com duplo fator ao guardar, e registo de atividade

Experimentar grátis 15 dias Ver como funciona

Tudo isto, sem a consola da AWS

O Simplio é um painel em português para gerir as suas contas AWS: máquinas, cópias programadas, bases de dados, domínios, e-mail e o que a AWS lhe cobra, com permissões por pessoa e duplo fator. Sem instalar nada nos seus servidores.

Comece grátis 15 dias, sem cartão

Já é cliente? Acesso de clientes.