Kelola Functions
Pelajari cara mengelola serverless function Anda melalui antarmuka web.
Mengakses Functions
Navigasi ke halaman Functions dari sidebar untuk melihat semua function Anda:

Halaman Functions menyediakan:
- Tombol New Function - Buat function baru
- Tombol Playground - Bereksperimen tanpa membuat function
- Tombol Refresh - Perbarui daftar function
- Search bar - Temukan function berdasarkan nama atau ID
- Filter runtime - Filter berdasarkan bahasa (Python, JavaScript, TypeScript)
- Filter state - Filter berdasarkan Ready, Creating, Deploying, Error
- Tabel function - Daftar semua function beserta detail dan aksi
Status Function
Function dapat berada dalam beberapa status:

| Status | Deskripsi | Aksi Tersedia |
|---|---|---|
| Ready | Function ter-deploy dan siap | Invoke, Lihat Log, Delete |
| Creating | Function sedang dibuat | Tidak ada (tunggu) |
| Deploying | microVM sedang disiapkan | Tidak ada (tunggu) |
| Error | Function gagal deploy | Lihat Log, Delete |
Transisi status:
- Creating → Deploying → Ready
- Status apa pun → Error (jika ada yang gagal)
Filter dan Pencarian Function
Cari berdasarkan Nama atau ID
Gunakan search bar untuk menemukan function dengan cepat:

- Ketik nama function (mis., “hello”)
- Atau ketik ID function
- Hasil difilter secara instan saat Anda mengetik
- Pencarian tidak case-sensitive
Filter berdasarkan Runtime
Filter berdasarkan bahasa pemrograman:

Opsi:
- All Languages - Tampilkan semua function (default)
- Python - Hanya function Python
- JavaScript (Bun) - Hanya function JavaScript
- TypeScript (Bun) - Hanya function TypeScript
Filter berdasarkan Status
Filter berdasarkan status function:

Opsi:
- All States - Tampilkan semua function (default)
- Ready - Hanya function yang siap
- Creating - Function yang sedang dibuat
- Deploying - Function yang sedang di-deploy
- Error - Function yang gagal
Tips: Gabungkan pencarian dan filter untuk hasil yang tepat.
Informasi Tabel Function
Tabel Functions menampilkan informasi detail:

Penjelasan Kolom
- Name - Nama function (klik untuk membuka halaman detail)
- Language - Badge runtime (Python, JavaScript, TypeScript)
- State - Status saat ini dengan badge berwarna
- Last Invoked - Waktu relatif (mis., “2 hours ago”) atau “Never”
- 24h Invocations - Jumlah invokasi dalam 24 jam terakhir
- Guest IP - Alamat IP dan port microVM function
- CPU - Jumlah vCPU (mis., “1 vCPU”)
- Memory - Memory yang dialokasikan dalam MB (mis., “512 MB”)
- Owner - Siapa yang membuat function:
- “You” (hijau) - Function Anda
- “Other User” - Function pengguna lain
- “System” - Function yang dibuat sistem
- Actions - Tombol aksi (Invoke, Logs, Delete)
Paginasi
Jika Anda memiliki lebih dari 10 function:

- 10 function per halaman
- Klik nomor halaman untuk navigasi
- Gunakan panah Previous/Next
Invoke Function
Invoke dari Daftar Functions
Untuk menguji function, klik tombol Invoke (ikon ▶ Play):

Langkah:
- Temukan function Anda di tabel
- Di kolom Actions, klik tombol Invoke
- Dialog invoke terbuka
Dialog Invoke
Dialog invoke memungkinkan Anda menguji function dengan input kustom:

1. Masukkan Payload JSON
Tulis atau tempel payload JSON di editor Monaco:

Contoh payload:
{
"name": "Alice",
"age": 30
}
{
"operation": "add",
"a": 10,
"b": 5
}
2. Validasi JSON
Editor memvalidasi JSON secara real-time:

✅ “JSON valid” (hijau) - Siap untuk di-invoke

