Безсерверные лямбды-AWS в докере для развертывания OnPremises - PullRequest
0 голосов
/ 11 октября 2018

Я ищу это в течение нескольких дней, нашел несколько подходов, таких как Serverless или Localstack, но я действительно хотел бы иметь возможность кодировать все, используя AWS API Gateway и Lambdas для облачной версии моего программного обеспечения.(что решено), а не управлять моим развертыванием.

Тогда ...

Клиент хочет разместить его копию в своей собственной частной сети, поэтому ... Я хочу использовать тот же самый лямбда-код (который не использует другие«Волшебные» сервисы AWS, такие как DynamoDB ... только «обычные» зависимости), внедряющие его в контейнер с программным обеспечением, подобным «шлюзу API» (возможно, в python / flask, анализирующем экспортированную конфигурацию шлюза API?).

Я готов построить этот слой, если не появится лучшая идея.Таким образом, я смогу поместить свои лямбды в папку, скажем, «aws_lambda», и мой контейнер будет знать, как преобразовать полезную нагрузку HTTP в полезную нагрузку события AWS, импортировать модуль, вызвать «lambda_handler» ... и, надеюсь, этоЭто.Наличие другого контейнера с MySQL и другого с Nginx (эмуляция CloudFront для статического веб-сайта), и я буду готов.Целое решение в банке.

Есть предложения?Я сумасшедший?

Кто-нибудь знает какое-нибудь существующее программное решение для решения этой проблемы?

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Если вы хотите использовать AWS SAM , AWS SAM CLI предлагает то, что вы ищете.

AWS SAM CLI реализует свой собственный APIШлюз эквивалентен и выполняет функции AWS Lambda в контейнерах Docker.Хотя он в основном предназначен для тестирования, я не вижу никакой причины, почему вы не сможете использовать его и для своего варианта использования.

0 голосов
/ 11 октября 2018

@ Lovato, я использую https://github.com/lambci/docker-lambda. Это образ докера, который имитирует лямбда-среду. Кажется, что lambci поддерживает хорошую версию лямбда-образов для nodejs, java, python, .net и даже goяз.Таким образом, вы можете технически повторно использовать весь лямбда-код в докере с «лямбда-подобной» средой.Я называю это лямбда-подобным главным образом потому, что aws не полностью публикует каждую информацию о том, как работает лямбда.Но это ближайшее приближение, которое я видел.Я использую это для локальной разработки и тестирования лямбды.И я проверил след "офлайн" лямбды.Дайте мне знать, если это работает для вас.

Я предпочитаю использовать файлы докеров и создавать образы докеров для моего использования.

0 голосов
/ 11 октября 2018

Помимо различных бессерверных плагинов и локального стека, вы можете попробовать AWS SAM Cli для запуска локального API-шлюза.Команда start-api https://docs.aws.amazon.com/lambda/latest/dg/test-sam-cli.html.Это, вероятно, не масштабируется, никогда не пробовал себя, и он предназначен для тестирования.

Любопытно, что вы собираетесь сделать (преобразование лямбда-сервера в обычный флеш-сервер противоположно zappa, который представляет собой серверный пакет, который преобразует обычный флеш-сервер в лямбда-функцию и загружает ее в AWS).Если вы преуспели в своей первоначальной идее преобразования запроса фляги в лямбда-событие и хотите упаковать свой код, это можно назвать unzappa.В то время как zappa - зрелая и большая упаковка, вероятно, было бы легче «перевернуть» какую-нибудь легкую вещь, такую ​​как awsgi https://github.com/slank/awsgi/blob/master/awsgi/init.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...