

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

# 订阅事件搜索与分析管道并将其部署到 Amazon SNS
<a name="deploy-event-search-analytics-pipeline"></a>


|  | 
| --- |
| 对于事件归档和分析，Amazon SNS 现在建议使用其与 Amazon Data Firehose 的本机集成。您可以将 Firehose 传输流订阅 SNS 主题，这样您就可以向存档和分析终端节点发送通知，例如亚马逊简单存储服务 (Amazon S3) 存储桶、亚马逊 Redshift 表、亚马逊 OpenSearch 服务（服务）等。OpenSearch 将 Amazon SNS 与 Firehose 传输流配合使用是一种完全托管且无需代码的解决方案，您无需使用任何功能。 Amazon Lambda 有关更多信息，请参阅 [扇出到 Firehose 传输流](sns-firehose-as-subscriber.md)。 | 

本教程说明如何部署[事件搜索与分析管道](sns-fork-pipeline-as-subscriber.md#sns-fork-event-search-and-analytics-pipeline)并为该管道订阅 Amazon SNS 主题。此过程会自动将与管道关联的 Amazon SAM 模板转换为 Amazon CloudFormation 堆栈，然后将该堆栈部署到您的 Amazon Web Services 账户。此过程还会创建和配置构成事件搜索与分析管道的资源集，包括以下内容：
+ Amazon SQS 队列
+ Lambda 函数
+ Firehose 传输流
+ 亚马逊 OpenSearch 服务域名
+ Amazon S3 死信存储桶

有关将流配置为以索引作为目标的更多信息，请参阅《Amazon Data Firehose API Reference》**中的 `[ElasticsearchDestinationConfiguration](https://docs.amazonaws.cn/firehose/latest/APIReference/API_ElasticsearchDestinationConfiguration.html)`。

有关转换事件以及配置事件缓冲、事件压缩和事件加密的详细信息，请参阅 *Amazon Data Firehose 开发人员指南*中的[创建传输流](https://docs.amazonaws.cn/firehose/latest/dev/basic-create.html)。

有关筛选事件的更多信息，请参阅本指南中的 [Amazon SNS 订阅筛选策略](sns-subscription-filter-policies.md)。

1. 登录 [Amazon Lambda 控制台](https://console.amazonaws.cn/lambda/)。

1. 在导航面板上，选择 **Functions (函数)**，然后选择 **Create function (创建函数)**。

1. 在 **Create function (创建函数)** 页面上，执行以下操作：

   1. 依次选择 **Browse serverless app repository（浏览无服务器应用程序存储库）**、**Public applications（公共应用程序）**、**Show apps that create custom roles or resource policies（显示创建 IAM 角色或资源策略的应用程序）**。

   1. 搜索 `fork-event-search-analytics-pipeline`，然后选择该应用程序。

1. 在 **fork-event-search-analytics-pipelin** e 页面上，执行以下操作：

   1. 在 **Application settings (应用程序设置)** 部分中，输入 **Application name (应用程序名称)**（例如，`my-app-search`）。
**注意**  
对于每个部署，应用程序名称必须唯一。如果您重复使用应用程序名称，则部署将仅更新先前部署的 Amazon CloudFormation 堆栈（而不是创建新的堆栈）。

   1. （可选）对于 **DataTransformationFunctionArn**，输入用于转换传入事件的 Lambda 函数的 ARN。如果您不输入值，则将禁用数据转换。

   1. （可选）输入以下**LogLevel**设置之一以执行应用程序的 Lambda 函数：
      + `DEBUG`
      + `ERROR`
      + `INFO`（默认值）
      + `WARNING`

   1. （可选）对于 **SearchDomainArn**，输入 OpenSearch 服务域的 ARN，该域是一个配置所需计算和存储功能的集群。如果您不输入值，则使用默认配置创建新域。

   1. 对于 **TopicArn**，输入要订阅此分叉管道实例的 Amazon SNS 主题的 ARN。

   1. 对于 **SearchIndexName**，输入用于事件搜索和分析的 OpenSearch 服务索引的名称。
**注意**  
以下配额适用于索引名称：  
不能包含大写字母
不能包含以下字符：`\ / * ? " < > | ` , #`
不能以下列字符开头：`- + _`
不能为以下内容：`. ..`
长度不能超过 80 个字符
长度不能超过 255 个字节
不能包含冒号（来自 OpenSearch 服务 7.0）

   1. （可选）为 OpenSearch 服务索引的轮换周期输入以下**SearchIndexRotationPeriod**设置之一：
      + `NoRotation`（默认值）
      + `OneDay`
      + `OneHour`
      + `OneMonth`
      + `OneWeek`

      索引轮换将时间戳附加到索引名称，从而促进旧数据的到期。

   1. 对于 **SearchTypeName**，输入用于在索引中组织事件的 OpenSearch 服务类型的名称。
**注意**  
OpenSearch 服务类型名称可以包含任何字符（空字节除外），但不能以开头`_`。
对于 S OpenSearch ervice 6.x，每个索引只能有一个类型。如果您为具有其他类型的现有索引指定新类型，Firehose 会返回运行时错误。

   1. （可选）对于**StreamBufferingIntervalInSeconds**和 **StreamBufferingSizeInMBs**，输入用于配置传入事件缓冲的值。如果您不输入任何值，则使用 300 秒和 5 MB。

   1. （可选）输入以下**StreamCompressionFormat**设置之一以压缩传入的事件：
      + `GZIP`
      + `SNAPPY`
      + `UNCOMPRESSED`（默认值）
      + `ZIP`

   1. （可选）对于 **StreamPrefix**，输入字符串前缀以命名存储在 Amazon S3 死信存储桶中的文件。如果您不输入值，则不使用任何前缀。

   1. （可选）对于 **StreamRetryDurationInSecons**，输入 Firehose 无法索引服务索引中的 OpenSearch 事件时的重试持续时间。如果您不输入值，则使用 300 秒。

   1. （可选）对于 **SubscriptionFilterPolicy**，输入 JSON 格式的 Amazon SNS 订阅筛选策略，用于筛选传入的事件。筛选策略决定在 OpenSearch 服务索引中对哪些事件进行索引。如果您不输入值，则不使用筛选（为所有事件编制索引）。

   1. 选择 **I acknowledge that this app creates custom IAM roles, resource policies and deploys nested applications (我确认此应用程序创建自定义 IAM 角色和资源策略并部署嵌套应用程序)**，然后选择 **Deploy (部署)**。

在 “**部署状态 {{my-app-search}}**” 页面上，Lambda 会显示 “**您的应用程序正在部署中**” 状态。

在**资源**部分中， Amazon CloudFormation 开始创建堆栈并显示每个资源的 **CREATE\_IN\_PROGRESS** 状态。该过程完成后， Amazon CloudFormation 将显示 “**创建\_完成**” 状态。

部署完成后，Lambda 将显示 **Your application has been deployed（您的应用程序已部署完成）**状态。

发布到您的 Amazon SNS 主题的消息将在事件搜索和分析管 OpenSearch 道自动配置的服务索引中编制索引。如果该管道无法为事件编制索引，它会将其存储在 S3 死信存储桶中。