AWS SNS 创建 订阅 发布
20180810 chenxin
为实现短信报警,添加以下SNS的短信(SMS)订阅
选择主题,创建新主题,或修改原有主题
进入对应主题后,选择创建订阅,选择SMS,添加1个电话号码.重复上述步骤,添加多个电话号码.
https://docs.aws.amazon.com/zh_cn/sns/latest/dg/sms_publish-to-topic.html
如果该地区的aws不支持SMS的话,可以通过lambda方式调用实现:
https://docs.aws.amazon.com/zh_cn/lambda/latest/dg/with-sns-example.html
确实不是每个区域都支持sms服务,如果你需要在不支持sms服务的地方实现短信告警,可以考虑通过SNS触发一个lambda操作,然后在lambda中调用某个web服务实现短信发送,甚至可以是国内运营商的短信服务,当然也可以是向支持短信的aws 区域发送新的sns通知
关于收不到SMS短信的问题
1.需要向AWS提case申请,默认的短信发送消费是1美元,可以申请提高(比如100美元)
2.AWS通过审核后,还需要到SNS的控制台去配置限额(默认是1美元,配置为100美元) SNS->文本消息(SMS)->管理文本消息发送首选项->默认消息类型(促销)->账户支出限额(100美元).其他默认.->更新首选项.
3.依次到其他支持SMS的区域重复操作"2".
创建发送SMS的cloudwatch logs 便于排查收不到短信的原因
选择SNS->"文本消息(SMS)"->"管理文本消息发送首选项"->"用于 CloudWatch Logs 访问的 IAM 角色"创建->百分比(100)(这样所有成功的也会记录)->保存
然后去发送SMS,之后就可以在cloudwatch的"日志"导航里看到对应的日志信息.如:
自动会创建日志组:
成功发送的会记录到 sns/ap-southeast-1/651544429366/DirectPublishToPhoneNumber
类似:
{ "notification": { "messageId": "993bec35-4bab-51a6-8cd3-b812d9eb6b58", "timestamp": "2018-09-28 02:20:48.114" }, "delivery": { "phoneCarrier": "China Mobile", "mnc": 0, "destination": "+8613668169289", "priceInUSD": 0.01531, "smsType": "Promotional", "mcc": 460, "providerResponse": "Message has been accepted by phone carrier", "dwellTimeMs": 862, "dwellTimeMsUntilDeviceAck": 7253 }, "status": "SUCCESS" }
失败发送的会记录到 sns/ap-southeast-1/651544429366/DirectPublishToPhoneNumber/Failure
类似
{ "notification": { "messageId": "203d9f3d-3abc-513b-8fd8-cb1aa97c3a25", "timestamp": "2018-09-28 02:27:12.615" }, "delivery": { "destination": "+8611111111111", "priceInUSD": 0.01531, "smsType": "Promotional", "mcc": 460, "providerResponse": "Unknown error attempting to reach phone", "dwellTimeMs": 330, "dwellTimeMsUntilDeviceAck": 4609 }, "status": "FAILURE" }