Tarefa agendada da AWS com dados

1

Atualmente, tenho uma função em lambda que, quando invocada, envia uma mensagem para um usuário que a invocou. 2 dias depois, gostaria de enviar uma mensagem de acompanhamento. Todo o código para enviar as mensagens reais funciona bem.

Estou usando o Lambda devido às habilidades de dimensionamento automático e, idealmente, quero evitar a necessidade de configurar um banco de dados separado para armazenar o ID do usuário, data e hora da interação original (para que eu possa calcular o tempo de acompanhamento ) e mensagem de acompanhamento para 2 dias depois. A razão para isso é devido à escala, pois não tenho certeza de quando os picos serão. Este é um projeto de frame curto, mas espera um alto engajamento, mas em tempos desconhecidos e variados.

Eu inicialmente pensei sobre o SNS chamar outra função lambda com os dados, mas descobri que o SNS não suporta mensagens programadas. Idealmente, também gostaria de não envolver a consulta a outro serviço. Existem boas soluções para isso?

Eu percebo que não usar um DB é uma strong limitação e se eu tiver que usar um, então eu usarei um, mas ainda não tendo que enquete seria útil (eu acho que eu poderia agendar uma função lambda e criar um índice em o timestamp no dinamodb)

    
por TommyBs 13.01.2017 / 12:26

1 resposta

0

O serviço AWS Step Functions anunciado recentemente pode ajudá-lo a implementar o que você está descrevendo. O serviço pode coordenar a execução dos componentes da sua aplicação, o que pode ser, e. Lambda funções. Ele fornece um console gráfico onde você pode modelar dependências entre eles e definir uma máquina de estados finitos que captura o fluxo de trabalho do aplicativo. Você pode encontrar mais informações sobre o serviço nos seguintes links:

Funções do AWS Step

Anunciando as funções do AWS Step

De volta ao seu caso. As Funções de Etapa fornecem um estado Wait que atrasa a máquina de estado de continuar por um tempo especificado. Portanto, o fluxo de trabalho de seu aplicativo pode ser assim:

OestadoFirstStateexecutariaumafunçãolambdasendamessagetoauserwhoinvokedit.Então,eleesperaria2dias,representadoporwait_using_secondsstate,efinalmenteexecutariaumafunçãolambda'sendafollowupmessage',comoFinalStatestate.

DefiniçãodamáquinadeestadoescritaemAmazonStatesLanguage:

{"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
    }
  }
}
    
por 20.01.2017 / 09:59