本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
关注亚马逊 SNS 活动 Amazon 事件分叉管道
| 对于事件归档和分析,Amazon SNS 现在建议使用其与 Amazon Data Firehose 的本机集成。您可以为 Firehose 传输流订阅 SNS 主题,这允许您向归档和分析终端节点发送通知,例如亚马逊简单存储服务 (Amazon S3) 存储桶、亚马逊 Redshift 表、亚马逊 OpenSearch 服务(OpenSearch 服务)等。将 Amazon SNS 与 Firehose 交付流一起使用是一种完全托管且无代码的解决方案,不需要您使用函数。 Amazon Lambda 有关更多信息,请参阅 扇出到 Firehose 传输流。 |
您可以使用 Amazon SNS 构建事件驱动的应用程序,这些应用程序使用订阅者服务自动执行工作以响应发布者服务所触发的事件。此架构模式可提高服务的可重用性、可互操作性和可扩展性。但是,将事件处理分解为可满足常见事件处理要求的管道(例如,事件存储、备份、搜索、分析和重放)可能会非常耗费人力。
为了加快事件驱动应用程序的开发,您可以订阅事件处理管道(由 Amazon 事件分叉管道提供支持)到 Amazon SNS 主题。 Amazon 事件分叉管道是一套基于Amazon 无服务器应用程序模型 (Amazon
SAM) 的开源
有关 Amazon 事件分叉管道的用例,请参阅部署和测试 Amazon SNS Event Fork Pipelines 示例应用程序。
主题
操作方法 Amazon 事件分叉管道正常运行
Amazon 事件分叉流水线是一种无服务器设计模式。但是,它也是一套基于 Amazon SAM 的嵌套无服务器应用程序(您可以直接从 Amazon Serverless Application Repository (Amazon SAR) 将其部署到您的 Amazon Web Services 账户 以丰富您的事件驱动平台)。您可以根据架构的需要单独部署这些嵌套的应用程序。
下图显示了由三个嵌套应用程序补充 Amazon 的事件分叉流水线应用程序。您可以根据架构的要求在 Amazon SAR 上独立部署 Amazon 事件分叉流水线套件中的任何流水线。
为每个管线订阅了相同的 Amazon SNS 主题,并允许管线在事件发布到主题时并行处理这些事件。每个管线都是独立的,并且可以设置其自己的订阅筛选策略。这允许管线仅处理它感兴趣的部分事件(而不是发布到主题的所有事件)。
注意
由于您将三个 Amazon 事件分叉管道放置在常规事件处理管道旁边(可能已经订阅了您的 Amazon SNS 主题),因此无需更改当前消息发布者的任何部分即可在现有工作负载中利用 Amazon 事件分叉管道。
事件存储与备份管线
下图显示了事件存储与备份管线
该管道由一个用于缓冲由 Amazon SNS 主题传送的事件的 Amazon SQS 队列、一个自动轮询队列中的这些事件并将其推送到流中的 Amazon Lambda 函数以及一个持久备份流加载的事件的 Amazon S3 存储桶组成。
要微调您的 Firehose 直播的行为,您可以将其配置为在将事件加载到存储桶之前对其进行缓冲、转换和压缩。在加载事件时,可以使用 Amazon Athena 通过标准 SQL 查询来查询存储桶。您也可以将管道配置为重用现有 Amazon S3 存储桶或创建一个新的存储桶。
事件搜索与分析管线
下图显示了事件搜索与分析管线
该管道由一个用于缓冲由 Amazon SNS 主题传送的事件的 Amazon SQS 队列、一个轮询队列中的事件并将其推送到流中的 Amazon Lambda 函数、一个为 Firehose 流加载的事件编制索引的亚马逊 OpenSearch 服务域和一个存储在搜索域中无法索引的死信事件的 Amazon S3 存储桶组成。
要在事件缓冲、转换和压缩方面微调 Firehose 流,您可以配置此管线。
您还可以配置管道是否应重用您的现有 OpenSearch 域名 Amazon Web Services 账户 或为您创建一个新域。在搜索域中为事件编制索引时,您可以使用 Kibana 对事件运行分析并实时更新可视化控制面板。
事件重播管线
下图显示了事件重播管线
该管道由一个 Amazon SQS 队列和一个 Amazon Lambda 函数组成,该队列缓冲了 Amazon SNS 主题传送的事件,后者轮询队列中的事件并将其重新驱动到您的常规事件处理管道中,该管道也订阅了您的主题。
注意
默认情况下,重播功能已禁用,而不会重新导入您的事件。如果您需要重新处理事件,则必须启用 Amazon SQS 重播队列作为 Amazon Lambda 重播函数的事件源。
部署 Amazon 事件分叉管道
Amazon Event Fork Pipelines 套件
在生产场景中,我们建议将 Amazon 事件分叉管道嵌入到整个应用程序的 Amazon SAM 模板中。嵌套应用程序功能允许您通过将资源添加AWS::Serverless::Application到 Amazon SAM 模板、引用嵌套应用程序的 Amazon SAR ApplicationId 和来实现此SemanticVersion目的。
例如,通过将以下 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模板其他地方定义的 Amazon SAM 资源MySNSTopic。有关更多信息,请参阅 Amazon CloudFormation 用户指南中的内置函数参考。
注意
Amazon SAR 应用程序的 Amazon Lambda 控制台页面包含 “复制为 SAM 资源” 按钮,该按钮可将嵌套 Amazon SAR 应用程序所需的 YAML 复制到剪贴板。