Skip to Content
DocumentationComputação na Borda (Edge)AWS Lambda@Edge

AWS Lambda@Edge

Interceptar o tráfego no nível da CDN usando o AWS Lambda@Edge é a forma mais segura e econômica de usar o ProxyTracer. Ao descartar requisições maliciosas na borda da AWS, você protege completamente seus servidores de origem contra tráfego de botnets e economiza custos de computação.

A Implementação

Esta função conecta-se ao evento Viewer Request do CloudFront. Ela lê o IP do cliente diretamente do objeto de evento, faz uma busca assíncrona rápida ao ProxyTracer e retorna uma resposta 403 Forbidden construída diretamente para o usuário caso um proxy seja detectado.

export const handler = async (event) => { const request = event.Records[0].cf.request; // 1. Extraia com segurança o IP do cliente diretamente do CloudFront const clientIp = request.clientIp; // Liberar se for teste local ou se nenhum IP for encontrado if (!clientIp) { return request; } try { // 2. Consulte a API do ProxyTracer (o Lambda Node 18+ suporta fetch nativo) const ptResponse = await fetch(`https://api.proxytracer.com/v1/check/${clientIp}`, { method: 'GET', headers: { 'Authorization': `Bearer ${process.env.PROXYTRACER_API_KEY}` }, // Usando um AbortController para impor um timeout rigoroso de 500ms signal: AbortSignal.timeout(500) }); if (ptResponse.ok) { const data = await ptResponse.json(); // 3. Encerre a conexão imediatamente se um proxy for detectado if (data.proxy === true) { // Retornar uma resposta customizada interrompe a requisição no CloudFront return { status: '403', statusDescription: 'Forbidden', headers: { 'content-type': [{ key: 'Content-Type', value: 'application/json' }] }, body: JSON.stringify({ error: "Access Denied: VPN or Proxy detected." }) }; } } } catch (error) { // Fail-open: Se a API expirar por timeout, permita o tráfego para garantir a disponibilidade console.error('ProxyTracer API Error:', error); } // 4. O tráfego é legítimo, retorne o objeto da requisição para continuar o roteamento para a origem return request; };

Nota de Implantação: Certifique-se de que esta função Lambda seja implantada na região us-east-1, pois o CloudFront exige que todas as funções Lambda@Edge sejam iniciadas a partir de lá antes de serem replicadas globalmente.

Última atualização