Mengelola biaya App Engine

Dengan App Engine, Anda hanya membayar resource yang digunakan di luar kuota gratis. Setelah Anda melebihi kuota gratis, biaya akan diskalakan sesuai dengan jumlah traffic yang diterima aplikasi Anda.

Untuk membatasi biaya aplikasi App Engine, Anda dapat menggunakan salah satu mekanisme berikut:

  • Menentukan jumlah maksimum instance
  • Membuat pemberitahuan anggaran
  • Menonaktifkan aplikasi secara manual
  • Menonaktifkan aplikasi secara terprogram

Menentukan jumlah maksimum instance

Karena biaya App Engine biasanya diskalakan berdasarkan jumlah traffic yang diterima aplikasi, Anda dapat membatasi biaya dengan membatasi jumlah instance yang dapat dibuat oleh App Engine.

Dengan menetapkan batas maksimum ke 1 instance, penggunaan jam kerja instance Anda biasanya akan tetap berada dalam paket gratis. Namun, menetapkan nilai maksimum yang terlalu rendah dapat mencegah aplikasi Anda memiliki cukup instance untuk melayani permintaan masuk secara memadai.

Untuk menentukan jumlah maksimum instance, gunakan setelan max_instances di file app.yaml aplikasi Anda.

Membuat pemberitahuan anggaran

Pemberitahuan anggaran akan mengirimkan notifikasi saat biaya Anda melampaui nilai minimum yang ditentukan. Saat menerima notifikasi, Anda dapat membatasi biaya dengan menurunkan nilai setelan max_instances atau menonaktifkan aplikasi Anda.

Untuk mulai menggunakan pemberitahuan anggaran, lihat Menetapkan pemberitahuan anggaran.

Memilih cakupan pemberitahuan anggaran

Anda dapat membuat pemberitahuan anggaran untuk total biaya semua layanan Google Cloud dalam satu atau beberapa project, atau hanya untuk biaya App Engine.

Untuk membuat pemberitahuan anggaran hanya untuk biaya dari App Engine, di kolom Products di Budget alert, pilih App Engine. Pemberitahuan akan dipicu saat total biaya dari semua resource App Engine melebihi jumlah yang Anda tentukan, termasuk:

  • Jam kerja instance di lingkungan standar App Engine
  • RAM dan jam kerja instance di lingkungan fleksibel App Engine
  • Layanan paket App Engine

Untuk daftar lengkap resource App Engine yang dapat ditagih, lihat SKU App Engine.

Menonaktifkan aplikasi secara manual

Menonaktifkan aplikasi untuk sementara akan menghentikan penyajian aplikasi dan menimbulkan biaya penagihan terkait penyajian aplikasi Anda. Semua setelan konfigurasi dan data aplikasi tetap tidak berubah, dan jika sudah siap untuk mulai menjalankan aplikasi lagi, Anda dapat mengaktifkannya.

Saat aplikasi dinonaktifkan, permintaan ke aplikasi Anda akan gagal. Anda dapat terus dikenai biaya dari produk Google Cloud lainnya. Misalnya, jika project Anda telah melampaui kuota gratis untuk Cloud Storage, Anda akan terus dikenai biaya penyimpanan.

Untuk mengetahui informasi selengkapnya, lihat Menonaktifkan aplikasi.

Menonaktifkan aplikasi secara terprogram

Anda dapat menggunakan Budget Alerts, Pub/Sub, dan fungsi Cloud Run untuk menonaktifkan aplikasi secara otomatis saat biaya melebihi batas yang ditentukan.

Seperti halnya menonaktifkan aplikasi secara manual:

  • Semua setelan konfigurasi dan data aplikasi Anda tidak berubah.
  • Jika sudah siap untuk mulai menjalankan aplikasi lagi, Anda dapat mengaktifkannya.
  • Permintaan ke aplikasi Anda akan gagal saat aplikasi dinonaktifkan.
  • Anda dapat terus dikenai biaya dari produk Google Cloud lainnya selama aplikasi Anda dinonaktifkan.

Untuk menonaktifkan aplikasi secara terprogram:

  1. Buat pemberitahuan anggaran yang mengirimkan notifikasi ke topik Pub/Sub. Untuk mengetahui detailnya, lihat Mengelola notifikasi terprogram.

    Untuk membuat pemberitahuan anggaran hanya untuk biaya dari App Engine, di kolom Products di Anggaran, pilih App Engine. Untuk mengetahui informasi tentang resource yang dapat memicu pemberitahuan ini, lihat Membuat pemberitahuan anggaran.

  2. Di fungsi Cloud Run, buat fungsi yang dipicu oleh topik Pub/Sub. Untuk mengetahui detailnya, lihat Membuat Cloud Function.

    Saat membuat fungsi:

    1. Gunakan kode sumber berikut:

      import base64
      import json
      import os
      
      from googleapiclient import discovery
      
      APP_NAME = os.getenv("GCP_PROJECT")
      
      
      def limit_use_appengine(data, context):
          pubsub_data = base64.b64decode(data["data"]).decode("utf-8")
          pubsub_json = json.loads(pubsub_data)
          cost_amount = pubsub_json["costAmount"]
          budget_amount = pubsub_json["budgetAmount"]
          if cost_amount <= budget_amount:
              print(f"No action necessary. (Current cost: {cost_amount})")
              return
      
          appengine = discovery.build("appengine", "v1", cache_discovery=False)
          apps = appengine.apps()
      
          # Get the target app's serving status
          target_app = apps.get(appsId=APP_NAME).execute()
          current_status = target_app["servingStatus"]
      
          # Disable target app, if necessary
          if current_status == "SERVING":
              print(f"Attempting to disable app {APP_NAME}...")
              body = {"servingStatus": "USER_DISABLED"}
              apps.patch(appsId=APP_NAME, updateMask="serving_status", body=body).execute()
      
      
    2. Tambahkan dependensi berikut ke file requirements.txt fungsi Anda:

      google-api-python-client==2.131.0
    3. Di bagian Function toexecute, masukkan limit_use_appengine.

    4. Klik Environment variables, networking, timeouts and more.

    5. Pilih akun layanan yang memiliki peran App Engine Admin. Akun layanan default App Engine memiliki peran ini secara default.

  3. Uji fungsi.

Saat pemberitahuan anggaran dipicu, email akan dikirimkan ke pengguna di akun Penagihan Cloud Anda, dan fungsi Anda mulai menonaktifkan aplikasi. Prosesnya mungkin perlu waktu beberapa menit agar selesai.

Untuk memverifikasi bahwa fungsi berhasil dijalankan, lihat dasbor App Engine. Pesan akan muncul di dekat bagian atas untuk menunjukkan bahwa aplikasi Anda dinonaktifkan.

Buka dasbor App Engine

Jika Anda ingin aplikasi terus melayani permintaan, buka Application settings, lalu klik Enable application.

Buka Application settings