Я работаю над выяснением лучшего способа, чтобы Lambda запускала одноразовые задачи в указанное время.
Система, которую я представляю, в основном будет содержать события, которые нужно будет отправлять, как только событие будет получено / создано, в определенное время или как повторяющееся действие. И я хотел бы максимально использовать для этого AWS из-за масштабируемой природы.
Моя первоначальная идея заключалась в том, чтобы иметь очередь AWS SQS для отправки событий. Тогда у меня будет таблица DynamoDB для будущих событий. У меня также было бы две функции AWS Lambda, одна настройка для запуска задания cron каждые несколько минут, чтобы взять события, запланированные на ближайшие 15 минут или около того, из таблицы DynamoDB и поместить их в эту очередь AWS SQS с сообщением Настройка таймера, чтобы задержать сообщение, чтобы быть видимым в течение данного времени. Вторая лямбда-функция будет настроена и будет иметь триггер для запуска из этой очереди AWS SQS. Эта функция будет отвечать за фактическую отправку события.
Оттуда я мог бы добавить событие в очередь SQS (с таймером сообщений или без него), если его нужно будет отправить в течение следующих 15 минут. Или добавьте его в таблицу DynamoDB, если его нужно будет отправить в будущем (более 15 минут).
Самая большая проблема, которую я только что выяснил, заключается в том, что очереди AWS SQS FIFO не поддерживают таймеры сообщений для отдельных сообщений . Мне нужна очередь FIFO, потому что я хочу, чтобы эти события не отправлялись многократно или дважды не вызывать мою вторую лямбда-функцию.
Я также посмотрел задания AWS Lambda cron, и хотя вы можете планировать вызовы каждые, скажем, 5 минут, я не думаю, что это то, что я ищу, потому что я больше рассчитываю на планирование 1 раз вызов в будущем, и это будет масштабируемым. Поэтому я не думаю, что это то, что я ищу.
Любые идеи о том, как мне этого добиться, поскольку не похоже, что таймеры сообщений Amazon SQS будут работать для того, что я пытаюсь сделать?