方案一.
配置使用sns的每日使用量报告:
订阅每日使用量报告,可在控制台操作配置。
参考:https://docs.aws.amazon.com/zh_cn/sns/latest/dg/sms_stats_usage.html
1.为每日报告形成的csv文件创建s3的一个bucket
2.sms使用量报告订阅到bucket
3.在s3的指定bucket中获取csv文件
4.解析csv文件
方案二,使用cloud watch云监控收集的sns指标:
使用Cloud Watch服务
参考:https://docs.aws.amazon.com/zh_cn/sns/latest/dg/sms_stats_cloudwatch.html
Amazon SNS 会自动收集有关您的 SMS 消息传输的指标并将其推送至 Amazon CloudWatch,该功能自动启用。
1).cloud watch 收集的指标,参考:https://docs.aws.amazon.com/zh_cn/sns/latest/dg/MonitorSNSwithCloudWatch.html#SNS_metricscollected
2).使用cloud watch client的getMetricStatistics方法获取指标统计结果
参考:https://docs.aws.amazon.com/aws-sdk-php/v3/api/api-monitoring-2010-08-01.html#getmetricstatistics
//获取统计结果的方法:
getMetricStatistics([
'Dimensions' => [
[
'Name' => 'TopicName', //使用TopicName,维度
'Value' => 'MDS-US-SMS', //TopicName为
],
],
'Namespace' => 'AWS/SNS', //命名空间为'AWS/SNS'
'MetricName' => 'NumberOfMessagesPublished', //查询指标为'NumberOfMessagesPublished'(发布到您的 Amazon SNS 主题的消息数量),
'StartTime' => '2018-07-01T00:00:00Z', //查询开始时间
'EndTime' => '2018-08-01T00:00:00Z', //查询结束时间
'Period' => 86400, //查询间隔,单位s
'Statistics' => ['Sum'],//统计总和
])
//请求结果:
[
"Label" => "NumberOfMessagesPublished",
"Datapoints" => [],
...
...
]
Datapoints中应该包含请求结果
3).根据Datapoints中的数据分析。
当然NumberOfMessagesPublished指标是cloud watch服务自动在sns中获取的,你也可以自定义指标。
cloud watch还有log服务,这个服务需要在控制台获取,具体使用方法可以参考手册
4).发送短信的demo可以参考我的另外一个博客https://blog.csdn.net/aikiller/article/details/77131988
我们上述说的监控适用于通过topic群发短信的情况,也就是demo博客中的第3节提到的方案
对于直接向指定手机号发送短信的情况(demo博客中第4节提到的方案)我们需要更改维度为
'Dimensions' => [
[
'Name' => 'PhoneNumber', //使用指定手机号发送短信
'Value' => 'PhoneNumberDirect', //使用指定手机号发送短信
],
],
而且这个维度可用的指标只有NumberOfNotificationsDelivered和NumberOfNotificationsDelivered
想要查看自己的sns服务可用的维度和指标有哪些,可以通过调用
listMetrics([
'Namespace' => 'AWS/SNS', //命名空间为'AWS/SNS'
])
获取