【问题标题】:aws sns confirm subscription request processing issueaws sns 确认订阅请求处理问题
【发布时间】:2022-03-07 01:39:49
【问题描述】:

我正在尝试为 s3 中的存储桶实现 aws sns 服务,我正在关注此文档 https://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.html 据此,确认订阅请求中将有订阅 url,它将到达我们提供的 url,但我在请求中收到空正文。 我试图记录身体,但给了我一个空对象。并尝试使用 bodyparser 但结果相同。

这是我正在实施的路线。

 router.post("/s3FileCallback", function (req, res) {
      debugger;
      var bodyParser = require('body-parser');
      var app = express();
      app.use(bodyParser.urlencoded({ extended: false }));
      app.use(bodyParser.json())
      if (req.get("x-amz-sns-message-type") == "SubscriptionConfirmation") {
        console.log("arn" + req.get("x-amz-sns-topic-arn"));
        const subscribeUrl = req.body.SubscribeURL;
        console.log("subscribeUrl" + subscribeUrl);
})

我有什么遗漏的吗?请任何人指出我正确的方向。

【问题讨论】:

  • 如果我的问题没有意义或者我没有提供详细信息,请告诉我。

标签: express amazon-sns


【解决方案1】:

我找到了我缺少的东西,

router.post('/s3FileCallback', function(req, res) {
    debugger;
    if (req.get('x-amz-sns-message-type') == 'SubscriptionConfirmation') {
        console.log('arn' + req.get('x-amz-sns-topic-arn'));
        const subscribeUrl = req.body.SubscribeURL;
        console.log('subscribeUrl' + subscribeUrl);
    }
});

我使用正文解析器作为中间件, 亚马逊在帖子请求中发送内容类型为 text\plain 感谢这个论坛,直到我遇到这个我才意识到类型 https://forums.aws.amazon.com/message.jspa?messageID=261061#262098

所以在使用 bodyparser 之前尝试了改变标题

app.use(function(req, res, next) {
    if (req.get('x-amz-sns-message-type')) {
        req.headers['content-type'] = 'application/json';
    }
    next();
});
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: false }));

所以现在 req 被解析为 json。

【讨论】:

  • 救命稻草。我不明白他们为什么自 2011 年以来没有解决这个问题。
  • 我遇到了同样的问题。你的回答非常有帮助。谢谢!
  • 这需要更多的支持。任何使用 Node 和 Express 尝试读取传入请求的人都会遇到这种情况。
  • 2020 年了,还没有修复 :( 在这之后 3 小时被宠坏了
  • 谢谢,非常感谢。这是 AWS 文档中缺少的信息。
【解决方案2】:

如果您使用的是 php,这应该可以工作

$res = file_get_contents('php://input');
file_put_contents('response.txt', $res. "\n", FILE_APPEND);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 2016-04-03
    • 2018-07-30
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多