

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

# AWS 事件分叉管道用例示例
<a name="example-sns-fork-use-case"></a>

以下场景描述了一个使用 Event Fork Pipelines AWS 的事件驱动型无服务器电子商务应用程序。您可以在中使用此[示例电子商务应用程序](https://serverlessrepo.aws.amazon.com/applications/arn:aws:serverlessrepo:us-east-1:077246666028:applications~fork-example-ecommerce-checkout-api)， AWS Serverless Application Repository 然后 AWS 账户 使用控制台将其部署到您的 AWS Lambda 控制台中，您可以在其中对其进行测试并检查其源代码 GitHub。

![集成 AWS 服务的无服务器电子商务应用程序的架构。它描绘了从电子商务用户通过 API Gateway 下订单到包括订单存储、搜索分析和重播在内的不同处理管道的流程，展示了如何通过 Amazon SNS、Lambda、Amazon SQS、DynamoDB 和 Kibana 管理和分析事件。](http://docs.aws.amazon.com/zh_cn/sns/latest/dg/images/sns-fork-example-use-case.png)


该电子商务应用程序通过 RESTful API Gateway托管并由该 AWS Lambda 功能支持的API接受买家的订单`CheckoutApiBackendFunction`。此函数将收到的所有订单发布到名为 `CheckoutEventsTopic` 的 Amazon SNS 主题，该主题转而将订单分散到四个不同的管道。

第一个管道是由电子商务应用程序的拥有者设计和实现的常规结算处理管道。该管道具有用于缓冲所有已收到订单的 Amazon SQS 队列`CheckoutQueue`、一个名为`CheckoutFunction`的 AWS Lambda 函数，用于轮询队列以处理这些订单，还有一个用于安全保存所有已下订单的 DynamoDB 表`CheckoutTable`。

## 应用 AWS 事件分叉管道
<a name="applying-sns-fork-pipelines"></a>

电子商务应用程序的组件处理核心业务逻辑。但是，电子商务应用程序拥有者还需满足：
+ **合规性** - 安全的、压缩的静态加密备份，清理敏感信息
+ **弹性** - 在执行过程中断的情况下重播最近的订单
+ **可搜索性** - 对已下订单运行分析并生成指标

应用程序所有者无需实现此事件处理逻辑，而是可以订阅 `CheckoutEventsTopic` Amazon SNS 主题的 AWS Event Fork Pipelines
+ [事件存储与备份管线](sns-fork-pipeline-as-subscriber.md#sns-fork-event-storage-and-backup-pipeline)配置为转换数据以删除信用卡详细信息，缓冲数据 60 秒，使用 GZIP 压缩数据，并使用 Amazon S3 的原定设置客户自主管理型密钥来加密数据。此密钥由 () 管理 AWS 并由 AWS Key Management Service (AWS KMS) 提供支持。

  有关更多信息，请参阅《Amazon Data Firehose 开发人员指南》**中的[为您的目的地选择 Amazon S3](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-s3)、[Amazon Data Firehose 数据转换](https://docs.aws.amazon.com/firehose/latest/dev/data-transformation.html)和[配置设置](https://docs.aws.amazon.com/firehose/latest/dev/create-configure.html)。
+ 为[事件搜索与分析管线](sns-fork-pipeline-as-subscriber.md#sns-fork-event-search-and-analytics-pipeline)配置了一个 30 秒的索引重试持续时间、一个用于存储无法在搜索域中编制索引的订单的存储桶和一个用来限制已编制索引的订单集的筛选策略。

  有关更多信息，请参阅 *Amazon Data Firehose 开发者*指南中的[为您的目的地选择 OpenSearch 服务](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-elasticsearch)。
+ [事件重播管线](sns-fork-pipeline-as-subscriber.md#sns-fork-event-replay-pipeline) 为配置了常规订单处理管道（由电子商务应用程序拥有者设计和实施）的 Amazon SQS 队列部分。

  有关更多信息，请参阅 *Amazon Simple Queue Service 开发人员指南*中的[队列名称和 URL](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-general-identifiers.html#queue-name-url)。

在事件搜索与分析管道的配置中设置以下 JSON 筛选策略。它仅匹配总金额为 100 美元或更多的传入订单。有关更多信息，请参阅 [Amazon SNS 消息筛选](sns-message-filtering.md)。

```
{				
   "amount": [{ "numeric": [ ">=", 100 ] }]
}
```

使用 E AWS vent Fork Pipelines 模式，电子商务应用程序所有者可以避免开发开销，这种开销通常是在为事件处理编写非微分逻辑之后出现的。取而代之的是，她可以将 AWS 事件分叉管道直接从部署 AWS Serverless Application Repository 到她身上 AWS 账户。