SNS订阅从未发送/接收?

时间:2013-10-19 05:18:44

标签: php amazon-web-services amazon-sns

我在My SNS控制台面板中创建了一个http用户。我需要保持每封电子邮件的状态(退回,投诉)。

我已经设置了一个可公开访问的http端点,创建了对我的Topic的订阅,我点击了Subscribe按钮,弹出窗口显示“确认消息将被发送到订阅的端点。”

我只是不明白如何验证我的端点并从Amazon SNS收集帖子数据。

我已将端点网址设置为以下格式。

http://example.com/amazon_sns/sns_notification.php

当我从浏览器向端点请求写入数据时,端点会将所有帖子数据附加到文本文件中。 我正在做错事。

我一直试图订阅1天,没有运气。任何帮助非常感谢。

2 个答案:

答案 0 :(得分:1)

注意:我假设问题是您的端点没有看到任何请求。如果那不是您的问题,请回复我并更新您的问题。

以下是一些可能性:

  1. 您正在使用带有自签名证书的https(或来自SNS不信任的公司的证书)(https://forums.aws.amazon.com/thread.jspa?messageID=204271&#204271
  2. 您正在侦听端口80以外的端口(对于http),但尚未将端口指定为SNS
  3. 您的ISP阻止了您正在侦听的任何端口上的传入连接
  4. 您正在侦听的端口上有防火墙阻止或路由器没有转发连接。
  5. 您的PHP出了问题
  6. 有些问题会让我更容易为您提供帮助:

    1. 你在哪里托管php(你的房子,EC2,托管服务等)
    2. 您是否可以从托管位置以外的人那里访问php页面?

答案 1 :(得分:1)

将它放在你的sns_notification.php

然后,您将收到发布到电子邮件中网址的正文,其中将显示来自亚马逊的消息,其中包含确认您的SNS主题订阅的链接。

<?php

$headers = apache_request_headers();
$body = @file_get_contents('php://input');

mail("YOUREMAILADDRESS@gmail.com", "ses callback", print_r($headers, 1)."\n---body---\n".$body);

?>