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.
Dokumen ini berisi contoh dan petunjuk langkah demi langkah tentang cara menggunakan notifikasi anggaran dengan fungsi Cloud Run 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, contoh ini menggunakan pemicu fungsi Cloud Run.
Membuat Cloud Run Function
Untuk membuat fungsi Cloud Run baru:
Di konsol Google Cloud, buka halaman Cloud Run functions.
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 fungsi Cloud Run
Untuk memberi tahu fungsi Cloud Run 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 fungsi Cloud Run
Setelah menyimpan fungsi Cloud Run, Anda dapat mengklik LIHAT LOG untuk melihat notifikasi anggaran yang dicatat dalam log. Ini menunjukkan log dari pemanggilan fungsi Anda.
Menguji fungsi Cloud Run
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, fungsi Cloud Run 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 mendetail, lihat Pengguna Bot di situs Slack.
Menulis fungsi Cloud Run
Buat fungsi baru dengan mengikuti langkah-langkah di Membuat fungsi Cloud Run. 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 berikut 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 fungsi Cloud Run untuk melihat pesan yang muncul di Slack.
Membatasi (menonaktifkan) penagihan untuk menghentikan penggunaan
Contoh ini menunjukkan cara membatasi biaya dan menghentikan penggunaan untuk 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. Fungsi Cloud Run Anda perlu memanggil Cloud Billing API untuk menonaktifkan Penagihan Cloud untuk sebuah project.
Siapkan anggaran untuk memantau biaya project dan mengaktifkan notifikasi anggaran.
Menulis fungsi Cloud Run
Selanjutnya, Anda perlu mengonfigurasi fungsi Cloud Run untuk memanggil Cloud Billing API. Tindakan ini memungkinkan fungsi Cloud Run menonaktifkan Penagihan Cloud untuk project contoh acme-backend-dev.
Buat fungsi baru dengan mengikuti langkah-langkah di Membuat fungsi Cloud Run. 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 berikut ke fungsi Cloud Run.
Tetapkan fungsi yang akan dieksekusi ke
stopBilling
(Node) ataustop_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
Fungsi Cloud Run 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 fungsi Cloud Run 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 dengan pesan pengujian sebelumnya. Project tidak akan terlihat lagi di akun Penagihan Cloud dan resource dalam project dinonaktifkan, termasuk fungsi Cloud Run 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 project 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 fungsi Cloud Run ini akan menonaktifkan semua instance Compute Engine, tetapi tidak akan memengaruhi hasil yang tersimpan setelah anggaran terlampaui.
Menulis fungsi Cloud Run
Buat fungsi baru dengan mengikuti langkah-langkah di Membuat fungsi Cloud Run. 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 berikut ke fungsi Cloud Run.
Tetapkan fungsi yang akan dieksekusi ke
limitUse
(Node) ataulimit_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
- Fungsi Cloud Run 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 fungsi Cloud Run 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 dari sebelumnya. Untuk memvalidasi bahwa fungsi tersebut berhasil dijalankan, periksa virtual machine Compute Engine Anda di konsol Google Cloud.