Distribución ramificada de eventos de Amazon SNS a AWS Event Fork Pipelines - Amazon Simple Notification Service

Distribución ramificada de eventos de Amazon SNS a AWS Event Fork Pipelines

Para el archivado y el análisis de eventos, Amazon SNS recomienda ahora utilizar su integración nativa con Amazon Data Firehose. Puede suscribir los flujos de entrega de Firehose a temas de SNS, lo que le permite enviar notificaciones a puntos de conexión de archivo y análisis, como buckets de Amazon Simple Storage Service (Amazon S3), tablas de Amazon Redshift, Amazon OpenSearch Service (OpenSearch Service) y otros. El uso de Amazon SNS con flujos de entrega de Firehose es una solución completamente administrada y sin código en la que no se necesita el uso de funciones de AWS Lambda. Para obtener más información, consulte Distribución ramificada a los flujos de entrega de Firehose.

Puede usar Amazon SNS para crear aplicaciones basadas en eventos que utilicen los servicios de suscriptor para realizar trabajos de manera automática en respuesta a eventos desencadenados por los servicios de publicador. Este patrón arquitectónico puede hacer que los servicios sean más reutilizables, interoperables y escalables. Sin embargo, puede ser muy laborioso bifurcar el procesamiento de eventos a canalizaciones que cumplan los requisitos comunes de administración de eventos, como el almacenamiento, la copia de seguridad, la búsqueda, el análisis y la reproducción de eventos.

Para acelerar el desarrollo de sus aplicaciones basadas en eventos, puede suscribir las canalizaciones de gestión de eventos, basadas en AWS Event Fork Pipelines, a temas de Amazon SNS. AWS Event Fork Pipelines es una suite de aplicaciones anidadas de código abierto basadas en el modelo AWS Serverless Application Model (AWS SAM) que se puede implementar directamente desde la suite de aplicaciones de AWS Event Fork Pipelines (elija Mostrar aplicaciones que crean roles de IAM o políticas de recursos personalizados) en la cuenta de AWS.

Para ver un caso de uso de AWS Event Fork Pipelines, consulte Implementación y prueba de la aplicación de ejemplo de canalizaciones de bifurcación de eventos de Amazon SNS.

Cómo funciona AWS Event Fork Pipelines

AWS Event Fork Pipelines es un patrón de diseño sin servidor. Sin embargo, también es una suite de aplicaciones sin servidor anidadas basadas en AWS SAM (que puede implementar de forma directa desde AWS Serverless Application Repository (AWS SAR) en su Cuenta de AWS para enriquecer sus plataformas basadas en eventos). Puede implementar estas aplicaciones anidadas de forma individual, según lo requiera su arquitectura.

En el siguiente diagrama, se muestra una aplicación de AWS Event Fork Pipelines complementada por tres aplicaciones anidadas. Puede desplegar cualquiera de las canalizaciones de la suite de AWS Event Fork Pipelines en AWS SAR de forma independiente, según los requisitos de su arquitectura.

La arquitectura de AWS Event Fork Pipelines, que muestra cómo se filtran y procesan los eventos de un tema de Amazon SNS a través de tres canalizaciones distintas: almacenamiento y copia de seguridad de eventos, búsqueda y análisis de eventos, y reproducción de eventos. Estas canalizaciones se representan como cajas apiladas verticalmente, cada una de las cuales procesa de forma independiente eventos en paralelo desde el mismo tema de Amazon SNS.

Cada canalización está suscrita al mismo tema de Amazon SNS, lo que le permite procesar eventos en paralelo a medida que se publican en el tema. Cada canalización es independiente y puede establecer su propia política de filtros de suscripción. De este modo, una canalización puede procesar solo un subconjunto de los eventos que le interesan (en lugar de todos los eventos publicados en el tema).

nota

Como las tres canalizaciones de AWS Event Fork Pipelines se colocan junto con las canalizaciones de bifurcación de eventos normales (y es posible que ya estén suscritas al tema de Amazon SNS), no es necesario cambiar nada del publicador de mensajes actual para utilizar las canalizaciones de AWS Event Fork Pipelines en las cargas de trabajo existentes.

