订阅推送通知期间发生超时错误

时间:2020-09-02 15:35:42

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

当我尝试订阅推送通知并将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用作通知网址(这是非常相同的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端点设置了一些限制。我在文档中还没有找到关于这种行为的任何解释。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

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

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

  • 检查Lambda执行日志-对于失败的尝试不做任何事情。
  • API网关日志-未记录任何内容。
  • API网关“访问记录”-再次没有。
  • 从运行在不同Azure区域中的VM调用终结点-正常工作。

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

我们的解决方案是在API网关端点的前面添加一个Route53托管域。自添加此功能以来,由于“超时”,我们的失败次数为零。