場景
阿里雲物聯網平台數據流轉至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,是否還會出現異常大量消費,有待后續觀察~🐷🐷🐷