All Products
Search
Document Center

Function Compute:Ikhtisar pemicu HTTP

Last Updated:Apr 02, 2026

Pemicu HTTP memungkinkan Anda memanggil fungsi Function Compute melalui permintaan HTTP tanpa perlu mengelola infrastruktur atau API Gateway. Gunakan pemicu HTTP untuk membangun layanan web dan API secara langsung di Function Compute.

Topik ini mencakup batasan pemicu, batasan protokol, metode pemanggilan, opsi autentikasi, serta penanganan Berbagi Sumber Daya Lintas Asal (CORS) untuk pemicu HTTP.

Pemicu HTTP vs. pemicu API Gateway

Baik pemicu HTTP maupun pemicu API Gateway mendukung pembuatan aplikasi web di Function Compute. Pilih berdasarkan kebutuhan Anda:

KriteriaPemicu HTTPPemicu API Gateway
Kompleksitas pengaturanRendah — bind nama domain kustom dan petakan path ke fungsiLebih tinggi — konfigurasikan tipe layanan backend, tipe fungsi, dan alamat backend
Format permintaanHTTP native — tidak memerlukan encoding/decoding JSONMemerlukan encoding/decoding JSON untuk permintaan
Dukungan protokolHTTP/HTTPS, WebSocket, gRPCHTTP/HTTPS
Integrasi webhookLangsung — kompatibel dengan Alibaba Cloud CDN, Message Service (MNS), dan layanan lain yang mendukung webhookMemerlukan konfigurasi tambahan
Paling cocok untukPrototipe, API sederhana, skenario real-time atau streamingAplikasi produksi yang memerlukan routing lanjutan, pembatasan kecepatan, caching, atau transformasi permintaan/tanggapan
Untuk lalu lintas situs web, bind nama domain kustom dengan Pendaftaran ICP (Internet Content Provider filing) yang valid ke fungsi Anda. Lihat Konfigurasi nama domain kustom.

Batasan

Konfigurasi pemicu

  • Fungsi yang dikonfigurasi dengan pemicu HTTP tidak dapat menggunakan jenis pemicu lainnya.

  • Setiap versi atau alias fungsi mendukung paling banyak satu pemicu HTTP. Untuk detailnya, lihat Kelola versi dan Kelola alias.

  • Nama domain bawaan yang disediakan oleh pemicu HTTP hanya untuk pengujian. Stabilitasnya tidak dijamin. Jangan gunakan untuk layanan produksi.

Rotasi VIP

Function Compute secara berkala merotasi alamat IP virtual (VIP) yang terkait dengan titik akhir publik dan internal pemicu HTTP. Menyimpan kode keras (hard-coding) VIP dapat menyebabkan gangguan layanan. Gunakan nama domain kustom dengan catatan CNAME (Canonical Name) sebagai gantinya. Kegagalan yang disebabkan oleh hard-coded VIP tidak dicakup oleh kebijakan kompensasi Function Compute. Lihat Konfigurasi nama domain kustom.

Batasan unduh APK

Mulai 10 Juni 2024, pemicu HTTP yang baru dibuat tidak dapat melayani file APK (tipe MIME: application/vnd.android.package-archive) dari titik akhir publik. Permintaan yang mencoba mengunduh file APK dari titik akhir publik akan mengembalikan error 400.

Risiko pemicu anonim

Jika Authentication Method diatur ke No Authentication, siapa pun yang memiliki URL dapat memanggil fungsi Anda. Untuk memvalidasi pemanggil tanpa mengaktifkan otentikasi penuh, periksa header permintaan Authorization dalam kode fungsi Anda. Lihat otentikasi tanda tangan.

Batasan protokol

HTTP/HTTPS

Pemicu HTTP mendukung metode permintaan berikut: GET, POST, PUT, DELETE, HEAD, PATCH, dan OPTIONS. Untuk instruksi pengaturan, lihat Konfigurasi dan gunakan pemicu HTTP.

Batasan permintaan

ResourceBatasanError saat pelanggaran
Header (ukuran total semua kunci dan nilai)8 KB400 InvalidArgument
Path (termasuk parameter kueri)8 KB400 InvalidArgument
Body — pemanggilan sinkron32 MB400 InvalidArgument
Body — pemanggilan asinkron128 KB400 InvalidArgument

Header permintaan kustom yang diawali dengan x-fc- atau menggunakan nama bidang terbatas connection dan keep-alive tidak didukung.

Batasan tanggapan

ResourceBatasanError saat dilanggar
Header (ukuran total semua kunci dan nilai)8 KB502 BadResponse

Header tanggapan kustom yang diawali dengan x-fc- atau menggunakan salah satu nama bidang terbatas berikut tidak didukung: connection, content-length, date, keep-alive, server, upgrade, content-disposition:attachment.