❌ “Error: Unexpected token…” (merah) - Perbaiki JSON terlebih dahulu
Tips: Klik tombol Format JSON untuk auto-format.
3. Klik Invoke
Klik tombol Invoke untuk mengeksekusi:

Function akan mengeksekusi dan menampilkan respons:

4. Lihat Respons
Panel respons menampilkan:
Body respons:
{
"statusCode": 200,
"headers": {
"content-type": "application/json"
},
"body": "{\"result\": 15}"
}
Aksi respons:
- Copy - Salin respons ke clipboard
- Clear - Bersihkan panel respons
Tutup Dialog
Klik Cancel untuk menutup dialog invoke.
Catatan: Payload disimpan per-function, sehingga membuka kembali akan menampilkan input terakhir Anda.
Melihat Log Function
Untuk debug atau monitor eksekusi function:
Akses Log
Klik tombol Logs (ikon 📄 FileText) di kolom Actions:

Ini membuka halaman Detail Function pada tab Logs.
Lihat Lihat Log untuk informasi logging yang detail.
Memperbarui Functions
Untuk mengubah function yang sudah ada:
1. Buka Halaman Detail Function
Klik nama function di tabel:

2. Edit Function
Editor function terbuka dengan kode saat ini:

3. Buat Perubahan
Anda dapat memperbarui:
- ✅ Name - Ubah nama function
- ✅ Code - Edit kode function
- ✅ Handler - Ubah entry point
- ✅ Timeout - Sesuaikan detik timeout
- ✅ Memory - Ubah alokasi memory
Tidak dapat diubah:
- ❌ Runtime - Tidak dapat diubah setelah pembuatan (hapus dan buat ulang)
- ❌ vCPU - Tetap saat pembuatan
4. Tes Perubahan
Gunakan bagian Run Test untuk menguji perubahan Anda:

5. Simpan Pembaruan
Klik Save untuk men-deploy perubahan:

Function akan di-deploy ulang dengan kode baru.
Catatan: Function mungkin tidak tersedia sebentar selama pembaruan (2-5 detik).
Menghapus Functions
⚠️ Peringatan: Penghapusan bersifat permanen dan tidak dapat dibatalkan!
Hapus Function
Dari halaman daftar Functions:

Langkah:
- Di kolom Actions, klik tombol Delete (ikon 🗑️ Trash)
- Dialog konfirmasi akan muncul:

- Klik Delete untuk konfirmasi
Function akan dihapus secara permanen.
Yang Dihapus
Saat Anda menghapus function:
- ✅ Kode function - Semua kode dihapus
- ✅ Konfigurasi - Pengaturan dihapus
- ✅ microVM - VM dihancurkan dan resource dibebaskan
- ✅ Log - Log eksekusi dihapus
- ✅ Riwayat invokasi - Statistik dibersihkan
Waktu: Biasanya instan (< 1 detik)
Notifikasi Berhasil
Setelah penghapusan, Anda akan melihat pesan berhasil:

“Function Deleted - [function-name] has been deleted successfully”
Function akan dihapus dari daftar Functions.
Halaman Detail Function
Klik nama function untuk membuka halaman detail:

Tab Overview
Menampilkan informasi function:

Informasi yang ditampilkan:
- Nama dan ID function
- Runtime dan badge status
- vCPU, Memory, Timeout
- Alamat Guest IP
- Tanggal dibuat
- Waktu terakhir di-invoke
- Jumlah invokasi (24j, 7h, 30h)
Aksi yang tersedia:
- Invoke - Tes function
- Edit - Ubah function
- Delete - Hapus function
Tab Logs
Lihat log eksekusi dan error:

Lihat Lihat Log untuk detailnya.
Tab Code (jika tersedia)
Lihat kode function saat ini:

Fitur:
- Penampil kode baca-saja
- Syntax highlighting
- Salin kode ke clipboard
Untuk mengedit: Klik tombol Edit atau beralih ke mode edit.
Refresh Daftar Function
Untuk memperbarui daftar function dengan data terbaru:
Klik tombol Refresh di header halaman Functions:

