Creado

Juan Robles

Step Function states-dev-email-notifications

Descripción

Este flujo gestiona el envío de correos electrónicos y los reintentos en caso de que no se haya completado la acción esperada dentro de ciertos períodos de tiempo.

  1. Verificación del tiempo de espera (Timeout?)

    • Si hay un tiempo de espera personalizado, se usa (Custom Timeout).

    • Si hay una condición especial, se espera 24 horas (Wait 24h).

    • En caso contrario, se envía el correo de inmediato (SendTemplatedEmail).

  2. Envío de correo (SendTemplatedEmail)

    • Se envía un correo electrónico usando Amazon SES.

    • Luego, se decide si se necesita un reintento (Retry?).

  3. Proceso de reintento

    • Si se debe reintentar, se espera 24h, luego 72h, 7 días y hasta 30 días si es necesario.

    • Después de cada espera, se revisa el estado con una Lambda (Check Status after X).

  4. Finalización del flujo

    • Si la acción esperada ocurre, el flujo finaliza con éxito (Success).

    • Si no ocurre tras todos los infile:///Users/jcoaks/Downloads/mermaid-diagram-2025-03-20-121900.pngtentos, se realiza un último envío y se da por terminado.

Diagrama

mermaid-diagram-2025-03-20-121900.png

stateDiagram-v2
    [*] --> Timeout?

    Timeout? --> CustomTimeout : "timeout > 0"
    Timeout? --> Wait24h : "jump > 0"
    Timeout? --> SendTemplatedEmail : Default

    CustomTimeout --> SendTemplatedEmail

    SendTemplatedEmail --> Retry?

    Retry? --> Wait24h : "retry = true"
    Retry? --> Success : Default

    Wait24h --> CheckStatusAfter24h
    CheckStatusAfter24h --> StatusAfter24h
    StatusAfter24h --> SendEmailAfter24h : "actionState = false"
    StatusAfter24h --> Success : Default

    SendEmailAfter24h --> Wait72h
    Wait72h --> CheckStatusAfter72h
    CheckStatusAfter72h --> StatusAfter72h
    StatusAfter72h --> SendEmailAfter72h : "actionState = false"
    StatusAfter72h --> Success : Default

    SendEmailAfter72h --> Wait7d
    Wait7d --> CheckStatusAfter7d
    CheckStatusAfter7d --> StatusAfter7d
    StatusAfter7d --> SendEmailAfter7d : "actionState = false"
    StatusAfter7d --> Success : Default

    SendEmailAfter7d --> Wait30d
    Wait30d --> CheckStatusAfter30d
    CheckStatusAfter30d --> StatusAfter30d
    StatusAfter30d --> SendEmailAfter30d : "actionState = false"
    StatusAfter30d --> Success : Default

    SendEmailAfter30d --> SuccessWithoutCheck
    SuccessWithoutCheck --> [*]

    Success --> [*]