Я пытаюсь создать бессерверную службу асинхронного опроса, которая запускает асинхронный запрос данных, ждет его завершения (путем периодических попыток), а затем опрашивает ответ, как только он будет готов.
В идеале я бы инициировал запрос данных с помощью Lambda и отправил бы событие EventBridge для последующей обработки другим Lambda, который запрашивает API, чтобы узнать, готов ли ответ, а если нет — отправить новое событие в EventBridge, чтобы повторить попытку позже. Чтобы это работало, мне нужен способ заставить EventBridge ждать, прежде чем он перенаправит событие дальше. Я пытаюсь найти решение, которое не требует простоя Lambda.
Есть ли способ заставить EventBridge ждать события, прежде чем оно будет отправлено дальше? Или, в качестве альтернативы, настроить однократное запланированное событие?
Amazon SQS очереди задержки предоставляет следующие функции:
Очереди задержки позволяют отложить доставку новых сообщений в очередь на несколько секунд, например, когда ваше потребительское приложение требуется дополнительное время для обработки сообщений.
Похоже, недавно объявленные запланированные мероприятия EventBridge решат вашу проблему! Вы можете просто запланировать свое мероприятие на Date.now()
+ x секунд или около того.
Объявление в блоге: https://aws.amazon.com/blogs/compute/introduction-amazon-eventbridge-scheduler/
Документы AWS: https://docs.aws.amazon.com/scheduler/latest/UserGuide/what-is-scheduler.html
Пример доступен в этом блоге: serverlessfanatic.cloud/…