Можно ли использовать AWS Cloudfront в качестве службы определения местоположения по IP-адресу?

#amazon-web-services #geolocation #ip #amazon-cloudfront

#amazon-web-сервисы #геолокация #ip — адрес #amazon-cloudfront

Вопрос:

Можно ли отправить Cloudfront заголовок, чтобы он просматривал IP-адрес в своей базе данных, а не IP-адрес клиента?

Например, если сервер хочет определить местоположение на основе IP-адреса, он может задать x-real-ip и x-forwarded-for , который Cloudfront будет затем использовать для поиска IP-адреса для определения местоположения.

В нынешнем виде я безуспешно пытался добавить следующие заголовки.

     r.Header.Set("x-real-ip", user-ip)
    r.Header.Set("x-forwarded-proto", user-ip)
    r.Header.Set("x-forwarded-for", user-ip)
 

Затем я создаю рассылку Cloudfront, которая пересылает CloudFront-Viewer-City , и запрос Lambda @edge viewer, который выполняет следующее.

 exports.handler = (event, context, callback) => {
    const request = event.Records[0].cf.request;
    const headers = request.headers;
    let body = "";
    let responseStatus = "200";
    if (headers["cloudfront-viewer-city"]) {
        body = headers['cloudfront-viewer-city'][0].value;
    }
    else {
        responseStatus = "500";
        body = "";
    }
    const response = {
        status: responseStatus,
        statusDescription: 'OK',
        headers: {
            'content-type': [{
                    key: 'Content-Type',
                    value: 'application/json'
                }],
            'access-control-allow-origin': [{
                    key: "access-control-allow-origin",
                    value: "*"
                }]
        },
        body: makeBody(body)
    };
    callback(null, response);
};
function makeBody(city) {
    let obj = {
        city: city,
    };
    return JSON.stringify(obj);
}
 

Фактический результат заключается в том, что IP-адрес сервера получает поиск, а не перенаправленный IP-адрес.