Допустим, у меня есть сайт: mysite.com
, работающий на AWS, обслуживаемый некоторыми экземплярами EC2 за балансировщиком нагрузки приложений. Подсистема балансировки нагрузки завершает работу SSL с помощью сертификата ACM.
Мне нужно направить входящие запросы на URL-адрес (пример: mysite.com/{user_id}/something/here/
) от балансировщика нагрузки и вместо этого отправить их в функцию Lambda (точнее, я хочу просто захватить тело запроса и записать его где-нибудь, а затем вернуть HTTP 200; это не обязательно должно выполняться с помощью функции Lambda) .
ALB позволяет выполнять маршрутизацию к разным целевым группам, но, похоже, они могут содержать только экземпляры EC2. В документации указано: «Вы регистрируете цели, такие как экземпляры EC2, в целевой группе» - что еще можно ли добавить не только инстансы EC2?
Я не хочу запускать собственный экземпляр haproxy и т. Д., А также не маршрутизировать их через nginx после того, как запросы проходят через ALB и попадают на веб-серверы, потому что цель этого упражнения - уменьшить количество вещей, которыми я должен управлять, а не увеличивайте их!
Есть ли способ обойти это?
Вы регистрируете цели, такие как экземпляры EC2, в целевой группе.
http://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-target-groups.html
Вы сделали проницательное наблюдение. Это интересный выбор слов ... но, по крайней мере, на данный момент, экземпляры EC2 являются единственной целью.
Экземпляр EC2, вызывающий ваши Lambda-функции или проксирующий их на API-шлюз (с Nginx или HAProxy), является разумным решением. Если вы не знакомы с использованием экземпляра в качестве прокси, вы, вероятно, будете удивлены тем, сколько трафика вы можете передать даже крошечным экземплярам, когда проксирование - это вся работа, которую они делают. (У меня есть экземпляры t2.micro и t2.nano с HAProxy, которые проксируют более 1 миллиона запросов в день, не превышая 5% ЦП).
Но если вы хотите уменьшить количество вещей, которыми вам нужно управлять, сохранить все в одном домене и отказаться от определенных путей, вы можете использовать CloudFront. Впереди ALB для маршрутизации определенных шаблонов пути в другом месте - например, на шлюз API. (Бонус: вы также можете интегрировать статические ресурсы из S3 в свой сайт с помощью этого решения. Вы даже можете направлять запросы на серверы и сервисы, внешние по отношению к AWS, путем сопоставления с шаблоном пути.) CloudFront продается как CDN, но это также случается с быть бесконечно масштабируемым обратным прокси.