Назад | Перейти на главную страницу

Запланированная задача AWS с данными

В настоящее время у меня есть функция лямбда, которая при вызове отправляет сообщение пользователю, который ее вызвал. Через 2 дня я хотел бы отправить дополнительное сообщение. Весь код для отправки фактических сообщений работает нормально.

Я использую Lambda из-за возможности автоматического масштабирования, и в идеале я хочу избежать необходимости настраивать отдельную базу данных для хранения userId, метки времени исходного взаимодействия (чтобы я мог определить время последующего) и следовать сообщение на 2 дня позже. Причина этого связана с масштабированием, поскольку я не уверен, когда будут пики. Это короткий проект, но он ожидает высокой вовлеченности, но в неизвестное и разное время.

Сначала я думал, что SNS вызовет другую лямбда-функцию с данными, однако с тех пор я обнаружил, что SNS не поддерживает запланированные сообщения. В идеале я бы также не хотел задействовать опрос другого сервиса. Есть ли для этого хорошие решения?

Я понимаю, что отказ от использования БД является сильным ограничением, и если мне придется использовать один, я буду использовать один, но все же без опроса было бы полезно (я думаю, я мог бы запланировать лямбда-функцию и создать индекс на временной метке в динамодб)

Недавно объявлено AWS Step Functions сервис может помочь вам реализовать то, что вы описываете. Служба может координировать выполнение компонентов вашего приложения, например, Lambda функции. Он предоставляет вам графическую консоль, где вы можете моделировать зависимости между ними и определять конечный автомат, который фиксирует рабочий процесс приложения. Вы можете найти более подробную информацию об услуге по следующим ссылкам:

AWS Step Functions

Представляем AWS Step Functions

Вернемся к твоему делу. Step Functions предоставляет вам 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
    }
  }
}