Когда дело доходит до проектирования и кодирования функций Lambda, существует несколько рекомендуемых практик, которым следует следовать независимо от среды выполнения.

Дизайн

  • Отдельная бизнес-логика. Отделите основную бизнес-логику от функции-обработчика. Это позволяет сделать код переносимым и тестируемым.
  • Написание модульных функций.Подход с использованием модульных функций уменьшает размер пакета развертывания, что, в свою очередь, сокращает время, необходимое для загрузки и распаковки пакета перед вызовом.
  • Считайте функции не имеющими состояния:функции существуют только до тех пор, пока не есть работа, которую нужно выполнить; никакая информация о состоянии не должна сохраняться в контексте функции. Рассмотрим Amazon S3, Amazon DynamoDB и Amazon ElastiCache для хранения информации о состоянии.
  • Включайте только то, что вам нужно:Размер пакета развертывания существенно влияет на время запуска функции. Например, чтобы минимизировать размер, включите только определенные модули вместо всего AWS SDK.

Написание кода

  • Включить операторы журналирования. Включите операторы журналирования, которые записываются в CloudWatch.
  • Использовать код возврата: вернуть результат выполнения функции в Lambda.
  • Предоставьте переменные среды. Используйте переменные среды Lambda, чтобы передать конфигурацию для работы без изменений кода.
  • Добавьте секретные и справочные данные. Используйте AWS Secrets Manager для хранения конфиденциальных конфигураций, таких как учетные данные и пароли.
  • Избегайте рекурсивного кода.Рекурсивный код может привести к неконтролируемому масштабированию вызовов, что приведет к потере контроля над параллелизмом.
  • Сбор метрик с помощью Amazon CloudWatch. Используйте CloudWatch EMF для извлечения метрик из событий структурированного журнала и создания графиков и сигналов тревоги на основе значений метрик.
  • Повторное использование контекста выполнения.Когда функция начинает работу с «горячего» старта, ограничьте повторную инициализацию переменных, повторно используйте соединения, пространство tmp в качестве временного кэша, храните зависимости локально и проверяйте завершение фоновых процессов.

На простом английском языке

Спасибо, что вы являетесь частью нашего сообщества! Прежде чем уйти: