首页 > 解决方案 > 订阅推送通知期间出现超时错误

问题描述

当我尝试订阅推送通知并将我的 API Gateway 端点用作通知 url

curl -H 'Content-Type: application/json' -H 'Authorization: Bearer TOKEN' \
-d '{
     "changeType": "Created", 
     "expirationDateTime": "2020-09-04T14:48:27.391Z", 
     "notificationUrl": "AWS_API_GATEWAY/dev/webhooks",
     "resource": "/me/mailfolders('\''inbox'\'')/messages"}' \
-X POST "https://graph.microsoft.com/v1.0/subscriptions"

我收到请求超时错误()

{
  "error": {
    "code": "InvalidRequest",
    "message": "Subscription validation request timed out.",
    "innerError": {
      "date": "2020-09-02T14:51:26",
      "request-id": "2d4c31ae-af4c-40cb-a40e-d7ec4281ddfc"
    }
  }
}

几周前,同样的请求没有任何问题。现在大约 5 个中只有 1 个是成功的。但是,当我执行相同的请求但将我的 ngrok 作为通知 url(这是非常相同的 AwsApiGateway 的简单反向代理ngrok -> ruby proxy stuff -> aws api gateway)时,它可以完美运行

curl -H 'Content-Type: application/json' -H 'Authorization: Bearer TOKEN' \
-d '{
     "changeType": "Created", 
     "expirationDateTime": "2020-09-04T14:48:27.391Z", 
     "notificationUrl": "NGROK_PROXY/dev/webhooks",
     "resource": "/me/mailfolders('\''inbox'\'')/messages"}' \
-X POST "https://graph.microsoft.com/v1.0/subscriptions"

看起来某些 Outlook 对我的 ApiGateway 端点设置了一些限制。不过,我还没有在文档中找到对这种行为的任何解释。

任何帮助将非常感激

标签: microsoft-graph-apiaws-api-gateway

解决方案


我们的图形订阅端点(由 NodeJS Lambda 支持的 AWS API 网关)遇到了这个确切的问题,并且正在努力追查确切的原因。

我们尝试了多种方法来调试正在发生的事情,包括:

  • 检查 Lambda 执行日志 - 对于失败的尝试没有任何影响。
  • API Gateway 日志 - 没有任何记录。
  • API Gateway 'Access Logging' - 再次没有。
  • 从在不同 Azure 区域中运行的 VM 调用端点 - 没有问题。

我们对您得出了类似的结论 - Microsoft Graph API (有意或无意地)阻止了对 AWS API Gateway 端点的订阅请求。

我们的解决方案是在 API Gateway 端点前添加一个 Route53 托管域。自从添加它以来,由于“超时”,我们的失败率为零。


推荐阅读