我新配置了SNS,以发送SMS(文本消息)以接收有关某个主题的警报。我看到警报被触发,并且我看到所有消息均失败的SMS传递统计信息:
我还配置了“帐户支出限额”(认为这可能是问题所在)。仍然所有SMS消息都失败。
国家/地区已列在国家/地区列表中:
Delivery statistics by country (1)
Country Sent Failed Delivery rate
Switzerland 6 6 0%
我还配置了“使用情况报告的Amazon S3存储桶名称”,但是没有任何内容保存在存储桶中。 (我使用了AWS帮助页面:https://docs.aws.amazon.com/sns/latest/dg/sms_stats_usage.html和Example Policy-替换了我的存储桶名称。)
还是:
如何解决此问题或继续对其进行故障排除?
更新:电子邮件SNS订阅有效(我收到了电子邮件),每次我收到电子邮件时,失败的SMS号码都会增加(因为两个订阅都处于活动状态)。 :(
答案 0 :(得分:0)
SMS失败可能是由于许多原因造成的。 CloudWatch日志中针对失败消息的provider response是什么?那将是开始调试的最佳位置。
我还将根据AWS的Pinpoint Phone Validation endpoint验证端点的有效性,以查看其是否返回有效响应。
{
"NumberValidateResponse": {
"Carrier": "ExampleCorp Mobile",
"City": "Seattle",
"CleansedPhoneNumberE164": "+12065550142",
"CleansedPhoneNumberNational": "2065550142",
"Country": "United States",
"CountryCodeIso2": "US",
"CountryCodeNumeric": "1",
"OriginalPhoneNumber": "+12065550142",
"PhoneType": "MOBILE",
"PhoneTypeCode": 0,
"Timezone": "America/Los_Angeles",
"ZipCode": "98101"
}
}
SNS无法向PhoneType
VOIP,固定电话或未知地址发送消息。如果您仍然遇到问题,可以使用CloudWatch日志编辑问题。
如果存储桶策略允许SNS向S3添加对象,我将等待几天以使其反映出来。尽管成功消息会很快记录下来,但失败消息通常会重试直到其TTL过期,因此它会在S3上显示得很晚-这也与CloudWatch日志类似。
答案 1 :(得分:0)
Cloudwatch Logs 是找出失败原因的唯一选择。 默认情况下,没有用户角色附加到 SNS,因此不记录日志!
开始记录日志
1.转到 AWS SNS 移动文本消息
2.点击编辑短信首选项
3.在交付状态记录部分创建一个新的服务角色
现在发送失败后,转到 Cloudwatch Logs 查看 json 错误响应,如下所示
{
"notification": {
"messageId": "xxxx-xxxxx-xxxxx-xxxx-xxx",
"timestamp": "2021-04-08 15:37:49.919"
},
"delivery": {
"destination": "+xxxxxxxxxxxx",
"smsType": "Promotional",
"providerResponse": "Your account requires additional review prior to being able to send SMS messages. Please create a support ticket with an explanation of your use case. https://console.aws.amazon.com/support/cases#/create?issueType=service-limit-increase&limitType=service-code-sns-text-messaging",
"dwellTimeMs": 100
},
"status": "FAILURE"
}