Hari ini saya mempelajari hal baru dengan Azure API sewaktu menarik data billing guna keperluan cost monitoring. Saya tidak menyangka proses untuk bisa mendapatkan data billing itu cukup berliku, namun sekarang saya cukup paham bagaimana cara memprosesnya. Kayanya saya sudah bisa ambil sertifikasi FinOps ya haha.
Berawal dari mengikuti dokumentasi dan tutorial yang menyebutkan saya harus memiliki beberapa key untuk bisa memanggil Azure API. Ini hal standar karena memang semua platform akan memiliki caranya sendiri untuk bisa menggunakan API mereka.
Ketika skrip sudah berhasil dibuat, saya cukup senang karena berhasil mendapatkan data yang saya butuhkan. Tapiiii saya melihat kok nominal Cost itu bernilai 0. Saya pikir ada yang salah ketika mapping nama kolomnya, tapi setelah melakukan berbagai cara, angkanya tetap saja 0.
Pasti ada yang salah.
Benar saja, setelah berkelana ke beberapa tempat dan bertanya ke LLM, saya mendapatkan jawaban yaitu karena tipe akun kami di Azure itu Enterprise Agreement (EA).
Secara default, melakukan query pada Subscription Scope di akun EA sering kali tidak memunculkan nominal biaya. Hal ini terjadi karena data finansial utama pada EA berada di level Billing Account, bukan di level langganan individu.
Masalah kedua adalah Unauthorized (401). Meskipun Service Principal sudah dibuat, ia tidak secara otomatis memiliki “kunci” untuk masuk ke brankas billing perusahaan.
Langkah-langkah yang saya tempuh hingga berhasil menyinkronkan data API dengan portal Azure:
- Berpindah ke Billing Account Scope. Dari awalnya menggunakan Subscription Scope, saya beralih menggunakan scope:
/providers/Microsoft.Billing/billingAccounts/{billingAccountId}. Ini adalah source of truth untuk seluruh biaya di bawah kontrak EA. - Karena Service Principal tidak memiliki akses ke level EA, saya melakukan assign role EnrollmentReader. Tip penting: Pemberian role ini membutuhkan waktu propagasi sekitar 10-15 menit. Kesabaran adalah kunci di sini!
Hasilnya, sekarang saya sudah bisa mendapatkan data billing dari Azure secara akurat. Saya sudah bandingkan angkanya dengan nilai di Portal Azure juga sudah sesuai.
Integrasi Azure Billing API pada level Enterprise memang menantang di sisi autentikasi dan scope. Namun, dengan konfigurasi yang tepat, kita bisa mendapatkan visibilitas biaya yang 100% akurat dan otomatis.