如何排查 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 消息
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 消息的支出限额?