Маршрутизация bot-traffi c на другой сервер с Lambda Edge - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь перенаправить трафик c, исходящий от ботов (Google, Facebook и др. c.), На совершенно другой сервер, размещенный с помощью elasti c beanstalk на AWS.

При поиске например, я сталкиваюсь только с людьми, которые направляют свои трафики c в другое ведро S3 следующим образом:

exports.handler = (event, context, callback) => {
  const request = event.Records[0].cf.request;

  let is_crawler = undefined;
  if ('is-crawler' in request['headers']) {
    is_crawler = request['headers']['is-crawler'][0].value.toLowerCase();
  }
  if (is_crawler === 'true') {
    request.origin = {
      s3: {
        authMethod: 'origin-access-identity',
        path: '',
        domainName: 'redacted.s3-eu-west-1.amazonaws.com',
        region: 'eu-west-1,
        customHeaders: {}
      }
    };
  }
  callback(null, request);
};

Мне кажется, что я пока не понимаю объект request.origin. Я не понимаю, почему у него будет свойство, выделенное для s3? И я также не понимаю, как бы использовать этот код для маршрутизации трафика c на сервер типа api.<domainname>.com.

Кто-то решил это раньше?

1 Ответ

0 голосов
/ 28 февраля 2020

Я опубликую ответ, полученный на reddit, для этого, потому что мне, как правило, нравятся SO вопросы, которые помогут для дальнейшего использования:

Идея состоит в том, что у вас есть несколько источников, определенных в CloudFront, и вы можете динамически выбрать, на какой запрос переслать вашу функцию Lambda@Edge. Нет требования, чтобы он был перенаправлен на S3 Origin - это обычный случай использования для stati c активов или stati c веб-сайтов.

Например, если у вас есть 2 пользовательских источника, вы можете используйте это в качестве примера в качестве отправной точки: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-examples.html#lambda -examples-content-based-geo-header Вместо заголовка страны вы, вероятно, будете использовать UserAgent или удаленный IP-адрес.

https://www.reddit.com/r/aws/comments/fawh6l/routing_bottraffic_to_different_server_with/

Это помогло мне решить эту проблему.

...