Kapan perlu di-refresh:
- Setelah membuat function (untuk melihat status baru)
- Jika status tampak usang
- Untuk memperbarui jumlah invokasi
- Setelah pengguna lain membuat perubahan
Catatan: Daftar auto-refresh secara berkala, tetapi Anda dapat refresh manual untuk pembaruan instan.
Monitor Functions
Metrik Invokasi
Lacak seberapa sering function Anda dipanggil:

Metrik yang ditampilkan:
- Last Invoked - Kapan function terakhir dipanggil
- 24h Invocations - Panggilan dalam 24 jam terakhir
- 7d Invocations - Panggilan dalam 7 hari terakhir (jika ditampilkan)
- 30d Invocations - Panggilan dalam 30 hari terakhir (jika ditampilkan)
Kasus penggunaan:
- Identifikasi function yang populer
- Deteksi function yang tidak digunakan (untuk pembersihan)
- Monitor pola traffic
- Lacak adopsi
Kesehatan Function
Monitor status dan error function:
Function yang sehat:
- ✅ Status: Ready (hijau)
- ✅ Invokasi berhasil
- ✅ Tidak ada error di log
Function yang tidak sehat:
- ❌ Status: Error (merah)
- ❌ Invokasi gagal
- ❌ Error di log
Aksi untuk function yang tidak sehat:
- Klik Logs untuk melihat pesan error
- Identifikasi masalah (syntax error, timeout, dll.)
- Klik nama function untuk Edit
- Perbaiki masalah
- Save untuk re-deploy
- Invoke untuk tes
Pemecahan Masalah
Masalah: Tidak Dapat Invoke Function
Gejala:
- Tombol Invoke tidak berfungsi
- Pesan error muncul
- Error timeout
Solusi:
Cek status function:
- Status harus “Ready” untuk di-invoke
- Jika “Creating” atau “Deploying”, tunggu hingga selesai
- Jika “Error”, cek log dan perbaiki masalah
Cek payload JSON:
- Harus berupa JSON valid
- Cek syntax error
- Klik “Format JSON” untuk verifikasi
Cek jaringan:
- Pastikan microVM function online
- Cek Guest IP sudah ditetapkan
- Buka halaman Hosts, pastikan agent online
Coba lagi:
- Refresh halaman
- Coba invoke lagi
Masalah: Function Tertahan di “Deploying”
Gejala:
- Status menampilkan “Deploying” lebih dari 1 menit
- Tidak pernah berubah menjadi “Ready”
Solusi:
- Tunggu lebih lama - Deploy awal dapat membutuhkan hingga 2 menit
- Refresh halaman - Status mungkin usang
- Cek log:
- Klik tombol Logs
- Cari error deployment
- Cek resource:
- Buka halaman Hosts
- Pastikan CPU/memory yang cukup tersedia
- Hapus dan buat ulang:
- Jika tertahan >5 menit, hapus function
- Buat yang baru dengan kode yang sama
Masalah: Invokasi Mengembalikan Error
Gejala:
- Invoke berhasil tetapi mengembalikan error dalam respons
statusCode: 500atau kode error lainnya
Solusi:
Cek body respons:
{ "statusCode": 500, "body": "{\"error\": \"...\"}" }Lihat log function:
- Klik tombol Logs
- Cari pesan error
- Identifikasi masalah (mis., variabel tidak terdefinisi)
Masalah umum:
- Field event yang hilang: Periksa payload memiliki key yang diperlukan
- Type error: Pastikan tipe data sesuai harapan
- Timeout: Tingkatkan timeout atau optimalkan kode
- Syntax error: Tinjau kode untuk typo
Perbaiki dan tes:
- Edit function
- Perbaiki masalah
- Simpan dan invoke lagi
Masalah: Tidak Dapat Menghapus Function
Gejala:
- Tombol Delete tidak merespons
- Pesan error muncul
Solusi:
Cek kepemilikan:
- Anda hanya dapat menghapus function yang Anda buat
- Atau jika Anda adalah admin
Coba dari halaman detail:
- Klik nama function
- Coba hapus dari halaman detail
Refresh dan coba lagi:
- Refresh halaman
- Coba delete lagi
Hubungi administrator:
- Jika masalah berlanjut
Praktik Terbaik
Manajemen Function
✅ Atur function secara logis:
- Gunakan nama yang deskriptif
- Kelompokkan function terkait dengan prefix
auth-login,auth-logout,auth-verifypayment-create,payment-verify,payment-refund
- Tambahkan komentar di kode yang menjelaskan tujuan
Monitoring dan Pemeliharaan
✅ Monitor secara berkala:
- Cek jumlah invokasi setiap minggu
- Tinjau log error secara teratur
- Hapus function yang tidak digunakan
- Perbarui kode function sesuai kebutuhan
✅ Bersihkan function yang tidak digunakan:
- Filter berdasarkan “Last Invoked”
- Hapus function yang tidak digunakan lebih dari 30 hari
- Jaga codebase tetap bersih
Pengujian Sebelum Deploy
✅ Selalu tes sebelum menyimpan:
- Gunakan Run Test di editor
- Tes dengan beberapa payload
- Verifikasi penanganan error
- Cek edge case
✅ Tes setelah pembaruan:
- Setelah menyimpan perubahan, invoke dari daftar
- Verifikasi respons sudah benar
- Cek log untuk error
Optimasi Resource
✅ Sesuaikan ukuran function:
- Mulai dengan resource minimum
- Monitor waktu invokasi di log
- Tingkatkan CPU/memory hanya jika diperlukan
- Over-alokasi = biaya lebih tinggi
✅ Optimalkan timeout:
- Tetapkan nilai timeout yang realistis
- Terlalu singkat = kegagalan yang tidak perlu
- Terlalu panjang = pemborosan resource pada error
Referensi Cepat
Ringkasan Aksi Function
| Aksi | Tombol | Deskripsi |
|---|---|---|
| Invoke | ▶ Play | Tes function dengan payload kustom |
| Logs | 📄 FileText | Lihat log eksekusi dan error |
| Delete | 🗑️ Trash | Hapus function secara permanen |
| Edit | Klik nama | Buka editor untuk mengubah function |
Alur Kerja Umum
Monitoring harian:
- Buka halaman Functions
- Cek status - semua harus “Ready”
- Tinjau jumlah invokasi
- Cek log untuk error
Memperbarui function:
- Klik nama function
- Edit kode
- Jalankan Test untuk verifikasi
- Klik Save
- Invoke dari daftar untuk konfirmasi
Debug error:
- Klik tombol Logs
- Identifikasi error di log
- Klik nama function untuk Edit
- Perbaiki masalah
- Simpan dan tes
Langkah Selanjutnya
Setelah Anda tahu cara mengelola function:
- Lihat Log - Pelajari cara debug dengan log
- Playground - Bereksperimen dengan ide baru
- Buat Function - Tinjau langkah pembuatan
Tips Performa
Optimasi Cold Start
Cold start terjadi saat invokasi pertama atau setelah periode idle:
✅ Minimalkan cold start:
- Jaga function tetap warm dengan invokasi berkala
- Gunakan cron job untuk invoke setiap 5 menit
- Minimalkan ukuran kode (waktu muat lebih cepat)
- Hindari dependensi yang berat
Optimasi Invokasi Warm
Invokasi warm menggunakan kembali microVM yang ada:
✅ Optimalkan performa warm:
- Cache operasi yang mahal (koneksi DB, klien API)
- Inisialisasi sekali di scope global
- Gunakan kembali antar invokasi
- Minimalkan overhead per-invokasi
Contoh (Python):
# ✅ Baik - Inisialisasi sekali
import requests
session = requests.Session() # Scope global
def handler(event):
# Gunakan kembali session antar invokasi
response = session.get(event["url"])
return {"statusCode": 200, "body": response.text}
# ❌ Buruk - Inisialisasi setiap kali
def handler(event):
import requests
session = requests.Session() # Dibuat setiap invokasi!
response = session.get(event["url"])
return {"statusCode": 200, "body": response.text}