#amazon-web-services #aws-lambda
#amazon-web-services #aws-lambda
Вопрос:
Я ищу способ заставить мою лямбду обрабатывать события из очереди или шины событий. Но мне нужно убедиться, что запущен только один экземпляр lambda. Мне нужно установить предел параллелизма равным 1, чтобы убедиться, что параллелизм не выполняется для лямбды.
Если я использую SQS или Event bus в качестве источника потоковой передачи на лямбду, как я могу гарантировать, что они не запускают лямбда-код при его запуске? в противном случае моя лямбда будет легко регулироваться. Есть ли способ управлять SQS для отправки события в лямбду только тогда, когда оно простаивает?
Ответ №1:
Вы можете использовать зарезервированный параллелизм, чтобы эффективно установить ограничение параллелизма для вашей функции — см.: https://docs.aws.amazon.com/lambda/latest/dg/configuration-concurrency.html
Соответствующий отрывок:
Чтобы гарантировать, что функция всегда может достичь определенного уровня параллелизма, настройте функцию с зарезервированным параллелизмом. Когда функция зарезервировала параллелизм, никакая другая функция не может использовать этот параллелизм. Зарезервированный параллелизм также ограничивает максимальный параллелизм для функции и применяется ко всей функции в целом, включая версии и псевдонимы.
Комментарии:
1. Как я могу гарантировать, что мой лямбда-код не регулируется?
2. Я подумал, что вы просили о том, как ограничить его до одного выполнения за раз? Я не понял, что вы ищете? Если вы установите для зарезервированного параллелизма значение 1, в вашей учетной записи всегда будет доступно 1 выполнение и никогда больше. Другие функции в вашей учетной записи могут иметь до 999 (1000-1) одновременных выполнений.
3. да, вы правы, это то, о чем я прошу
4. Тогда зарезервированный параллелизм — это то, что вам нужно. Это гарантирует, что одновременно может выполняться только 1 копия.
5. да, но это задушит мою лямбду, если есть другое событие, отправленное из SQS или шины событий, верно? Есть ли у меня способ управлять SQS для отправки события только тогда, когда лямбда бездействует?