如何排查 Amazon SNS 中的手机短信 (SMS) 问题?

上次更新时间:2021 年 6 月 21 日

我的手机短信 (SMS 消息)无法通过 Amazon Simple Notification Service (Amazon SNS) 发送。我该如何排查 Amazon SNS 中的 SMS 消息问题?

解决方法

启用并查看 SMS 消息的 Amazon CloudWatch Logs

检查您是否超出每月的 SMS 支出限额

1.    检查发送失败的 SMS 消息的传输状态日志 ("status": "FAILURE")。

2.    检查发送失败的 SMS 消息的日志以确定是否有以下值:"providerResponse": "No Quota left for account"。如果在日志中看到此值,说明您已经超出每月的 SMS 支出限额

发送失败的 SMS 消息的 CloudWatch 日志事件示例

{
    "notification": {
        "messageId": "efgh9a7-c68f-abcd-bdbe-21ada245e18f",
        "timestamp": "2020-10-21 16:32:10.981"
    },
    "delivery": {
        "destination": "+1234567890",
        "smsType": "Transactional",
        "providerResponse": "No quota left for account",
        "dwellTimeMs": 145
    },
    "status": "FAILURE"
}

注意:您还可以检查 CloudWatch 指标中的 SMSMonthToDateSpentUSD 指标,以确认您是否超出每月的 SMS 支出限额。

3.    若您超出每月的 SMS 支出限额,请在 Amazon SNS 中申请提高 SMS 消息的支出限额。如需了解更多信息,见如何请求提高 Amazon SNS 中的 SMS 消息的支出限额?

重要提示:在收到确认您的 SMS 支出限额已增加的电子邮件后,您还必须在 Amazon SNS 控制台调整您的账户的支出限额。如果您不在 Amazon SNS 控制台上更新 SMS 设置,则您的 SMS 支出限额不会增加。

如果您使用其中一种 AWS 开发工具包发送 SMS 消息,检查您是否超出最高消息价格

1.   检查发送失败的 SMS 消息的传输状态日志 ("status": "FAILURE")。

2.   检查发送失败的 SMS 消息的日志以确定是否有以下值:"providerResponse": "delivery would exceed maxprice"。如果在日志中看到此值,说明您已经超出在您的 AWS.SNS.SMS.MaxPrice 消息属性中配置的价格上限。

注意:您还可以检查 CloudWatch 指标中的 PublishSize 指标,以确认您是否超出消息大小限制。当 Amazon SNS 确定发送消息产生的成本将超出您设置的最高价格时,它就不会这么做。

3.    如果超出您的最高消息价格上限,您可以提高  AWS.SNS.SMS.MaxPrice 值或缩小 SMS 消息的大小。如需了解更多信息,见发布到手机

确认消息目的地所在国家/地区支持您所使用的发端身份

如需查看哪些国家/地区支持或不支持 每种发端身份的完整列表,见 支持的国家和地区(SMS 渠道)

确认您的账户被批准发送 SMS 消息

1.    检查发送失败的 SMS 消息的传输状态日志 ("status": "FAILURE")

2.    检查发送失败的 SMS 消息的日志以确定是否有以下值:"providerResponse": "Your account requires additional review prior to being able to send SMS messages"。如果您在失败 SMS 的发送日志中看到此值,说明 Amazon SNS 团队缺少相关信息以允许您的账户发送 SMS 消息。
注意:为防止滥用,Amazon SNS 要求客户在发送 SMS 消息前为其支出限额和使用案例得到批准。

3.    若您的账户未得到发送 SMS 消息的批准,在 AWS Support Center 中开立一个 Service limit increase(提高服务限额)工单。如需了解更多信息,见如何请求提高 Amazon SNS 中的 SMS 消息的支出限额?


这篇文章对您有帮助吗?


您是否需要账单或技术支持?