Canalización de almacenamiento y copia de seguridad de eventos

En el siguiente diagrama se muestra la canalización de almacenamiento y copia de seguridad de eventos. Puede suscribir esta canalización a su tema de Amazon SNS para hacer una copia de seguridad automática de los eventos que pasan por su sistema.

Esta canalización se compone de una cola de Amazon SQS con la que se almacenan en búfer los eventos entregados por el tema de Amazon SNS, una función de AWS Lambda con la que se sondean de manera automática estos eventos en la cola y se envían a un flujo, y un bucket de Amazon S3 con el que se hace una copia de seguridad duradera de los eventos cargados por el flujo.

La canalización Fork-Event-Storage-Backup-Pipeline, diseñada para procesar y realizar copias de seguridad de eventos de un tema de Amazon SNS. El flujo comienza con un tema de Amazon SNS desde el que los eventos se distribuyen a una cola de Amazon SQS. A continuación, una función de Lambda procesa estos eventos filtrados y los reenvía a una instancia de Data Firehose. El flujo de Firehose se encarga de almacenar en búfer, transformar y comprimir los eventos antes de cargarlos en un bucket de copia de seguridad de Amazon S3. Por último, se puede utilizar Amazon Athena para consultar los datos almacenados. El diagrama utiliza una serie de iconos y flechas para ilustrar el flujo de un servicio al siguiente, en el que cada componente de la canalización está etiquetado claramente.

Para optimizar el comportamiento del flujo de Firehose, puede configurarlo para que almacene en búfer, transforme y comprima los eventos antes de cargarlos en el bucket. A medida que se carguen los eventos, puede utilizar Amazon Athena para consultar el bucket mediante consultas de SQL estándar. También puede configurar la canalización para reutilizar un bucket de Amazon S3 existente o crear uno nuevo.

Canalización de búsqueda y análisis de eventos

En el siguiente diagrama se muestra la canalización de búsqueda y análisis de eventos. Puede suscribir esta canalización a su tema de Amazon SNS para indexar los eventos que pasan por su sistema en un dominio de búsqueda y, a continuación, ejecutar análisis en ellos.

Esta canalización se compone de una cola de Amazon SQS con la que se almacenan en búfer los eventos que entrega el tema de Amazon SNS, una función de AWS Lambda con la que se sondean los eventos de la cola y se envían a un flujo, un dominio de Amazon OpenSearch Service con el que se indexan los eventos cargados por el flujo de Firehose y un bucket de Amazon S3 con el que se almacenan los eventos fallidos que no se pueden indexar en el dominio de búsqueda.

La canalización de búsqueda y análisis de eventos dentro de una arquitectura de AWS. Comienza a la izquierda con el tema de Amazon SNS recibiendo todos los eventos. Luego, estos eventos se canalizan a través de una línea discontinua que representa los “eventos filtrados distribuidos” hacia una cola de Amazon SQS. Desde la cola, una función de Lambda procesa estos eventos y los reenvía a un flujo de Data Firehose. Data Firehose dirige los eventos a dos destinos: una ruta lleva a una instancia de Amazon Elasticsearch Service para su indexación y la otra envía los eventos no procesables o fallidos a un bucket de eventos fallidos de Amazon S3. En el extremo derecho, el resultado de Elasticsearch Service se envía a un panel de Kibana para su análisis y visualización. Todo el flujo se presenta horizontalmente y cada componente está conectado por líneas que muestran la dirección del flujo de datos.

Si desea ajustar el flujo de Firehose en cuanto al almacenamiento en búfer, la transformación y la compresión de eventos, puede configurar esta canalización.

También puede configurar si la canalización debe reutilizar un dominio de OpenSearch existente en su Cuenta de AWS o crear uno nuevo automáticamente. A medida que los eventos se indexan en el dominio de búsqueda, puede utilizar Kibana para ejecutar análisis de sus eventos y actualizar los paneles visuales en tiempo real.

