Подход к дымовым испытаниям для AWS Lambda - PullRequest
1 голос
/ 27 мая 2019

У меня много AWS Lambda, использующих Java 8. Мы используем Blue / Green развертывание для всех Lambda, имеющих псевдонимы Smoke / Live.Мы используем Jenkins для развертывания aws-лямбды, выполнив следующие шаги:

  1. Проверить: что означает извлечение лямбда-источника из git.
  2. Сборка и юнит тест с Junit.
  3. Покрытие кода с помощью Jacoco
  4. Разверните его с помощью псевдонима Smoke.
  5. Теперь мы хотим выполнить Smoke Test для лямбды против псевдонима Smoke
  6. Если пройдут тесты на дым, мы будем рекламировать псевдоним Smoke для псевдонима Live.

Для шага 5, не могли бы вы посоветовать, есть ли у нас подходы для проведения "теста дыма" для лямбды?

Я бы подумал, что нам нужно на самом деле выполнить саму лямбду (не junit), но если так выполняются настоящие бизнес-правила, а затем он может генерировать множество выходных данных для целей, таких как dynamicodb и s3 ...

Итак, поделитесь лучшими практиками, которые у вас есть для вашего реального проекта.Спасибо.

Я думаю, мне следует добавить специальный параметр, который будет проходить через тесты Smoke, и тогда сама лямбда имеет логику для работы с этим параметром.

1 Ответ

0 голосов
/ 28 мая 2019

Я тоже боролся с этой концепцией.

Предполагается, что вы экстернализуете свои конфигурации (например, таблицы DynamoDB, местоположения S3 и т. Д.) С помощью чего-то вроде переменных окружения или параметров SSM: в идеале у вас должны быть ваши «дымовые» или промежуточные версии Lambda для тестирования на дым (т.е. производственные ресурсы.

Одна проблема с использованием псевдонимов состоит в том, что вы не можете иметь разные переменные окружения для разных псевдонимов .

Имея это в виду, типичный подход для лямбда-тестирования дыма / интеграции состоит в том, чтобы отказаться от использования псевдонимов для развертывания промежуточных ресурсов как различных / отдельных функций от ваших производственных ресурсов.

Это можно сделать проще, если у вас есть SAM / Cloudformation шаблон, который может развертывать ваши лямбда-выражения и их зависимости, чтобы вы могли легко настроить стеки разработки, проверки дыма и производства. Вы захотите создать параметр для префикса / суффикса, который вы можете предоставить ресурсам для дифференциации различных развертываний.

Если вы удовлетворены результатами тестирования дыма, вы просто развертываете проверенную версию лямбда-кода в своих производственных лямбдах.

...