我的手机短信(SMS 消息)无法通过 Amazon Simple Notification Service(Amazon SNS)发送。
解决方法
针对短信启用并查看 Amazon CloudWatch Logs
有关详细信息,请参阅查看短信传输的 Amazon CloudWatch 指标和日志。另请参阅如何访问短信的 Amazon SNS 主题传输日志?
检查您是否超过了月度短信支出限额
1. 查看您的传输状态日志,了解失败的短信传输("status": "FAILURE")。
2. 检查失败的短信传输日志中是否有以下值:"providerResponse": "No Quota left for account"。如果您在失败的短信传输日志中看到此值,则表示您已超过月度短信支出限额。
失败的短信传输 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 指标,以确认您是否超过了月度短信支出限额。
3. 如果您超过了月度短信支出限额,请在 Amazon SNS 中申请提高短信的支出限额。有关详细信息,请参阅申请增加 Amazon SNS 中短信的支出限额。
**重要事项:**收到短信支出限额增加确认后,您必须在 Amazon SNS 控制台上调整账户的支出限额。如果不在 Amazon SNS 控制台上更新短信设置,则您的短信支出限额不会增加。
如果您使用 AWS SDK 发送短信,请检查是否超过了最高消息价格
1. 查看您的传输状态日志,了解失败的短信传输("status": "FAILURE")。
2. 检查失败的短信传输日志中是否有以下值:"providerResponse": "delivery would exceed maxprice"。如果您在失败的短信传输日志中看到此值,则表明您已超出在 AWS.SNS.SMS.MaxPrice 消息属性中配置的价格限制。
**注意:**您也可以在 CloudWatch 指标中查看 PublishSize 指标,以确认您是否超过了消息大小限制。如果 Amazon SNS 确定发送消息产生的费用超过了您设置的最高价格,则它不会发送消息。
3. 如果超出最高消息价格限制,您可以提高 AWS.SNS.SMS.MaxPrice 值或缩小短信的大小。有关详细信息,请参阅发布到手机。
确认您的账户已获准发送短信
1. 查看您的传输状态日志,了解失败的短信传输("status": "FAILURE")。
2. 检查失败的短信传输日志中是否有以下值:"providerResponse": “您的账户需要额外审核才能发送短信”。此值表示 Amazon SNS 团队没有允许您的账户发送短信的必要信息。
**注意:**为防止滥用,Amazon SNS 要求客户在发送短信之前获得支出限额和用例的批准。
3. 如果您的账户未获得发送短信的批准,请在 AWS Support Center 中心提交一个提高服务限额案例。
确认您的源身份是否受区域支持
您要向其发送消息的国家/地区或 AWS 区域必须支持您正在使用的源身份。
例如,要向美国目的地电话号码发送消息,您所在区域必须有支持的美国源号码(TFN/10DLC/ShortCode)。或者,要向加拿大目的地电话号码发送消息,您所在区域必须有支持的加拿大源号码(LongCode/ShortCode)。
有关支持和不支持每种源身份的国家/地区的完整列表,请参阅支持的区域和国家/地区。