Blog de Amazon Web Services (AWS)
Análisis de eventos de Amazon SES con servicios de analítica de AWS
Por Oscar Mendoza es Arquitecto de Soluciones,
Luis Eduardo Torres es Arquitecto de Soluciones y
Santiago Benavídez es Arquitecto de Soluciones en AWS
Intro
En esta publicación, describiremos el uso de los servicios de AWS, como Amazon Kinesis Firehose, Amazon Athena y Amazon QuickSight para monitorear los eventos de envío de correo electrónico de Amazon SES con la granularidad y el nivel de detalle necesarios para obtener información de sus clientes que interactúan con los correos electrónicos que les son enviados.
Hoy en día, los equipos de mercadeo que envían correos electrónicos confían en aplicaciones internas para crear sus campañas o cualquier requerimiento de comunicación, como boletines informativos o contenido promocional. A partir de esas actividades, necesitan recopilar tanta información como sea posible para analizar y mejorar su pipeline para obtener una mejor interacción con los clientes. Datos como correos rebotados, rechazados, recibidos exitosamente, retrasos en la entrega, quejas o tasa de apertura pueden ser una herramienta poderosa para entender a los clientes. Por lo general, las aplicaciones funcionan con datos agregados o de alto nivel sin registro detallado o información granular que podría ayudar a mejorar aún mejor la efectividad de sus campañas.
Amazon Simple Email Service (SES) es una herramienta inteligente para empresas que desean una solución de servicio de correo electrónico rentable, flexible y escalable para integrarse fácilmente con sus propios productos. Amazon SES proporciona métodos para controlar su actividad de envío con integración nativa con Amazon CloudWatch Metrics y también proporciona un mecanismo para recopilar los datos de eventos de envío de correos electrónicos.
En este post, te proponemos una arquitectura y una guía paso a paso para realizar un seguimiento de tus actividades de envío de correo electrónico a nivel granular, donde puedes configurar varios tipos de eventos de envío de correo electrónico, incluyendo envíos, entregas, aperturas, clics, rebotes, quejas, rechazos y retrasos en la entrega. Utilizaremos la función de conjunto de configuración (configuration sets) de Amazon SES para enviar registros detallados a nuestros servicios de análisis para almacenar, consultar y crear tableros de control para una vista detallada.
Visión general de la solución
Esta arquitectura utiliza las características integradas de Amazon SES y los servicios de analítica de AWS para proporcionar una solución rápida y rentable para abordar sus requisitos de seguimiento de correo. Se implementarán o configurarán los siguientes servicios:
- Amazon Simple Email Service (SES)
- Amazon Simple Service (S3)
- Amazon Kinesis Firehose
- Amazon Athena
- AWS Glue Data Catalog
- Amazon QuickSight
El siguiente diagrama muestra la arquitectura de la solución:
El flujo de los eventos comienza cuando un cliente utiliza Amazon SES para enviar un correo electrónico. Cada uno de esos eventos de envío se capturará mediante la característica del conjunto de configuración y los reenviará a un flujo de entrega de Kinesis Firehose para almacenar esos eventos en un bucket de Amazon S3.
Después de almacenar los eventos, se requerirá crear una base de datos y un esquema de tabla y almacenarlo en AWS Glue Data Catalog para que Amazon Athena pueda consultar correctamente esos eventos en S3. Por último, utilizaremos Amazon QuickSight para crear un tablero de control interactivo para buscar y visualizar toda su actividad de envío de correo electrónico con un nivel detallado.
Prerrequisitos
Para este recorrido, debe tener los siguientes requisitos previos:
- Una cuenta de AWS
- Dominio SES en modo de producción
- Permisos apropiados de Identity and Access Management para configurar Amazon S3, Amazon Athena, AWS Glue Data Catalog, Amazon Kinesis Firehose y Amazon Quicksight.
- Una instancia de Quicksight creada con un usuario Author
Paso a paso
Paso 1: Utilice AWS CloudFormation para implementar algunos requisitos previos adicionales
Puede comenzar con nuestra plantilla de ejemplo de AWS CloudFormation que incluye algunos requisitos previos. Esta plantilla crea un Amazon S3 Bucket, un rol de IAM necesario para acceder desde Amazon SES a Amazon Kinesis Data Firehose.
Para descargar la plantilla, utilice uno de los siguientes comandos dependiendo de su sistema operativo:
En Windows:
curl
https://raw.githubusercontent.com/aws-samples/amazon-ses-analytics-blog/main/SES-Blog-PreRequisites.yml
-o SES-Blog-PreRequisites.yml
En MacOS
wget https://raw.githubusercontent.com/aws-samples/amazon-ses-analytics-blog/main/SES-Blog-PreRequisites.yml
Para desplegar la plantilla utilice el siguiente comando en AWS CLI:
aws cloudformation deploy --template-file
./SES-Blog-PreRequisites.yml --stack-name ses-dashboard-prerequisites
--capabilities CAPABILITY_NAMED_IAM
Después de que la plantilla termine de crear recursos, verá el rol en el servicio de IAM y el flujo de entrega de Kinesis Data Firehose en la pestaña Salidas de la pila de CloudFormation. Utilizará estos recursos en los siguientes pasos.
Paso 2: Crear un conjunto de configuración en SES y establecer el conjunto de configuración predeterminado para una identidad verificada
SES puede rastrear el número de eventos de envío, entrega, apertura, clic, rebote y reclamos para cada correo electrónico que envíe. Puede utilizar la publicación de eventos para enviar información sobre estos eventos a otro servicio de AWS. En este caso vamos a enviar los eventos a Kinesis Firehose. Para ello, se requiere un conjunto de configuración.
Para crear un conjunto de configuración, siga los siguientes pasos:
- En la consola de AWS, elija Amazon Simple Email Service.
- Elija Conjuntos de configuración.
- Haga clic en Crear conjunto.
6. Una vez creado el conjunto de configuración, seleccione Destinos de eventos (Event destinations)
7. Haga clic en Agregar destino (Add destination)
8. Seleccione los tipos de eventos que desea analizar y luego haga clic en siguiente.
9. Seleccione Amazon Kinesis Data Firehose como destino, elija el flujo de entrega y el rol de IAM creado previamente, haga clic en siguiente y en la página de revisión, haga clic en Agregar destino.
10. Una vez que haya creado el conjunto de configuración y agregado el destino del evento, puede definir el conjunto de configuración predeterminado para la identidad verificada (dominio o dirección de correo electrónico). En la consola de SES, elija Identidades verificadas (Verified identities).
11. Elija la identidad verificada de la que desea recopilar eventos y seleccione Conjunto de configuración. Haga clic en Editar.
12. Haga clic en la casilla “Asignar un conjunto de configuración predeterminado” (Assign a default configuration set) y elija el conjunto de configuración creado previamente.
13. Una vez que haya completado los pasos anteriores, sus eventos se enviarán a Amazon S3. Debido a la configuración de búferes en el flujo de entrega de Kinesis, los datos se cargarán cada 5 minutos o cada 5 MiB en Amazon S3. Puede verificar la estructura creada en el bucket y ver los registros json con los datos de eventos SES.
Paso 3: Uso de Amazon Athena para consultar los registros de eventos de SES
Amazon SES publica registros de eventos de envío de correo electrónico a Amazon Kinesis Data Firehose en formato JSON. El objeto JSON de nivel superior contiene una cadena EventType, un objeto de correo y un objeto Bounce, Complaint, Delivery, Send, Reject, Open, Click, Rendering Failure o DeliveryDelay, dependiendo del tipo de evento.
- Para simplificar el análisis de los eventos de envío de correo electrónico, crea la tabla sesmaster ejecutando el siguiente script en Amazon Athena. No olvides cambiar la ubicación en el siguiente script con tu propio bucket que contiene los datos de los eventos de envío de correo electrónico.
4. Ejecute los siguientes scripts en Amazon Athena para aplanar el arreglo bounce.bouncedrecipients en el tipo de evento BOUNCE
5. Ejecute los siguientes scripts en Amazon Athena para aplanar el arreglo de complaint.complainedrecipients en el tipo de evento COMPLAINT
Al final tenemos una tabla y cuatro vistas que se pueden utilizar en Amazon QuickSight para analizar eventos de envío de correo electrónico:
- Tabla sesmaster
- Vista vwSESMaster
- Vista vwSentMails
- Vista vwBouncedMails
- Vista vwComplainedemails
Paso 4: Analice y visualice datos con Amazon QuickSight
En este blog, utilizamos Amazon QuickSight para analizar y visualizar los eventos de envío de correo electrónico desde la tabla sesmaster y las cuatro vistas creadas previamente. Amazon QuickSight puede acceder directamente a los datos a través de Athena. Su precio de pago por sesión le permite poner visualizaciones de analítica en manos de todos los miembros de su organización.
Primero necesita seleccionar la tabla y las vistas creadas previamente, para crear nuevas fuentes de datos en Athena y luego usar estas fuentes de datos para poblar la visualización. A continuación, describimos un ejemplo de cómo visualizar los datos. Siéntase libre de crear su propia visualización basada en sus necesidades de información.
Antes de poder utilizar los datos en Amazon QuickSight, primero debe conceder acceso al bucket S3 subyacente. Si aún no lo ha hecho para otros análisis, consulte nuestra documentación sobre cómo hacerlo.
- En la página principal de Amazon QuickSight, elija Conjuntos de datos en el menú del lado izquierdo y, a continuación, elija Nuevo conjunto de datos en la esquina superior derecha, establezca y elija Athena como fuente de datos. En el siguiente cuadro de diálogo, asigne a la fuente de datos un nombre descriptivo y elija “Crear fuente de datos”.
2. En el siguiente cuadro de diálogo, seleccione el Catálogo y la Base de datos que contienen su sesmaster y las vistas curadas. Seleccione la tabla sesmaster para crear algunos Indicadores Clave de Desempeño básicos. Seleccione la tabla sesmaster y haga clic en el botón Seleccionar.
3. La tabla sesmaster ahora es una fuente de datos para Amazon QuickSight y podrá visualizar datos de la misma.
4. Puede ver los campos de lista a la izquierda. El lienzo de la derecha sigue vacío. Antes de poblarlo con datos, seleccione Indicador Clave de Desempeño (Key Performance Indicator) de los tipos visuales disponibles .
5. Para poblar la gráfica, arrastre y suelte los campos de la lista de campos de la izquierda a sus respectivos destinos. En nuestro caso, ponemos el campo send en el campo de valor y usamos count como agregación.
6. Agregue otra visualización desde el lado superior izquierdo y seleccione Indicador clave de rendimiento como tipo visual.
7. Coloque el campo Delivery en el campo de valor y use count como agregación.
8. Repita el mismo procedimiento, (pasos 1 a 4) para contar el número de eventos Open, Click, Bounce, Complaint y Reject Events. Al final, deberías ver algo similar a la siguiente visualización. Después de cambiar el tamaño y reorganizar los visuales, debe obtener un análisis como el que se muestra en la imagen de abajo.
9. Agregue otro conjunto de datos haciendo clic en el lápiz a la derecha del Dataset actual.
10. En el siguiente cuadro de diálogo, seleccione Agregar conjunto de datos.
11. Seleccione la vista llamada vwsesmaster y haga clic en Seleccionar.
12. Ahora puede ver todos los campos disponibles de la vista vwsesmaster.
12. Cree una nueva visualización y seleccione el tipo de visualización Tabla.
13. Arrastre y suelte los campos de la lista de campos de la izquierda en sus respectivos destinos. En nuestro caso, ponemos los campos eventtype, mailmessageid y mailsubject en el campo Group By, pero puede agregar tantos campos como necesite.
14. Ahora cree un filtro para esta visualización con el fin de filtrar por tipo de evento. Asegúrese de seleccionar la tabla y luego haga clic en Filtrar en el menú de la izquierda.
15. Haga clic en Create One y seleccione el campo eventtype en la ventana emergente. Ahora seleccione el filtro eventtype para ver las siguientes opciones.
16. Haga clic en los puntos a la derecha del filtro eventtype y seleccione Agregar a hoja.
17. Deje todos los valores predeterminados, desplácese hacia abajo y seleccione Aplica
18. Ahora puede filtrar la vista vwsesmaster por tipo de evento.
19. Puede continuar personalizando su visualización con todos los datos disponibles en la tabla sesmaster, la vista vwsesmaster e incluso agregar más conjuntos de datos para incluir datos de las vistas vwSentMails, vwBouncedMails y vwComplainedemails. A continuación, puedes ver algunas otras visualizaciones creadas a partir de esas vistas.
Limpiar
Para evitar cargos adicionales, limpie los recursos que creo como parte de esta publicación:
- Elimine las visualizaciones creadas en Amazon Quicksight.
- Dese de baja de Amazon QuickSight si no lo está utilizando para otros proyectos.
- Elimine las vistas y tablas creadas en Amazon Athena.
- Elimine el conjunto de configuración de Amazon SES.
- Elimine los eventos de Amazon SES almacenados en S3.
- Elimine la pila de CloudFormation para eliminar el flujo de entrega de Amazon Kinesis Data Firehose.
Conclusión
En este blog mostramos cómo puede utilizar los servicios y características nativas de AWS para crear rápidamente una solución de seguimiento de correo electrónico basada en eventos de Amazon SES para tener una vista más detallada de sus actividades de envío. Esta solución utiliza una arquitectura sin servidor completa, en la cual no tiene que administrar la infraestructura subyacente y le brinda la flexibilidad de usar la solución para el uso pequeño, mediano o intenso de Amazon SES.
Le mostramos algunos ejemplos de tableros de control y análisis que se pueden construir para la mayoría de los requerimientos de los clientes, pero por supuesto, puede evolucionar esta solución y personalizarla de acuerdo a sus necesidades, agregando o eliminando gráficos, filtros o eventos al tablero. Consulte la siguiente documentación para conocer los eventos de Amazon SES disponibles, su estructura y también cómo crear análisis y paneles en Amazon QuickSight:
- Contenido de los datos de eventos que Amazon SES publica en Amazon SNS
- Inicio rápido: Crear un análisis con una sola visualización usando datos de muestra
Desde una perspectiva de rendimiento y rentabilidad todavía hay varias configuraciones que se pueden hacer para mejorar la solución, por ejemplo, usar un formato de archivos columnar como parquet, comprimir con snappy o configurar su estrategia de partición en S3 de acuerdo con su uso de envío de correo electrónico. Otra mejora podría ser importar datos a SPICE para leer datos en Amazon Quicksight. El uso de SPICE da como resultado que los datos se carguen desde Athena solo una vez, hasta que se actualicen manualmente o se actualicen automáticamente utilizando una calendarización.
Puede usar este paso a paso para configurar tu primer tablero de control de SES y comenzar a visualizar los detalles de los eventos. Puede ajustar los servicios descritos en este blog de acuerdo a los requerimientos de su empresa.
Acerca de los autores
Oscar Mendoza es Arquitecto de Soluciones en AWS basado en Bogotá, Colombia. Oscar trabaja con nuestros clientes para proporcionar orientación en las mejores prácticas arquitectónicas y para crear soluciones en AWS siguiendo las recomendaciones del Well-Architected Framework. Le gusta pasar tiempo con su familia y su perro, y tocar música.
Luis Eduardo Torres es Arquitecto de Soluciones en AWS basado en Bogotá, Colombia. Ayuda a las empresas a desarrollar sus negocios utilizando la plataforma en la nube de AWS. Tiene un gran interés en la analítica y lidera el podcast de analítica de AWS Podcast en español.
Santiago Benavídez es Arquitecto de Soluciones en AWS con sede en Buenos Aires, Argentina, con más de 13 años de experiencia en TI, ayudando actualmente a los clientes de DNB/ISV a alcanzar sus objetivos de negocio utilizando la amplitud y profundidad de los servicios de AWS, diseñando arquitecturas altamente disponibles, resilientes y costo-eficientes.