Геотаргетинг в CloudFront означает возможность доставлять контент на основе географического местоположения пользователя, получающего доступ к контенту. Это позволяет вам ориентироваться на определенные регионы или страны и настраивать доставку контента в зависимости от местоположения пользователя. Эта функция полезна для оптимизации работы веб-сайта, обеспечения соответствия местным нормам и предоставления персонализированного опыта пользователям в разных местах.
В CloudFront существует несколько способов реализации геотаргетинга. Вот несколько примеров:
-
Использование заголовков геолокации CloudFront.
CloudFront добавляет заголовки геолокации к получаемым запросам. Вы можете использовать эти заголовки в логике своего приложения, чтобы определить местоположение пользователя и соответствующим образом настроить контент. Вот пример в Node.js:const express = require('express'); const app = express(); app.get('/', (req, res) => { const country = req.headers['cloudfront-viewer-country']; if (country === 'US') { // Deliver US-specific content res.send('Welcome to the US site!'); } else { // Deliver default content res.send('Welcome!'); } }); app.listen(3000, () => { console.log('Server started on port 3000'); });
-
Использование Lambda@Edge.
Lambda@Edge позволяет запускать собственный код в периферийных расположениях CloudFront. Вы можете использовать эту функцию для реализации расширенной логики геотаргетинга. Например, вы можете создать функцию Lambda, которая считывает IP-адрес пользователя и определяет его местоположение на основе базы данных геолокации. Вот пример на Python:import json def lambda_handler(event, context): request = event['Records'][0]['cf']['request'] country = request['headers']['cloudfront-viewer-country'][0]['value'] if country == 'US': # Deliver US-specific content response = { 'status': '200', 'statusDescription': 'OK', 'body': 'Welcome to the US site!', } else: # Deliver default content response = { 'status': '200', 'statusDescription': 'OK', 'body': 'Welcome!', } return response
-
Использование поведений CloudFront.
Поведения CloudFront позволяют настраивать параметры кэширования и доставки контента на основе определенных путей или шаблонов. Вы можете создать несколько вариантов поведения с разными настройками и связать их с разными местоположениями. Например, вы можете настроить одно поведение для показа контента, предназначенного только для США, а другое — для остального мира.Вот пример настройки поведения с помощью интерфейса командной строки AWS:
aws cloudfront create-distribution --distribution-config '{ "CallerReference": "my-distribution", "DefaultCacheBehavior": { "TargetOriginId": "my-origin", "ViewerProtocolPolicy": "redirect-to-https", "ForwardedValues": { "QueryString": false, "Cookies": { "Forward": "none" }, "Headers": { "CloudFront-Viewer-Country": "true" } }, "TrustedSigners": { "Enabled": false }, "AllowedMethods": { "Quantity": 2, "Items": ["GET", "HEAD"] } }, "CacheBehaviors": { "Quantity": 2, "Items": [ { "PathPattern": "/us/*", "TargetOriginId": "my-origin", "ViewerProtocolPolicy": "redirect-to-https", "ForwardedValues": { "QueryString": false, "Cookies": { "Forward": "none" }, "Headers": { "CloudFront-Viewer-Country": "true" } }, "TrustedSigners": { "Enabled": false }, "AllowedMethods": { "Quantity": 2, "Items": ["GET", "HEAD"] } }, { "PathPattern": "/*", "TargetOriginId": "my-origin", "ViewerProtocolPolicy": "redirect-to-https", "ForwardedValues": { "QueryString": false, "Cookies": { "Forward": "none" }, "Headers": { "CloudFront-Viewer-Country": "true" } }, "TrustedSigners": { "Enabled": false }, "AllowedMethods": { "Quantity": 2, "Items": ["GET", "HEAD"] } } ] }, "Origins": { "Quantity": 1, "Items": [ { "Id": "my-origin", "DomainName": "example.com", "CustomOriginConfig": { "HTTPPort": 80, "HTTPSPort": 443, "OriginProtocolPolicy": "https-only" } } ] } }'