Назад | Перейти на главную страницу

Webapp с серверной частью Python. Стоит ли использовать AWS Lambda?

Я хочу создать веб-приложение с серверной частью Python. Во внешнем интерфейсе веб-приложения будет просто простое поле ввода, в которое пользователь вводит адрес. Затем на сервере я хочу очистить контент с веб-страницы по этому адресу, а затем обработать эти данные. Эта обработка данных может стать довольно сложной.

У меня довольно большой опыт работы с Python, хотя с веб-приложениями, хостингом и т. Д. У меня нет опыта. Я купил доменное имя и хостинг на namecheap, хотя я только что узнал, что, возможно, мне не нужно будет использовать их хостинг, поскольку кто-то из / r / webhosting порекомендовал мне вместо этого использовать AWS. Мне рекомендовали следовать этой методике:

  • перейти на AWS (или Azure)
  • создайте лямбда / функцию python, чтобы делать с этим запросом все, что вы хотите ...
  • поместите лямбду за API-шлюз
  • поставьте Cloudfront перед api-gateway (необязательно, но эй ..)

Я видел учебники, в которых домен namecheap указывается в экземпляре EC2. Но как мне сделать это с помощью Lambda? Это тот же принцип? Можете ли вы указать мне на какие-либо руководства, которые могли бы научить меня справляться с этим? Действительно ли Lambda - оптимальное решение для этого?

Спасибо!

Когда дело доходит до вашего вопроса о том, является ли Lambda оптимальным решением, я бы сказал, что это зависит. Некоторые очевидные преимущества Lambda заключаются в том, что она бессерверная, она масштабируется "бесконечно", если ваше приложение спроектировано для этого (https://docs.aws.amazon.com/lambda/latest/dg/scaling.html) наличие службы, которая позаботится об этом, и она ничего не стоит вам, если вы ее не используете.

Также рекомендую посмотреть на ограничения (https://docs.aws.amazon.com/lambda/latest/dg/limits.html), из которых я бы специально рассмотрел тайм-аут функции (15 минут), что важно знать, если вы планируете выполнять обработку, которая занимает больше времени.

Если вы действительно решили использовать комбинацию API Gateway / Lambda, вот несколько полезных ссылок:

Как настроить Lambda с API Gateway: https://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-with-lambda-integration.html)

Настройте API-шлюз с настраиваемым DNS-именем: https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html

Делегировать субдомен на Route 53 (DNS-сервис AWS) без миграции родительского домена: https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/CreatingNewSubdomain.html

При создании шлюза API вам будет предоставлен URL-адрес конечной точки. Таким образом, любой HTTP-запрос, попадающий в эту конечную точку, вызовет соответствующую лямбду. Конечная точка выглядит примерно так:

https://API-ID.execute-api.REGION.amazonaws.com/STAGE

Затем вы можете передать параметры (URL-адрес для очистки) либо через параметры пути, либо через параметры запроса.

Чтобы упростить задачу, инкапсулируйте шлюз API через облачный интерфейс, чтобы URL-адрес API выглядел примерно так:

https://example.com/api/v1/scrape