Amazon Simple Notification Service
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

教程:部署和订阅事件搜索与分析管道

本教程说明如何部署事件搜索与分析管道并为该管道订阅 Amazon SNS 主题。此过程自动将与管道关联的 SAM 模板转换为 AWS CloudFormation 堆栈,然后将堆栈部署到您的 AWS 账户。此过程还会创建和配置构成事件搜索与分析管道的资源集,包括以下内容:

  • Amazon SQS 队列

  • Lambda 函数

  • Kinesis Data Firehose 传输流

  • Amazon Elasticsearch Service 域

  • Amazon S3 死信存储桶

有关通过将索引用作目标来配置流的更多信息,请参阅 Amazon Kinesis Data Firehose API 参考 中的 ElasticsearchDestinationConfiguration

有关转换事件以及配置事件缓冲、事件压缩和事件加密的更多信息,请参阅 Amazon Kinesis Data Firehose 开发人员指南 中的创建 Amazon Kinesis Data Firehose 传输流

有关筛选事件的更多信息,请参阅本指南中的 Amazon SNS 订阅筛选策略

  1. 登录 AWS Lambda 控制台

  2. 在导航面板上,选择 Functions (函数),然后选择 Create function (创建函数)

  3. Create function (创建函数) 页面上,执行以下操作:

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

    2. 搜索 fork-event-search-analytics-pipeline,然后选择该应用程序。

  4. fork-event-search-analytics-pipeline 页面上,执行以下操作:

    1. Application settings (应用程序设置) 部分中,输入 Application name (应用程序名称)(例如,my-app-search)。

      注意

      对于每个部署,应用程序名称必须唯一。如果您重用应用程序名称,则部署将仅更新之前部署的 AWS CloudFormation 堆栈(而不是创建新堆栈)。

    2. (可选)对于 DataTransformationFunctionArn,输入用于转换传入事件的 Lambda 函数的 ARN。如果您不输入值,则将禁用数据转换。

    3. (可选)为应用程序的 Lambda 函数执行输入下列 LogLevel 设置之一:

      • DEBUG

      • ERROR

      • INFO(默认值)

      • WARNING

    4. (可选)对于 SearchDomainArn,输入 Amazon ES 域(一个配置所需的计算和存储功能的集群)的 ARN。如果您不输入值,则使用默认配置创建新域。

    5. 对于 TopicArn,输入要为此分支管道实例订阅的 Amazon SNS 主题的 ARN。

    6. 对于 SearchIndexName,输入用于事件搜索与分析的 Amazon ES 索引的名称。

      注意

      以下限制适用于索引名称:

      • 不能包含大写字母

      • 不能包含以下字符:\ / * ? " < > | ` , #

      • 不能以下列字符开头:- + _

      • 不能为以下内容:. ..

      • 长度不能超过 80 个字符

      • 长度不能超过 255 个字节

      • 不能包含冒号(从 Amazon ES 7.0 开始)

    7. (可选)为 Amazon ES 索引的轮换期间输入下列 SearchIndexRotationPeriod 设置之一:

      • NoRotation(默认值)

      • OneDay

      • OneHour

      • OneMonth

      • OneWeek

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

    8. 对于 SearchTypeName,输入用于在索引中组织事件的 Amazon ES 类型的名称。

      注意

      • Amazon ES 类型名称可以包含任何字符(空字节除外),但不能以 _ 开头。

      • 对于 Amazon ES 6.x,每个索引只能有一个类型。如果您为具有其他类型的现有索引指定新类型,Kinesis Data Firehose 会返回运行时错误。

    9. (可选)对于 StreamBufferingIntervalInSecondsStreamBufferingSizeInMBs,输入用于配置传入事件的缓冲的值。如果您不输入任何值,则使用 300 秒和 5 MB。

    10. (可选)输入用于压缩传入事件的下列 StreamCompressionFormat 设置之一:

      • GZIP

      • SNAPPY

      • UNCOMPRESSED(默认值)

      • ZIP

    11. (可选)对于 StreamPrefix,输入字符串前缀来为存储在 S3 死信存储桶中的文件命名。如果您不输入值,则不使用任何前缀。

    12. (可选)对于 StreamRetryDurationInSecons,输入当 Kinesis Data Firehose 无法在 Amazon ES 索引中为事件编制索引时进行重试的持续时间。如果您不输入值,则使用 300 秒。

    13. (可选)对于 SubscriptionFilterPolicy,以 JSON 格式输入要用于筛选传入事件的 Amazon SNS 订阅筛选策略。筛选策略决定在 Amazon ES 索引中为哪些事件编制索引。如果您不输入值,则不使用筛选(为所有事件编制索引)。

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

Deployment status for my-app-search (<my-app-search> 的部署状态) 页面上,Lambda 显示 Your application is being deployed (正在部署您的应用程序) 状态。

Resources (资源) 部分中,AWS CloudFormation 开始创建堆栈并显示每个资源的 CREATE_IN_PROGRESS 状态。在此过程完成后,AWS CloudFormation 将显示 CREATE_COMPLETE 状态。

部署完成后,Lambda 将显示 Your application has been deployed (您的应用程序已部署完成) 状态。

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