Skip to Content
DocumentationCalcul EdgeAWS Lambda@Edge

AWS Lambda@Edge

L'interception du trafic au niveau de votre CDN via AWS Lambda@Edge représente l'approche la plus sécurisée et la plus économique pour exploiter ProxyTracer. En bloquant les requêtes illicites dès l'entrée sur le réseau périmétrique d'AWS, vous préservez intégralement vos serveurs d'origine contre le trafic de botnets et optimisez vos coûts de calcul.

L'Implémentation

Cette fonction s'exécute lors de l'événement CloudFront Viewer Request. Elle extrait l'adresse IP du client directement à partir de l'objet d'événement, effectue une interrogation asynchrone rapide auprès d'ProxyTracer et retourne directement à l'utilisateur une réponse 403 Forbidden construite sur mesure en cas de détection d'un proxy.

export const handler = async (event) => { const request = event.Records[0].cf.request; // 1. Safely extract the client IP directly from CloudFront const clientIp = request.clientIp; // Pass through if local testing or no IP found if (!clientIp) { return request; } try { // 2. Query ProxyTracer API (Lambda Node 18+ supports native fetch) const ptResponse = await fetch(`https://api.proxytracer.com/v1/check/${clientIp}`, { method: 'GET', headers: { 'Authorization': `Bearer ${process.env.PROXYTRACER_API_KEY}` }, // Using an AbortController to enforce a strict 500ms timeout signal: AbortSignal.timeout(500) }); if (ptResponse.ok) { const data = await ptResponse.json(); // 3. Drop the connection immediately if a proxy is detected if (data.proxy === true) { // Returning a custom response short-circuits the CloudFront request 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: If the API times out, allow traffic to ensure uptime console.error('ProxyTracer API Error:', error); } // 4. Traffic is clean, return the request object to continue routing to origin return request; };

Note de Déploiement : Assurez-vous impérativement de déployer cette fonction Lambda dans la région us-east-1, car AWS CloudFront exige que l'ensemble des fonctions Lambda@Edge y soient initiées avant d'être répliquées mondialement sur son réseau.

Last updated on