Canalización de reproducción de eventos

En el siguiente diagrama se muestra la canalización de reproducción de eventos. Para registrar los eventos que ha procesado el sistema en los últimos 14 días (por ejemplo, cuando su plataforma necesita recuperarse de un error), puede suscribir esta canalización a su tema de Amazon SNS y, a continuación, volver a procesar los eventos.

Esta canalización se compone de una cola de Amazon SQS en la que se almacenan los eventos que entrega el tema de Amazon SNS y una función de AWS Lambda con la que se sondean los eventos de la cola y se los redirecciona a su canalización de procesamiento de eventos normales, que también está suscrita a su tema.

La canalización de reproducción de eventos en formato de diagrama de flujo. De izquierda a derecha, comienza con un tema de Amazon SNS que distribuye los eventos filtrados a dos procesos paralelos. El flujo superior representa la canalización de procesamiento de eventos habitual, que incluye una cola de Amazon SQS que procesa los eventos. El flujo inferior, denominado “fork-event-replay-pipeline”, incluye una cola de reproducción de Amazon SQS en la que los eventos se almacenan temporalmente antes de que los procese una función de reproducción de Lambda. Esta función de Lambda tiene la capacidad de redirigir los eventos a su canalización de procesamiento de eventos normal o retenerlos para su reproducción, en función de si la característica de reproducción está habilitada o deshabilitada. El diagrama también indica que los operadores pueden activar o desactivar la característica de reproducción de eventos.
nota

De forma predeterminada, la característica de reproducción está deshabilitada, por lo que los eventos no se redireccionan. Si necesita volver a procesar los eventos, debe habilitar la cola de reproducción de Amazon SQS como fuente de eventos para la característica de reproducción de AWS Lambda.

Implementación de AWS Event Fork Pipelines

La suite de AWS Event Fork Pipelines (elija Mostrar aplicaciones que crean políticas de recursos o roles de IAM personalizados) está disponible como un grupo de aplicaciones públicas en el AWS Serverless Application Repository, desde donde puede implementarlas y probarlas de forma manual mediante la consola de AWS Lambda. Para obtener más información sobre la implementación de canalizaciones mediante la consola de AWS Lambda, consulte Suscripción de AWS Event Fork Pipelines a un tema de Amazon SNS.

En los escenarios de producción, le recomendamos que integre AWS Event Fork Pipelines dentro de la plantilla de AWS SAM de su aplicación general. La característica de aplicación anidada le permite hacerlo añadiendo el recurso AWS::Serverless::Application a la plantilla de AWS SAM, con una referencia al ApplicationId de AWS SAR y a la SemanticVersion de la aplicación anidada.

Por ejemplo, puede utilizar la canalización de almacenamiento y copia de seguridad de eventos como una aplicación anidada añadiendo el siguiente fragmento de YAML a la sección Resources de su plantilla de AWS SAM.

Backup: Type: AWS::Serverless::Application Properties: Location: ApplicationId: arn:aws:serverlessrepo:us-east-2:123456789012:applications/fork-event-storage-backup-pipeline SemanticVersion: 1.0.0 Parameters: #The ARN of the Amazon SNS topic whose messages should be backed up to the Amazon S3 bucket. TopicArn: !Ref MySNSTopic

Al especificar los valores de parámetro, puede utilizar funciones intrínsecas de AWS CloudFormation para hacer referencia a otros recursos de la plantilla. Por ejemplo, en el fragmento de YAML anterior, el parámetro TopicArn hace referencia al recurso MySNSTopic de AWS::SNS::Topic, definido en otra parte de la plantilla de AWS SAM. Para obtener más información, consulte la Referencia de funciones intrínsecas en la Guía del usuario de AWS CloudFormation.

nota

En la página de la consola de AWS Lambda de la aplicación de AWS SAR, se encuentra el botón Copiar como recurso de SAM, que copia el código de YAML necesario para anidar una aplicación de AWS SAR en el portapapeles.