为什么AWS SNS将用户的404响应视为成功



我很难理解SNS如何处理响应消息。我的SNS订阅者是一个可能会关闭或简单地返回4xx错误的页面。

不过,出于某种原因,SNS似乎将返回4xx错误代码的请求视为成功。

当响应代码是4xx而不仅仅是5xx时,我如何使它失败?

从日志中,我们可以看到订阅者返回了一个状态代码404 Not found,但尽管如此,请求的状态仍然是SUCCESS。

{
"notification": {
"messageMD5Sum": "fd746e97153916fd99bba*********",
"messageId": "be666c50-8de5-594b-9e77-*********",
"topicArn": "arn:aws:sns:us-east-1:060758096283:*********,
"timestamp": "2021-11-23 14:21:23.778"
},
"delivery": {
"deliveryId": "ef278086-2a70-5512-a191-da90d1534d24",
"redrivePolicy": "{"deadLetterTargetArn":"arn:aws:sqs:us-east-1:*********:*********-DLQ"}",
"destination": "*********/subscriber.php",
"providerResponse": "Not Found",
"dwellTimeMs": 80,
"attempts": 1,
"statusCode": 404
},
"status": "SUCCESS"
}

这导致了我的监控问题,因为如果不手动查找,很难知道我的请求是否真的成功。

SNS的工作是向端点传递消息。如果端点以有效的状态代码(而不是5XX失败(进行响应,则认为消息的传递成功。该消息的响应方式取决于接收的API。

确切地说,只有在200-499范围之外的状态代码才会被视为失败,并根据您的重试策略进行重试https://docs.aws.amazon.com/sns/latest/dg/sns-message-delivery-retries.html.一旦最大重试次数用完,消息将传递到DLQ(如果已配置(。

最新更新