阿里云MNS队列消息被大量消费
场景
阿里云物联网平台数据流转至mns队列,发现mns队列扣费异常,发现消息队列一个月竟然消费了五千多万条消息(然而我们项目还没上线,实际业务根本没有达到这个数量级😱)。如图:
解决措施
补救措施:登入RAM控制台,禁用用户AccessKey,新建用户AccessKey
捣鼓一番,衍生出bug
然后捣鼓一番,悲剧出现了ε(┬┬﹏┬┬)3,物联网平台流转数据至mns队列失败,错误代码9332。如图:
定位出报错原因
一番苦思冥想之后,最后终于定位到原因MNS ServiceException:The request is denied by ram policy.
。原因就是物联网平台服务订阅创建订阅之后会生成AliyunIOTAccessingMNSRole
,可在RAM控制台-RANM角色管理查看。物联网平台数据流转至mns队列时,发现没有操作mns的权限,被ram拒绝了。(原来是我在移除原有权限的时候,一把小心把`AliyunIOTAccessingMNSRole`的操作mns权限也移除了,然后物联网平台自然就权限不够,被RAM无情的拒绝了🙈)
定位出错误原因就好办了,找到`AliyunIOTAccessingMNSRole`,添加mns相关权限。添加后如图:
修改之后观察数据流转(流转正常):
服务器也能正常从队列拉取数据😎
异常消费问题
至于mns队列换用用户AccessKey,是否还会出现异常大量消费,有待后续观察~🐷🐷🐷