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
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.
Temas
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.
Temas
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.
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
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.
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
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.
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
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.
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
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.