Держите две версии AWS Lambdas в рабочем состоянии - PullRequest
0 голосов
/ 13 января 2020

Простое объяснение моей текущей инфраструктуры: я использую AWS Lambdas (там выполняется код python), которые развертываются с помощью Gitlab CI с использованием безсерверной инфраструктуры.

Объяснение ситуации: в настоящее время у меня есть AWS Lambda, которая использует указанную c версию библиотеки (сейчас скажем, версия 1.xx). В какой-то момент эта Lambda начнет использовать новую версию этой библиотеки (скажем, 2.xx), но я хочу, чтобы обе эти лямбды все еще были развернуты и были доступны для обработки запросов.

Если в В какой-то другой момент приходит версия 3.xx библиотеки, я хочу сохранить лямбду, используя версии 3.xx и 2.xx (в основном, текущая версия и текущая версия - 1 лямбда). Давайте назовем их Lambda_NEW и Lambda_OLD.

AWS lambdas имеют понятия версий и псевдонимов, которые можно использовать, но, к сожалению, они не поддерживаются без сервера напрямую. Примечание: serverless поддерживает несколько версий (которые не могут быть названы), и существует плагин под названием serverless- aws -aliases, который может устанавливать псевдонимы для вас, но тот, который ссылается на фактические AWS версии Lambda (см. https://github.com/serverless-heaven/serverless-aws-alias/issues/148).

Есть ли у вас какие-либо идеи о том, как справиться с этим?

На данный момент моя единственная правильная мысль - сохранить две ветви (NEW и OLD), которые будут использовать две разные версии библиотеки, и каждая ветвь будет иметь свой собственный CI развертывания. Это очень противоречит интуиции, так как я не знаю, как поддерживать ветки разработки и управления. Кроме того, когда развертывать на какой стадии et c.

Также я как-то хочу, чтобы Lambda_NEW и Lambda_OLD были развернуты одновременно (например, при переходе на библиотеку 5.xx, я хочу, чтобы версия 5.xx была в NEW, а версия 4.xx в старой )

1 Ответ

1 голос
/ 14 января 2020

Я не уверен из твоего поста, но я понял, что ты хочешь способ обработки канареечного развертывания, чтобы ты мог легко откатить изменения? Если это не так, не могли бы вы отредактировать свой вопрос и дать немного больше ясности?

Если это так, я бы рекомендовал следовать этому руководству и использовать canary- Плагин развертывания , который автоматически создает псевдонимы для новых версий и позволяет определить, как трафик c перемещается между развернутыми версиями.

...