从SNS发布消息到Kinesis

10

我有一个需求,需要将SNS的消息发布到Kinesis。我发现,不能直接通过与SNS / SQS订阅相同来完成。我需要编写Lambda从SNS中获取并将其发布到Kinesis。

是否有其他直接从SNS发布记录到Kinesis的方法?

谢谢

2个回答

11

Amazon SNS是一种发布/订阅模型。

向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。


4
您可以使用 AWS 最新推出的 EventBridge 服务 https://aws.amazon.com/eventbridge/ 。它支持将 Kinesis 作为订阅者。 - Deepak
2
此答案已不再有效,因为所请求的功能现在在 SNS 中可用:https://aws.amazon.com/about-aws/whats-new/2021/01/amazon-sns-adds-support-for-message-archiving-and-analytics-via-kineses-data-firehose-subscriptions/ - Otavio Ferreira

6

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接