如何确认订阅并获取HTTP端点的SNS通知?

我正在使用Amazon Elastic Beanstalk运行nodejs网页。 我只想从AWS SNS发送通知到这个网页并实时捕获它们。 所以,当我发布到HTTP端点时,没有任何反应,我不知道如何获得通知。

作为Http端点,我设置了我的AWS Elastic-Beanstalk http地址。

我正在阅读亚马逊文档,但无处可查,如何在http端点上捕获一次sns消息。

请任何帮助将非常感激。 谢谢。

当您给HTTP / HTTPS端点并从aws控制台创build订阅时,会发生什么情况是,Amazon向该端点发送订阅消息。 现在这是一个rest电话,你的应用程序必须有一个这个端点的处理程序,否则你会错过捕获这个订阅消息。 您的处理程序传递的httpRequest对象需要访问它的SNSMsgTypeHdr头字段。 这个值将是“SubscriptionConfirmation”。 你需要先捕获这个特定的消息,然后获取订阅url。 您可以在应用程序中处理它,也可以将其打印出来,然后手动访问该url以进行订阅。 理想情况下,我会build议订阅相同的主题与您的邮件编号相同,以便每次您的应用程序得到一个消息推送,您的邮件编号也获得消息(尽pipe代币将是不同的),但至less你会确保消息被推送到您的端点。 所有你需要做的就是继续工作你的应用程序来处理那个端点上的消息,然后按照你的要求。

有三种types的消息与SNS。 订阅,取消订阅和通知。 在您正确处理订阅消息之前,您将不会收到任何通知消息。 其中包括在收到订阅请求时向AWS提出API请求。

在这种情况下的调用是ConfirmSubscription: http ://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SNS.html#confirmSubscription-property

一旦你这样做,那么你将开始接收通知消息,你可以处理这些代码允许。

订阅您的端点后,Amazon SNS将向terminal发送预订确认消息。 您应该在端点上具有从预订确认消息中检索SubscribeURL值的代码,并访问由SubscribeURL本身指定的位置,或使其可供您使用,以便您可以手动访问SubscribeURL ,例如使用Web浏览器。

在订阅确认之前,Amazon SNS不会将消息发送到端点。

您可以使用Amazon SNS控制台validation订阅是否已确认:订阅ID将显示订阅的ARN,而不是您在首次添加订阅时看到的PendingConfirmation值。