扇出到Amazon事件分叉管道 - Amazon Simple Notification Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

扇出到Amazon事件分叉管道

对于事件归档和分析,Amazon SNS 现在建议使用其与 Amazon Kinesis Data Firehose 的本机集成。您可以为 Kinesis Data Firehose 传输流订阅 SNS 主题,它允许您向归档和分析终端节点发送通知,例如 Amazon Simple Storage Service (Amazon S3) 存储桶、Amazon Redshift 表、Amazon Elasticsearch Service (Amazon ES) 等。将 Amazon SNS 与 Kinesis Data Firehose 交付流结合使用是一种完全托管且无代码的解决方案,不需要您使用Amazon Lambda函数。有关更多信息,请参阅 扇出到 Kinesis Data Firehose 传输流

您可以使用 Amazon SNS 构建事件驱动的应用程序,这些应用程序使用订阅者服务自动执行工作以响应发布者服务所触发的事件。此架构模式可提高服务的可重用性、可互操作性和可扩展性。但是,将事件处理分解为可满足常见事件处理要求的管道(例如,事件存储、备份、搜索、分析和重放)可能会非常耗费人力。

为了加快事件驱动型应用程序的开发,您可以订阅事件处理管道 —Amazon事件分叉管道 — Amazon SNS 主题。Amazon事件分叉管道是一套开源嵌套应用程序,基于Amazon无服务器应用程序模型(AmazonSAM),您可以直接从Amazon事件分叉管道套件(选择显示创建自定义 IAM IAM 角色或资源策略的应用) 到您的Amazonaccount.

对于Amazon事件分叉管道使用案例,请参阅部署和测试Amazon事件分叉管道示例应用程序

操作方法Amazon事件分叉管道工作

Amazon事件分叉管道是一个无服务器设计模式。但是,它也是一套嵌套的无服务器应用程序,基于AmazonSAM(您可以直接从Amazon Serverless Application Repository(AmazonSAR)到您的 Amazon Web Services 账户 ,以丰富您的事件驱动平台)。您可以根据架构的需要单独部署这些嵌套的应用程序。

下图显示了Amazon由三个嵌套的应用程序补充的事件分支管道应用程序。您可以从Amazon“事件分叉管道” 套件上的Amazon根据架构的需要,SAR 独立。

为每个管道订阅了相同的 Amazon SNS 主题,允许管道在事件发布到主题时并行处理这些事件。每个管道都是独立的,并且可以设置其自己的订阅筛选策略。这允许管道仅处理它感兴趣的部分事件(而不是发布到主题的所有事件)。

注意

因为你把三个Amazon事件分支管道与常规事件处理管道一起部署(可能已订阅 Amazon SNS 主题),您无需更改当前消息发布者的任何部分即可利用Amazon现有工作负载中的事件分叉管道。

事件存储与备份管道

下图显示了事件存储与备份管道。您可以为此管道订阅 Amazon SNS 主题来自动备份流经系统的事件。

此管道由 Amazon SQS 队列组成,该队列缓冲 Amazon SNS 主题提供的事件,Amazon Lambda函数自动轮询队列中的这些事件,并将其推入 Amazon Kinesis Data Firehose 流和 Amazon S3 存储桶(该存储桶持久备份流所加载的事件)。

要微调 Firehose 流的行为,可将其配置为在将事件加载到存储桶之前对事件进行缓冲、转换和压缩。在加载事件时,您可以使用 Amazon Athena 通过标准 SQL 查询来查询存储桶。您也可以将管道配置为重用现有 Amazon S3 存储桶或创建一个新的 Amazon S3 存储桶。

事件搜索与分析管道

下图显示了事件搜索与分析管道。您可以为此管道订阅 Amazon SNS 主题,以便在搜索域中为流经系统的事件编制索引,然后对这些事件进行分析。

此管道由 Amazon SQS 队列组成,该队列缓冲 Amazon SNS 主题提供的事件,Amazon Lambda函数,它轮询队列中的事件并将其推入 Amazon Kinesis Data Firehose 流、Amazon Elasticsearch Service (Amazon Elasticsearch Service)、一个 Amazon S3 存储桶,它存储在搜索域中无法建立索引的死信事件。

要在事件缓冲、转换和压缩方面微调 Firehose 流,您可以配置此管道。

您也可以配置管道是否应重用 Amazon Web Services 账户 或为您创建一个新的。在搜索域中为事件编制索引时,您可以使用 Kibana 对事件运行分析并实时更新可视化控制面板。

事件重播管道

下图显示了事件重播管道。要记录系统在过去 14 天内处理过的事件(例如,当您的平台需要从故障中恢复时),您可以为此管道订阅 Amazon SNS 主题,然后重新处理事件。

此管道由 Amazon SQS 队列组成,该队列用于缓冲 Amazon SNS 主题提供的事件,以及Amazon Lambda函数轮询队列中的事件,并将事件重新导入也订阅了主题的常规事件处理管道中。

注意

默认情况下,重播功能已禁用,而不会重新导入您的事件。如果您需要重新处理事件,则必须启用 Amazon SQS 重播队列作为Amazon Lambda重放功能。

部署Amazon事件分叉管道

这些区域有:Amazon事件分叉管道套件(选择显示创建自定义 IAM IAM 角色或资源策略的应用)作为一组公共应用程序可在Amazon Serverless Application Repository,您可以在其中使用Amazon Lambda控制台。有关使用 Amazon Lambda 控制台部署管道的信息,请参阅订阅AmazonAmazon SNS 主题的事件分支管道

在生产场景中,我们建议将嵌入Amazon整个应用程序的AmazonSAM 模板。利用嵌套应用程序功能,可通过将资源 AWS::Serverless::Application 添加到您的 Amazon SAM 模板并引用嵌套应用程序的 Amazon SAR ApplicationIdSemanticVersion 来做到这一点。

例如,您可以通过将以下 YAML 片段添加到 Amazon SAM 模板的 Resources 部分来将事件存储与备份管道用作嵌套应用程序。

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

在指定参数值时,您可以使用 Amazon CloudFormation 内部函数来引用模板中的其他资源。例如,在上述 YAML 片段中,TopicArn参数引用AWS::SNS::Topic资源MySNSTopic的其他位置定义,在Amazon SAM模板。有关更多信息,请参阅 。固有功能参考中的Amazon CloudFormation用户指南

注意

这些区域有:Amazon Lambda控制台页面AmazonSAR 应用程序包括作为 SAM 资源进行复制按钮,该按钮复制嵌套Amazon适用于剪贴板的 SAR 应用程序。