AWS Step Functions: Enviar un correo desde un state

JJOC007
4 min readDec 12, 2023

Antes de ver el post te recomiendo ver primero: Introducción a AWS Step Functions usando Terraform como herramienta de infrastructura como código

En el mundo ágil y siempre conectado de hoy, la automatización y la orquestación de flujos de trabajo son fundamentales para la eficiencia operativa. AWS Step Functions es un servicio que facilita la coordinación de los componentes de aplicaciones distribuidas y microservicios utilizando flujos de trabajo visuales. Una de las características más potentes de Step Functions es su integración directa con varios servicios de AWS a través de AWS SDK. Esta funcionalidad permite a los desarrolladores construir aplicaciones complejas rápidamente, con menos código y mantenimiento. En este post, exploraremos cómo esta integración funciona, especialmente enfocándonos en cómo enviar correos electrónicos a través de Amazon Simple Email Service (SES) V2.

¿Qué es y Cómo Funciona una Integración de AWS SDK desde Step Function?

La integración de AWS SDK en Step Functions permite a los usuarios hacer llamadas directas a los servicios de AWS sin necesidad de escribir una función Lambda personalizada para la interacción. Esto significa que puedes utilizar las API de AWS directamente dentro de tu definición de máquina de estado de Step Functions.

Cuando configuras un estado en tu máquina de estado para realizar una operación de AWS SDK, simplemente especificas el servicio de AWS y la acción que deseas utilizar, junto con los parámetros necesarios para esa llamada de API. Step Functions maneja la solicitud y respuesta de la API, incluyendo los intentos de reintentos y el manejo de errores.

Documentación oficial de esto:

Casos de Uso Comunes para Este Tipo de Integración

  • Procesamiento de Datos: Ejecutar tareas como transformaciones de datos y análisis utilizando servicios como AWS Glue o Amazon EMR.
  • Automatización de Infraestructura: Orquestar cambios en la infraestructura de AWS, como actualizar stacks de AWS CloudFormation o iniciar instancias de Amazon EC2.
  • Integraciones de Aplicaciones: Comunicarse con otros servicios AWS para enviar notificaciones con Amazon SNS, colas de mensajes con Amazon SQS o almacenar archivos en Amazon S3.
  • Gestión de Usuarios: Automatizar la creación y gestión de usuarios en AWS Identity and Access Management (IAM).

Ejemplo: Enviar un Correo Electrónico con SES V2

Imaginemos que necesitas enviar correos electrónicos de confirmación a los usuarios después de que completan una acción en tu aplicación. En lugar de invocar una función Lambda que a su vez llama a SES, puedes utilizar Step Functions para llamar a SES directamente.

Aquí hay un ejemplo de cómo enviar un correo electrónico utilizando arn:aws:states:::aws-sdk:sesv2:sendEmail:

{
"StartAt": "SendEmail",
"States": {
"SendEmail": {
"Type": "Task",
"Resource": "arn:aws:states:::aws-sdk:sesv2:sendEmail",
"Parameters": {
"FromEmailAddress": "sender@example.com",
"Destination": {
"ToAddresses": ["recipient@example.com"]
},
"Content": {
"Simple": {
"Subject": {
"Data": "Your confirmation email",
"Charset": "UTF-8"
},
"Body": {
"Text": {
"Data": "Thank you for your action.",
"Charset": "UTF-8"
}
}
}
}
},
"End": true
}
}
}

En este estado SendEmail, hemos definido una tarea que utiliza el recurso arn:aws:states:::aws-sdk:sesv2:sendEmail. Los Parameters especifican el correo electrónico del remitente, el destinatario y el contenido del correo electrónico, tanto el asunto como el cuerpo.

Este enfoque simplifica la arquitectura de tu aplicación, ya que no hay necesidad de codificar y mantener una función Lambda para tareas que pueden ser manejadas directamente por Step Functions. Además, la gestión de errores y los reintentos pueden ser manejados dentro de la definición de la máquina de estado, proporcionando una solución robusta y confiable.

¿Cómo puedes saber los parámetros de una integración específica?

  1. En esta pagina https://docs.aws.amazon.com/step-functions/latest/dg/supported-services-awssdk.html encontraras las integraciones que hay habilitadas de multiples servicios de aws
  2. luego buscas la documentacion de la API de la integracion que vas a utilizar en este ejemplo se utilizó Ses V2 por lo que buscaremos en https://docs.aws.amazon.com/ses/latest/APIReference-V2/API_SendEmail.html
  3. Estando en la página de referencia buscamos la acción que queremos realizar en este caso SendEmail
  4. En este punto vamos a ver la sintaxis de la petición, vamos a ver detalles como la URL, cabeceras, cuerpo de la petición, nos vamos a enfocar en el cuerpo de la peticion:

5. Estos mismos parámetros que vemos en el body es lo que vamos a agregar en la definición del state de nuestro state function

En resumen, la integración directa de AWS SDK en Step Functions abre un mundo de posibilidades para orquestar servicios AWS de manera eficiente y efectiva, lo que permite a los desarrolladores centrarse en la lógica de negocio en lugar de la integración de servicios.

En este repositorio veras el ejemplo listo para desplegar en terraform, no dudes en descargarlo y probarlo

Si te ha gustado este artículo no dudes en darle 👏 y ⭐ al repositorio.

Gracias!!

--

--