Saat menggunakan domain bawaan aliyuncs.com, Function Compute memaksa header tanggapan content-disposition: attachment, yang menyebabkan browser mengunduh tanggapan sebagai file alih-alih menampilkannya. Untuk menghapus batasan ini, gunakan nama domain kustom. Lihat Konfigurasi nama domain kustom.

WebSocket

WebSocket cocok untuk koneksi persisten dan pesan real-time. Untuk instruksi pengaturan, lihat Konfigurasi pemicu HTTP untuk fungsi agar merespons permintaan WebSocket.

  • Runtime yang didukung: Hanya Custom Runtime dan Custom Container.

  • Metode yang didukung: GET (untuk handshake).

  • Timeout: Mengikuti periode timeout yang dikonfigurasi pada fungsi.

Batasan permintaan handshake

ResourceBatasKesalahan Akibat Pelanggaran
Header (ukuran total)8 KB502 BadResponse
Path (termasuk parameter kueri)8 KB
BodyTidak diperbolehkan; diabaikan jika dikirim

Header permintaan yang diawali dengan x-fc- tidak didukung dalam permintaan handshake WebSocket.

Batasan transmisi data

Setiap pesan yang dikirim atau diterima melalui koneksi WebSocket yang telah terbentuk tidak boleh melebihi 6 MB.

gRPC

gRPC cocok untuk skenario latensi rendah dan berkinerja tinggi dengan komunikasi multibahasa berbasis Protocol Buffers (ProtoBuf). Untuk instruksi pengaturan, lihat Konfigurasi pemicu HTTP yang memanggil fungsi dengan permintaan gRPC.

  • Runtime yang didukung: Hanya Custom Runtime dan Custom Container.

  • Metode yang diperlukan: Sertakan POST dalam konfigurasi Request Methods pemicu HTTP.

  • Titik akhir pemanggilan: Gunakan subdomain fcapp.run atau nama domain kustom.

  • Timeout: Tunduk pada timeout yang dikonfigurasi pada fungsi. Untuk gRPC streaming, periode retensi koneksi maksimum sama dengan Periode Timeout Eksekusi.

Batasan transmisi data

Setiap pesan dalam koneksi streaming gRPC tidak boleh melebihi 6 MB.

Metode pemanggilan

Pemanggilan sinkron

Secara default, pemicu HTTP memanggil fungsi secara sinkron. Function Compute memproses permintaan dan mengembalikan hasil sebelum menutup koneksi. Lihat Pemanggilan sinkron.

Pemanggilan asinkron

Untuk pemanggilan asinkron, Function Compute menyimpan permintaan dan segera mengembalikan respons 202, tanpa menunggu eksekusi selesai.

Memulai pemanggilan asinkron

Tambahkan header permintaan berikut untuk memicu eksekusi asinkron:

X-Fc-Invocation-Type: Async

Jika berhasil, respons mencakup:

X-Fc-Request-Id: 80bf7****281713e1
X-Fc-Stateful-Async-Invocation-Id: 7522ba40****1c22e

Kode status selain 202 berarti pemanggilan asinkron gagal. Lihat Penanganan error.

Mode tugas asinkron

Setelah mengonfigurasi fungsi untuk mode tugas asinkron, tentukan ID pemanggilan kustom dengan:

X-Fc-Stateful-Async-Invocation-Id: <your-invocation-id>

Lihat Tugas asinkron untuk detailnya.

Pemanggilan tertunda

Untuk menunda eksekusi setelah mengirim permintaan asinkron, tambahkan header x-fc-async-delay dengan nilai dalam satuan detik. Rentang nilai yang valid adalah (0, 3600). Function Compute memulai eksekusi setelah jeda yang ditentukan berakhir. Lihat Pemanggilan tertunda.

Untuk daftar lengkap header permintaan pemanggilan yang didukung, lihat InvokeFunction.

Otentikasi

Pemicu HTTP mendukung dua metode otentikasi. Pilih berdasarkan kebutuhan keamanan dan lingkungan klien Anda.

MetodePaling cocok untukKompromi
Otentikasi Tanda TanganPanggilan server-ke-server, skenario keamanan tinggiMemerlukan logika penandatanganan di sisi klien; rahasia AccessKey harus disimpan secara aman di klien. Gunakan token Security Token Service (STS) untuk mengurangi eksposur rahasia, dengan biaya tambahan kompleksitas arsitektur.
JWT authenticationKlien berbasis browser, frontend JavaScript, skenario keamanan lebih rendahDidukung luas dan mudah diimplementasikan; tidak cocok untuk skenario server keamanan tinggi.

Otentikasi signature

Permintaan harus ditandatangani dengan ID AccessKey dan Rahasia AccessKey, yang diteruskan ke Function Compute untuk verifikasi. Lihat Otentikasi signature.

