Запланированное задание AWS с данными
В настоящее время у меня есть функция в лямбда, которая при вызове отправляет сообщение пользователю, который его вызвал. Через 2 дня я хотел бы отправить сообщение. Весь код для отправки реальных сообщений работает нормально.
Я использую Lambda из-за способности автоматического масштабирования, и в идеале я хочу избежать необходимости настраивать отдельную базу данных для хранения userId, метки времени исходного взаимодействия (чтобы я мог определить время наблюдения) и следовать сообщение на 2 дня позже. Причиной этого является масштабирование, так как я не уверен, когда будут пики. Это короткий каркасный проект, но он ожидает высокой вовлеченности, но в неизвестное, разное время.
Сначала я думал о том, чтобы SNS вызывал другую лямбда-функцию с данными, однако с тех пор я обнаружил, что SNS не поддерживает запланированные сообщения. В идеале я также хотел бы не включать опрос другой службы. Есть ли хорошие решения для этого?
Я понимаю, что не использовать БД является сильным ограничением, и если мне придется использовать его, я буду использовать его, но все же не нужно опрашивать, было бы полезно (я думаю, я мог бы запланировать лямбда-функцию и создать индекс на временной метке в dynamodb)
1 ответ
Недавно объявлено AWS Step Functions
Сервис может помочь вам реализовать то, что вы описываете. Служба может координировать выполнение компонентов вашего приложения, что может быть, например, Lambda
функции. Он предоставляет вам графическую консоль, где вы можете смоделировать зависимости между ними и определить конечный автомат, который фиксирует рабочий процесс приложения. Вы можете найти более подробную информацию об услуге по следующим ссылкам:
Объявление о шаговых функциях AWS
Вернемся к вашему делу. Шаг Функции предоставляет вам Wait
состояние, которое задерживает конечный автомат от продолжения в течение указанного времени. Таким образом, рабочий процесс вашего приложения может выглядеть следующим образом:
FirstState
Государство будет выполнять лямбда-функцию send a message to a user who invoked it
, Затем он будет ждать 2 дня, представленный wait_using_seconds
состояние, и, наконец, он будет выполнять лямбда-функцию "отправить последующее сообщение", как FinalState
государство.
Определение конечного автомата написано в Amazon States Language
:
{
"Comment": "An example of the Amazon States Language using wait states",
"StartAt": "FirstState",
"States": {
"FirstState": {
"Type": "Task",
"Resource": "arn:aws:lambda:REGION:ACCOUNT:function:FUNCTION1",
"Next": "wait_using_seconds"
},
"wait_using_seconds": {
"Type": "Wait",
"Seconds": 172800,
"Next": "FinalState"
},
"FinalState": {
"Type": "Task",
"Resource": "arn:aws:lambda:REGION:ACCOUNT:function:FUNCTION2",
"End": true
}
}
}