Function Compute mendukung HTTP trigger. Fungsi yang dikonfigurasi dengan HTTP trigger dapat dipicu oleh permintaan HTTP, memproses permintaan tersebut, lalu mengembalikan hasilnya kepada pemanggil. Topik ini menjelaskan cara mengonfigurasi HTTP trigger di Konsol Function Compute serta memanggil fungsi tersebut menggunakan permintaan HTTP.
Prasyarat
Langkah 1: Buat pemicu
Masuk ke Konsol Function Compute. Di panel navigasi kiri, pilih .
Di bilah navigasi atas, pilih wilayah. Pada halaman Functions, klik fungsi yang dituju.
-
Pada halaman Detail Fungsi, klik tab Trigger, lalu klik Create Trigger.
-
Pada panel Create Trigger, konfigurasikan parameter, lalu klik OK.
Configuration Item
Operation
Example
Trigger Type
Pilih HTTP Trigger.
HTTP Trigger
Name
Masukkan nama kustom untuk pemicu.
http-trigger
Version or Alias
Default-nya adalah LATEST. Untuk membuat pemicu pada versi atau alias lain, pilih dari daftar drop-down Version or Alias di halaman Detail Fungsi. Untuk informasi selengkapnya tentang versi dan alias, lihat Version management dan Alias management.
LATEST
Request Method
Pilih metode HTTP yang diizinkan untuk pemicu ini.
GET, POST, PUT, DELETE
Disable Internet URL
Secara default dinonaktifkan — pemicu dapat diakses melalui titik akhir publiknya.
Jika diaktifkan, tidak tersedia titik akhir publik. Permintaan ke pemicu tersebut akan mengembalikan
access denied due to function internet URL is disable. Akses melalui domain kustom tidak terpengaruh.No
Authentication Method
Pilih cara Function Compute melakukan otentikasi permintaan HTTP:
-
No Authentication: Mengizinkan akses tanpa otentikasi. Siapa pun dapat memanggil fungsi melalui HTTP.
-
Signature Authentication: Memerlukan otentikasi signature. Contoh kode: Access an HTTP trigger endpoint with a signature.
-
Bearer Authentication: Permintaan HTTP harus diautentikasi. Untuk contoh kode otentikasi Basic, lihat Configure Basic authentication for an HTTP trigger.
-
JWT Authentication: Permintaan HTTP harus diautentikasi menggunakan JSON Web Token (JWT). Untuk informasi selengkapnya, lihat Configure JWT authentication for an HTTP trigger.
-
Bearer Authentication: Permintaan HTTP harus diautentikasi menggunakan Bearer authentication. Untuk informasi selengkapnya, lihat Enable Bearer authentication for an HTTP trigger.
No authentication
Setelah pemicu dibuat, Anda dapat mengubah konfigurasinya, seperti Version or Alias, Request Method, dan Authentication Method.
-
Langkah 2: Tulis dan deploy kode
Tulis kode fungsi Anda setelah membuat pemicu.
Pada halaman Detail Fungsi, klik tab Code. Tulis kode di editor kode, lalu klik Deploy. Lihat dokumentasi penanganan (handler) untuk runtime Anda guna mendapatkan contoh kode.
Langkah 3: Uji fungsi
Metode 1: Gunakan konsol untuk menguji fungsi
Pada halaman Function Details, klik tab Code.
-
Pemanggilan sinkron
Klik Test Function.
-
Pemanggilan asinkron
Klik ikon
di sebelah kanan Test Function, pilih Async Invocation, lalu klik Test Function.
Setelah eksekusi selesai, lihat hasilnya di tab Code.
Metode 2: Gunakan cURL untuk menguji fungsi
-
Pada halaman Detail Fungsi, klik tab Trigger. Di kolom Configurations pada HTTP trigger yang dituju, peroleh titik akhir publiknya.
-
Jalankan perintah cURL di command line untuk menguji fungsi.
Pemanggilan sinkron
curl -v https://example.cn-shenzhen.fcapp.run/$pathPemanggilan asinkron
curl -v -H "X-Fc-Invocation-Type: Async" https://example.cn-shenzhen.fcapp.run/$path
Metode 3: (Tidak disarankan) Gunakan browser untuk menguji fungsi
-
Pada halaman Detail Fungsi, klik tab Trigger. Di kolom Configurations pada HTTP trigger yang dituju, peroleh titik akhir publiknya. Masukkan titik akhir tersebut di bilah alamat browser Anda, lalu tekan Enter.
-
Setelah eksekusi selesai, browser akan mengembalikan file yang berisi hasil eksekusi.
(Opsional) Gunakan API Gateway untuk melindungi fungsi
Function Compute mengizinkan akses anonim ke fungsi HTTP. Untuk mencegah akses tidak sah, aktifkan otentikasi identitas dan hubungkan fungsi HTTP Anda ke API Gateway. Gunakan plugin API Gateway (kontrol akses berbasis IP, JWT, atau otentikasi dasar) untuk melindungi fungsi Anda.
-
Di Konsol Function Compute, temukan fungsi yang dituju. Pada halaman Detail Fungsi, klik tab Trigger. Di kolom Actions pada HTTP trigger yang dituju, klik Modify.
-
Di panel Edit Trigger, aktifkan sakelar Disable Internet URL.
-
Masuk ke Konsol API Gateway dan beralih ke wilayah tempat fungsi HTTP berada.
-
Buat grup dan API.
API memungkinkan aplikasi eksternal memanggil layanan fungsi dengan cara tertentu. Grup API mengatur dan mengelola API terkait di bawah kebijakan keamanan dan kontrol traffic yang terpadu.
-
Di Konsol API Gateway, pilih Manage APIs > API Groups di panel navigasi kiri. Lalu, klik Create Group.
-
Di kotak dialog Create Group, pilih Instances:. Atur Group Name menjadi
FC-Groupdan BasePath menjadi/. Lalu, klik Confirm. -
Di kolom Actions pada grup yang dituju, klik Manage APIs. Lalu, klik Create API. Di bagian Basic Information, konfigurasikan parameter berikut dan klik Next.
-
Group: pilih FC-Group
-
API Name: masukkan FC-test
-
Security Authentication: pilih No Authentication
-
-
Di bagian Define API Request, atur Request Path menjadi
/, pertahankan nilai default untuk parameter lainnya, lalu klik Next. -
Di bagian Define Backend Service, atur Trigger Path ke titik akhir pribadi pemicu Function Compute, yaitu
https://example.cn-hangzhou-vpc.fcapp.run. Pertahankan nilai default untuk parameter lainnya, lalu klik Next. -
Di bagian Define Response, pertahankan konfigurasi default dan klik Create. Setelah API dibuat, klik Publish di kolom Actions pada API tersebut.
-
-
Debug API sebelum dipublikasikan. Debug yang berhasil menunjukkan bahwa koneksi antara API Gateway dan Function Compute telah berhasil.
-
Di Konsol API Gateway, pilih Call APIs > Debug di panel navigasi kiri.
-
Pada halaman Debug, pilih API
FC-testyang telah Anda buat, lalu klik Send Request. Jika respons sukses dikembalikan, konfigurasi telah selesai.
-
-
Buat plug-in Backend Signature. Atur
keykeAccessKey IDAnda dansecretkeAccessKey secretAnda, lalu bind ke API tersebut. Untuk informasi selengkapnya, lihat Plug-in overview. -
Lakukan resolusi nama domain Anda ke domain tingkat kedua yang disediakan oleh API Gateway menggunakan rekaman CNAME.
-
Di Konsol API Gateway, pilih Manage APIs > API Groups di panel navigasi kiri, lalu salin domain tingkat kedua publik.
-
Buka halaman manajemen resolusi nama domain Anda. Untuk Alibaba Cloud, halaman manajemen resolusi nama domain berada di https://dns.console.alibabacloud.com. Di halaman daftar domain, temukan nama domain yang ingin Anda kelola dan klik tautannya untuk membuka halaman manajemennya.
CatatanNama domain independen di Tiongkok daratan harus memiliki Pendaftaran ICP dari Alibaba Cloud atau mentransfer Pendaftaran ICP-nya ke Alibaba Cloud.
-
Di Konsol API Gateway, pilih Manage APIs > API Groups di panel navigasi kiri. Buka bagian Independent Domains. Di pojok kanan bawah halaman, temukan tombol untuk mengikat nama domain. Klik tombol tersebut, masukkan nama domain Anda, lalu klik OK. Nama domain berhasil diikat.
-
Setelah langkah-langkah ini selesai, akses fungsi HTTP Anda melalui domain kustom Anda. Anda juga dapat mengikat plug-in berikut untuk perlindungan tambahan:
Penyelesaian masalah error
Error terbagi menjadi dua kategori utama.
-
Error permintaan: permintaan tidak memenuhi persyaratan. Mengembalikan kode status 4xx.
-
Error fungsi: terjadi masalah dalam kode fungsi. Mengembalikan kode status 5xx.
Tabel berikut mencantumkan skenario error umum beserta penyebabnya.
|
Jenis Error |
Kode Status HTTP |
Analisis Penyebab |
Ditagih |
|
Error permintaan |
400 |
Permintaan melebihi batas permintaan. Untuk informasi selengkapnya, lihat HTTP trigger overview. |
Tidak |
|
400 |
Permintaan tidak menyertakan header Date atau Authorization yang diperlukan untuk otentikasi. |
Tidak |
|
|
403 |
Signature Authorization tidak valid. Signature hanya berlaku selama 15 menit sejak nilai header Date — penyebab umumnya adalah tanggal dalam permintaan yang selisihnya lebih dari 15 menit dari waktu saat ini. |
Tidak |
|
|
403 |
Metode permintaan tidak diizinkan oleh konfigurasi pemicu (misalnya, mengirim POST padahal hanya GET yang dikonfigurasi). |
Tidak |
|
|
404 |
Permintaan HTTP dikirim ke fungsi yang tidak memiliki HTTP trigger. |
Tidak |
|
|
Pembatasan kecepatan pengguna |
429 |
Permintaan dibatasi kecepatannya. Kurangi konkurensi atau hubungi tim Function Compute untuk meningkatkan batas Anda. |
Tidak |
|
Error fungsi |
502 |
Respons fungsi melebihi batas respons. Untuk informasi selengkapnya, lihat HTTP trigger overview. |
Ya |
|
502 |
Kode fungsi memiliki error sintaks atau exception. |
Ya |
|
|
502 |
Permintaan HTTP dikirim ke fungsi yang tidak menggunakan penanganan HTTP (HTTP handler). |
Ya |
|
|
Error sistem |
500 |
Error internal Function Compute. Coba ulang permintaan. |
Tidak |
|
Pembatasan kecepatan sistem |
503 |
Pembatasan kecepatan sistem Function Compute. Coba ulang dengan exponential backoff. |
Tidak |
Jika masalah tetap berlanjut, bergabunglah dengan grup DingTalk (ID: 64970014484) untuk menghubungi engineer Function Compute guna mendapatkan dukungan.