从 SNS 向 kinesis 发布消息

Publish message from SNS to kinesis

我需要将消息从 SNS 发布到 kinesis。我发现,直接订阅 SNS/SQS 是不可能的。我将需要编写 lambda 以从 SNS 获取并将其发布到 kinesis。 有没有其他方法可以直接从SNS发布记录到kinesis? 谢谢

Amazon SNS 是 publish/subscribe 模型。

发送到 SNS 的消息可以从以下位置订阅:

  • http/s:通过 HTTP POST
  • 传递 JSON 编码的消息
  • email:通过 SMTP 传送邮件
  • email-json:通过 SMTP
  • 发送 JSON 编码的邮件
  • sms:通过短信发送消息
  • sqs:将 JSON 编码的消息传送到 Amazon SQS 队列
  • application:将 JSON 编码的消息传送到移动应用程序和设备的 EndpointArn。
  • lambda:将 JSON 编码的消息传送到 AWS Lambda 函数。
  • 其他选项:请参阅下面 Otavio 的回答!

参见:Subscribe - Amazon Simple Notification Service

其中,唯一可用于发送到 Amazon Kinesis 的是使用 AWS Lambda。您需要编写一个 Lambda 函数来将消息发送到 Kinesis 流。

澄清一下:您的 Lambda 函数不会“从 SNS 获取”。相反,Lambda 函数将由 SNS 触发,消息作为输入传递。然后,您的 Lambda 函数需要将消息发送到 Kinesis。

您唯一的另一种选择是更改当前将消息发送到 SNS 的系统,并将消息发送到 Kinesis。

好消息!自 2021 年 1 月起,Amazon SNS 通过 Kinesis Data Firehose 订阅增加了对消息存档和分析的支持。您现在可以将 SNS 消息加载到 S3、Redshift、Elasticsearch、MongoDB、Datadog、Splunk、New Relic 等。 SNS 文档有详细信息。