Otentikasi JWT

Otentikasi Token Web JSON (JWT) adalah mekanisme standar untuk otorisasi API (RFC 7519). Metode ini sangat cocok untuk frontend web dan klien JavaScript tempat penyimpanan Rahasia AccessKey tidak praktis. Lihat Konfigurasi otentikasi JWT untuk pemicu HTTP.

Penanganan permintaan CORS

Secara default, Function Compute mengizinkan akses lintas asal ke fungsi HTTP. Function Compute juga memungkinkan Anda menentukan perilaku pemrosesan CORS kustom dalam kode fungsi.

Permintaan simple

Permintaan simple tidak memerlukan preflight. Tambahkan header Access-Control-Allow-* dalam kode fungsi untuk mengonfigurasi kontrol akses. Header kustom yang didukung:

  • Access-Control-Allow-Origin

  • Access-Control-Allow-Headers

  • Access-Control-Request-Method

  • Access-Control-Max-Age

Jika tidak ada header kustom yang diatur, Function Compute mengisi nilai default berikut:

  • Access-Control-Allow-Origin: nilai Origin dari permintaan

  • Access-Control-Allow-Credentials: true

  • Access-Control-Expose-Headers: header kustom khusus Function Compute

Permintaan tidak sederhana

Sebelum mengirim permintaan tidak sederhana, browser mengirim permintaan preflight OPTIONS. Untuk menanganinya:

  1. Tambahkan OPTIONS ke konfigurasi Request Methods pemicu HTTP Anda.

  2. Deteksi dan tanggapi metode OPTIONS dalam kode fungsi.

Contoh Node.js berikut menunjukkan cara merespons permintaan preflight:

exports.handler = (req, resp, context) => {
    if (req.method === 'OPTIONS') {
        resp.setHeader('Access-Control-Allow-Origin', 'http://www.fc.com');
        resp.setHeader('Access-Control-Allow-Methods', 'POST');
        resp.setHeader('Access-Control-Allow-Headers', 'Content-Type');
        resp.setHeader('Access-Control-Max-Age', '3600');
        resp.setStatusCode(204);
        resp.send('');
    } else {
        resp.send('hello world');
    }
};

FAQ

Apakah saya perlu mengonfigurasi port listening?

Hanya jika Anda membuat fungsi menggunakan Use Custom Runtime atau Use Container Image. Fungsi yang dibuat dengan Use Built-in Runtime tidak memerlukan port listening.

Apakah Function Compute mendukung Server-Sent Events (SSE)?

Fungsi yang dibuat dengan Use Custom Runtime atau Use Container Image mendukung SSE. Fungsi yang dibuat dengan Use Built-in Runtime tidak.

Function Compute mendeteksi tanggapan streaming dengan memeriksa header tanggapan Transfer-Encoding: chunked. Saat melakukan deployment dengan Use Custom Runtime, Anda dapat memilih langsung kode contoh SSE dari runtime tersebut.

Mengapa fungsi saya lambat merespons?

Jika fungsi jarang dipanggil, pemanggilan pertama memicu cold start. Lihat Mengapa fungsi yang jarang digunakan memerlukan waktu lebih lama untuk dipanggil? dan Cara menjaga instans tetap aktif untuk mencegah dampak cold start.

Jika pemanggilan kadang-kadang timeout, sesuaikan periode timeout dan selidiki penyebabnya. Lihat Cara menangani error timeout eksekusi fungsi.

Untuk fungsi dengan lalu lintas tinggi, konfigurasikan konkurensi instans agar lebih efisien menangani permintaan. Lihat Konfigurasi konkurensi instans.

Apa penyebab kode status 499, dan bagaimana cara mencegahnya?

Kode status 499 berarti klien membatalkan permintaan, yang memicu restart instans fungsi. Konfigurasikan pemeriksaan kesehatan untuk mengurangi restart yang tidak diinginkan. Lihat Mengapa instans fungsi restart setelah error 499 dari klien?

Jika timeout di sisi klien merupakan akar permasalahan, pindahkan logika yang memakan waktu ke fungsi terpisah dan panggil secara asinkron.

Kapan perubahan konfigurasi fungsi berlaku?

Perubahan konfigurasi hanya berlaku setelah permintaan yang sedang berjalan selesai. Permintaan yang sedang dieksekusi tetap menggunakan konfigurasi sebelumnya. Untuk memaksa perubahan konfigurasi segera, hapus fungsi saat ini dan buat fungsi baru dengan pengaturan yang diperbarui.

Langkah selanjutnya

Fungsi pemicu HTTP menggunakan signature handler yang berbeda dari fungsi event. Pastikan handler Anda diimplementasikan dengan benar sesuai runtime Anda: