最近遇到了Azure帳單超出預算的警示mail, 查了一下發現主要原因是跑爬蟲的azure function resource group的頻寬成本大幅增加, 可是我用了好幾年azure function從來沒被收過頻寬費, 再加上我上次deploy新build是2024年11月的事, 怎麼會4/29開始忽然頻寬量大幅增加...
後來決定先敲Azure support ticket, 讓support幫忙查問題, 不過沒想到這個case直接被轉到billing team, 不像以前會support先調查原因, 現在好像只會被轉給billing team, 然後跟你說會爭取折扣/豁免有問題的計費, 不會幫你查原因了..., 如果要查原因, 就會要求你去買他們技術支援服務, 這讓我不太敢繼續用Azure了, 講得好像Azure都不會有bug導致計費出問題一樣, 都是they的錯...
最後Azure忽然爆增Bandwidth帳單的600多塊減免了450塊:
既然Azure support那邊沒辦法幫我調查原因, 我就想說自己繼續追追看了, 仔細看了下發現並不是azure function的頻寬爆增, 而是azure function綁定的storage account Egress爆增:
看起來metrics最多只能query近兩個月, 可以發現4/29之前Egress都少少的, 而4/29之後整個大爆增, 而這件事也很玄..., 因為我Azure function的storage account只是預設綁定, 我自己根本沒有寫讀寫檔案的程式碼, 所以會用到storage account應該是azure function自己讀寫的, 像是metrics等需求之類的, 要怎麼樣才會忽然爆增這麼多Egress流量, 更不用說我根本沒deploy新build...。
之後重新去查Azure Bandwidth的pricing:
https://azure.microsoft.com/zh-tw/pricing/details/bandwidth/
https://azure.microsoft.com/zh-tw/pricing/details/bandwidth/
上面有寫相同可用性區域內的資料傳輸頻寬免費, 以及網際網路輸出則是前100G免費, 上面看頻寬短短兩個多禮拜頻寬就超過300G, 所以被算錢也不例外, 因為我們azure function為了跑爬蟲一次跑16組 & 散布在各個region, 但是都是共用japan east storage account, 這才導致頻寬要額外算錢...。
現在我這個Japan East的storage account住了三個azure function, 每五分鐘trigger一次, 每trigger一次Egress就會花20~80MB頻寬輸出, 因為我的code完全沒讀寫檔案, 這個頻寬用量真的有點扯..., 到底都用來幹嘛...。
最後有一個想靠邀M$的事, 我重新佈署新的azure function時, 發現azure function在新部署設定檔時, 會預設選你現有的storage account, 然後那個storage account不一定會優先選相同region, 所以你要是一路default設定按下去, 就會發生我上面的問題, 不看文件一路default到底的下場在此...。
所以一路default按到底的人就會高機率選到跨region的現有storage account, 然後帳單金額就增加了, 這真的是bug嗎? 還是feature spec? 我就不下定論了...只覺得好噁心....。