Jika Anda sadar biaya dan perlu mengontrol lingkungan sesuai dengan anggaran, Anda dapat menggunakan notifikasi anggaran terprogram untuk mengotomatiskan respons kontrol biaya berdasarkan notifikasi anggaran.
Notifikasi anggaran menggunakan topik Pub/Sub untuk memberikan status real-time anggaran Penagihan Cloud menggunakan skalabilitas, fleksibilitas, dan keandalan middleware berorientasi pesan perusahaan untuk cloud.
Halaman ini berisi contoh dan petunjuk langkah demi langkah tentang cara menggunakan notifikasi anggaran dengan Cloud Functions untuk mengotomatiskan pengelolaan biaya.
Menyiapkan notifikasi anggaran
Langkah pertama adalah mengaktifkan topik Pub/Sub sesuai anggaran Anda. Hal ini dijelaskan secara detail dalam artikel Mengelola notifikasi pemberitahuan anggaran terprogram.
Setelah mengaktifkan notifikasi anggaran, perhatikan hal-hal berikut:
- Topik Pub/Sub: Ini adalah endpoint notifikasi yang dikonfigurasi untuk anggaran.
- ID Anggaran: Ini adalah ID unik untuk anggaran Anda yang disertakan di semua notifikasi. Anda dapat menemukan ID anggaran dalam anggaran di bagian Kelola notifikasi. ID ditampilkan setelah Anda memilih Hubungkan topik Pub/Sub ke anggaran ini.
Mendengarkan notifikasi
Langkah selanjutnya adalah mendengarkan notifikasi dengan berlangganan topik Pub/Sub. Jika tidak memiliki pelanggan, Pub/Sub akan menghapus pesan yang dipublikasikan dan Anda tidak dapat mengambilnya nanti.
Meskipun ada banyak cara agar Anda dapat berlangganan topik, untuk contoh ini, kami akan menggunakan pemicu Cloud Function.
Buat Cloud Function
Untuk membuat Cloud Function baru:
Di konsol Google Cloud, buka halaman Cloud Function.
Klik
BUAT FUNGSI dan beri nama fungsi yang bermakna bagi anggaran Anda.Di bagian Pemicu, pilih Topik Pub/Sub.
Pilih topik yang Anda konfigurasikan pada anggaran.
Berikan kode sumber dan dependensi untuk fungsi yang akan dijalankan.
Pastikan Anda menetapkan Fungsi untuk dieksekusi ke nama fungsi yang benar.
Mendeskripsikan Cloud Function
Untuk memberi tahu Cloud Function hal yang ingin Anda lakukan dengan notifikasi, Anda dapat menulis kode menggunakan editor langsung atau mengupload file. Untuk detail tentang notifikasi yang akan diterima kode Anda, lihat Format Notifikasi.
Misalnya, fungsi dapat mencatat log notifikasi, atribut, dan data Pub/Sub yang diterima saat dipicu oleh notifikasi anggaran. Untuk mempelajari lebih lanjut, lihat Pemicu Pub/Sub.
Melihat peristiwa Cloud Function
Setelah menyimpan Cloud Function, Anda dapat mengklik LIHAT LOG untuk melihat notifikasi anggaran yang dicatat dalam log. Ini menunjukkan log dari pemanggilan fungsi Anda.
Menguji Cloud Function Anda
Notifikasi dikirim ke Pub/Sub dan pelanggan menerima pesan tersebut. Untuk menguji contoh notifikasi guna memastikan fungsi Anda berfungsi seperti yang diharapkan, publikasikan pesan di Pub/Sub menggunakan objek ini sebagai isi pesan:
{ "budgetDisplayName": "name-of-budget", "alertThresholdExceeded": 1.0, "costAmount": 100.01, "costIntervalStart": "2019-01-01T00:00:00Z", "budgetAmount": 100.00, "budgetAmountType": "SPECIFIED_AMOUNT", "currencyCode": "USD" }
Anda juga dapat menambahkan atribut pesan seperti ID akun penagihan. Lihat dokumentasi format notifikasi lengkap untuk informasi selengkapnya.
Mengirim notifikasi ke Slack
Email tidak selalu menjadi cara terbaik untuk mendapatkan informasi terbaru tentang biaya cloud Anda, terutama jika anggaran Anda sangat penting dan sensitif terhadap waktu. Dengan notifikasi, Anda dapat meneruskan pesan anggaran ke media lain.
Dalam contoh ini, kami menjelaskan cara meneruskan notifikasi anggaran ke Slack. Dengan cara ini, setiap kali Penagihan Cloud memublikasikan notifikasi anggaran, Cloud Function menggunakan bot untuk memposting pesan ke saluran Slack dari ruang kerja bot.
Menyiapkan saluran dan izin Slack
Langkah pertama adalah membuat ruang kerja Slack Anda dan token pengguna bot yang digunakan untuk memanggil Slack API. Token API dapat dikelola di https://api.slack.com/apps. Untuk petunjuk detailnya, lihat Pengguna Bot di situs Slack.
Menulis Cloud Function
Buat fungsi baru dengan mengikuti langkah-langkah di Membuat Cloud Function. Pastikan pemicu ditetapkan ke topik Pub/Sub yang sama dengan yang ditetapkan untuk digunakan oleh anggaran Anda.
Tambahkan dependensi:
Node.js
Salin kode berikut ke
package.json
Anda:Python
Salin kode berikut ke
requirements.txt
Anda:Tulis kode atau gunakan contoh di bawah ini untuk memposting notifikasi anggaran ke saluran chat Slack menggunakan Slack API.
Pastikan parameter postMessage Slack API berikut disetel dengan benar:
- Token akses OAuth Pengguna Bot
- Nama saluran
Contoh kode:
Node.js
Python
Sekarang Anda dapat Menguji Cloud Function untuk melihat pesan yang muncul di Slack.
Membatasi (menonaktifkan) penagihan untuk menghentikan penggunaan
Contoh ini menunjukkan cara membatasi biaya dan menghentikan penggunaan untuk suatu project dengan menonaktifkan Penagihan Cloud. Menonaktifkan penagihan pada project akan menyebabkan semua layanan Google Cloud dalam project dihentikan, termasuk layanan paket gratis.
Mengapa menonaktifkan penagihan?
Anda mungkin membatasi biaya karena Anda memiliki batas jumlah uang yang dapat dibelanjakan di Google Cloud. Hal ini biasa terjadi pada siswa, peneliti, atau developer yang bekerja di lingkungan sandbox. Dalam kasus ini, Anda ingin menghentikan pengeluaran dan mungkin bersedia menonaktifkan semua layanan dan penggunaan Google Cloud saat batas anggaran tercapai.
Sebagai contoh, kami menggunakan acme-backend-dev sebagai project non-produksi yang Penagihan Cloud-nya dapat dinonaktifkan dengan aman.
Sebelum mulai menggunakan contoh ini, pastikan Anda telah melakukan hal berikut:
Aktifkan Cloud Billing API. Cloud Function Anda perlu memanggil Cloud Billing API untuk menonaktifkan Penagihan Cloud untuk sebuah project.
Siapkan anggaran untuk memantau biaya project dan aktifkan notifikasi anggaran.
Menulis Cloud Function
Selanjutnya, Anda perlu mengonfigurasi Cloud Function untuk memanggil Cloud Billing API. Tindakan ini memungkinkan Cloud Function menonaktifkan Penagihan Cloud untuk project contoh acme-backend-dev.
Buat fungsi baru dengan mengikuti langkah-langkah di Membuat Cloud Function. Pastikan pemicu ditetapkan ke topik Pub/Sub yang sama dengan yang ditetapkan untuk digunakan oleh anggaran Anda.
Tambahkan dependensi berikut:
Node.js
Salin kode berikut ke
package.json
Anda:Python
Salin kode berikut ke
requirements.txt
Anda:Salin kode di bawah ke dalam Cloud Function.
Tetapkan fungsi yang akan dieksekusi ke "stopBilling" (Node) atau "stop_billing" (Python).
Bergantung pada runtime Anda, variabel lingkungan
GOOGLE_CLOUD_PROJECT
mungkin ditetapkan secara otomatis. Tinjau daftar variabel lingkungan yang ditetapkan secara otomatis dan tentukan apakah Anda perlu menetapkan variabelGOOGLE_CLOUD_PROJECT
secara manual ke project yang Penagihan Cloud-nya ingin Anda batasi (nonaktifkan).
Node.js
Python
Mengonfigurasi izin akun layanan
Cloud Function Anda dijalankan sebagai akun layanan yang dibuat otomatis. Agar akun layanan dapat menonaktifkan penagihan, Anda harus memberikan izin yang benar, seperti Billing Admin.
Untuk mengidentifikasi akun layanan yang benar, lihat detail Cloud Function Anda. Akun layanan tercantum di bagian bawah halaman.
Anda dapat mengelola izin Admin Penagihan di halaman Penagihan di konsol Google Cloud.
Untuk memberikan hak istimewa Billing Account Administrator ke akun layanan, pilih nama akun layanan.
Memvalidasi bahwa Penagihan Cloud dinonaktifkan
Saat anggaran mengirimkan notifikasi, project yang ditentukan tidak akan lagi memiliki akun Penagihan Cloud. Jika Anda ingin menguji fungsi, publikasikan contoh pesan yang berisi pesan pengujian di atas. Project tidak akan terlihat lagi di akun Penagihan Cloud dan resource dalam project dinonaktifkan, termasuk Cloud Function jika berada dalam project yang sama.
Anda dapat mengaktifkan kembali Penagihan Cloud secara manual untuk project Anda di konsol Google Cloud.
Mengontrol penggunaan secara selektif
Membatasi (menonaktifkan) Penagihan Cloud seperti yang dijelaskan pada contoh sebelumnya adalah biner dan terminal. Project Anda akan diaktifkan atau dinonaktifkan. Jika dinonaktifkan, semua layanan akan dihentikan dan semua resource pada akhirnya dihapus.
Jika memerlukan respons yang lebih terperinci, Anda dapat mengontrol resource secara selektif. Misalnya, jika ingin menghentikan beberapa resource Compute Engine tetapi membiarkan Cloud Storage tetap utuh, Anda dapat mengontrol penggunaan secara selektif. Cara ini akan mengurangi biaya per jam tanpa menonaktifkan lingkungan Anda sepenuhnya.
Anda dapat menulis kebijakan dengan nuansa yang Anda inginkan. Namun, sebagai contoh, project kami menjalankan riset dengan sejumlah virtual machine Compute Engine, dan menyimpan hasilnya di Cloud Storage. Contoh Cloud Function ini akan menonaktifkan semua instance Compute Engine, tetapi tidak akan memengaruhi hasil yang tersimpan setelah anggaran terlampaui.
Menulis Cloud Function
Buat fungsi baru dengan mengikuti langkah-langkah di Membuat Cloud Function. Pastikan pemicu ditetapkan ke topik Pub/Sub yang sama dengan yang ditetapkan untuk digunakan oleh anggaran Anda.
Pastikan Anda telah menambahkan dependensi yang dijelaskan dalam Membatasi (menonaktifkan) penagihan untuk menghentikan penggunaan.
Salin kode di bawah ke dalam Cloud Function.
Tetapkan fungsi yang akan dieksekusi ke "limitUse" (Node) atau "limit_use" (Python).
Bergantung pada runtime Anda, variabel lingkungan
GCP_PROJECT
mungkin ditetapkan secara otomatis. Tinjau daftar variabel lingkungan yang ditetapkan secara otomatis dan tentukan apakah Anda perlu menetapkan variabelGCP_PROJECT
secara manual ke project yang menjalankan virtual machine.Tetapkan parameter ZONE. Ini adalah zona tempat instance akan dihentikan untuk contoh ini.
Node.js
Python
Mengonfigurasi izin akun layanan
- Cloud Function Anda dijalankan sebagai akun layanan yang dibuat secara otomatis. Untuk mengontrol penggunaan, Anda perlu memberikan izin akun layanan ke layanan apa pun di project yang perlu diubahnya.
- Untuk mengidentifikasi akun layanan yang benar, lihat detail Cloud Function Anda. Akun layanan tercantum di bagian bawah halaman.
- Di konsol Google Cloud, buka halaman IAM untuk menetapkan izin yang sesuai.
Buka halaman IAM
Memvalidasi bahwa instance dihentikan
Saat anggaran mengirimkan notifikasi, virtual machine Compute Engine akan dihentikan.
Untuk menguji fungsi, publikasikan contoh pesan dengan pesan pengujian di atas. Untuk memvalidasi bahwa fungsi tersebut berhasil dijalankan, periksa virtual machine Compute Engine Anda di konsol Google Cloud.