All Products
Search
Document Center

Function Compute:Konfigurasikan dan gunakan pemicu HTTP

Last Updated:Apr 01, 2026

Pemicu HTTP memungkinkan Anda memanggil fungsi Function Compute menggunakan permintaan HTTP standar. Fungsi tersebut bertindak sebagai server web: menerima permintaan HTTP dan mengembalikan respons kepada pemanggil.

Topik ini memandu Anda melalui proses pembuatan pemicu HTTP, penyebaran kode penanganan, dan pemanggilan fungsi menggunakan Konsol Function Compute.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Membuat layanan di Function Compute. Untuk informasi lebih lanjut, lihat Buat layanan.

Cara kerja

Saat pemanggil mengirim permintaan HTTP ke URL pemicu, Function Compute mengarahkan permintaan tersebut ke penanganan fungsi Anda. Penanganan memproses permintaan dan langsung menulis respons HTTP — tidak ada muatan event perantara. Hal ini berbeda dengan jenis pemicu lainnya yang meneruskan data event terstruktur ke fungsi.

Perbedaan utama dari jenis pemicu lainnya: saat Anda membuat fungsi HTTP, sistem secara otomatis membuat pemicu HTTP untuknya. Untuk semua jenis pemicu lainnya, Anda harus membuat pemicu secara manual.

Langkah 1: Buat fungsi HTTP

  1. Login ke Konsol Function Compute. Di panel navigasi sebelah kiri, klik Services & Functions.

  2. Di bilah navigasi atas, pilih wilayah. Pada halaman Services, klik layanan target.

  3. Pada halaman Functions, klik Create Function.

  4. Pada halaman Create Function, pilih Use Built-in Runtime dan konfigurasikan parameter sesuai tabel berikut. Gunakan nilai default untuk semua parameter lainnya. Untuk informasi lebih lanjut, lihat Buat fungsi.

Basic settings

ParameterDeskripsi
Function NameMasukkan nama untuk fungsi.
Handler TypePilih HTTP Handler.

(Optional) Trigger configurations

ParameterDeskripsi
NameMasukkan nama untuk pemicu.
Request MethodPilih metode HTTP yang dapat memanggil pemicu ini.
Disable Internet URLDefault: No — pemicu dapat diakses melalui nama domain publik. Atur ke Yes untuk menonaktifkan akses publik. Jika pemanggil menggunakan nama domain publik saat akses internet dinonaktifkan, Function Compute mengembalikan: access denied due to function internet URL is disable. Nama domain kustom tetap berfungsi terlepas dari pengaturan ini.
Authentication MethodLihat Pilih metode autentikasi di bawah.

Pilih metode autentikasi

MetodeKapan digunakan
No AuthenticationPemicu mengizinkan akses anonim. Setiap pemanggil dapat memanggil fungsi tanpa kredensial.
Signature AuthenticationPemanggil harus menandatangani permintaan menggunakan AccessKey Anda. Signature berlaku selama 15 menit. Untuk contoh kode penandatanganan, lihat Signature authentication.
JWT AuthenticationPemanggil harus menyajikan Token Web JSON (JWT) yang valid. Untuk petunjuk penyiapan, lihat Konfigurasikan autentikasi JWT untuk pemicu HTTP.

Setelah pemicu dibuat, Anda dapat mengedit pengaturan berikut kapan saja: Version or Alias, Request Method, Disable Internet URL, dan Authentication Method.

Langkah 2: Sebarkan kode penanganan

Pada halaman detail fungsi, klik tab Code. Masukkan kode fungsi Anda di editor, lalu klik Deploy.

Contoh berikut menunjukkan penanganan minimal dan penanganan lengkap untuk penguraian permintaan pada setiap runtime yang didukung.

Node.js

Penanganan minimal — mengembalikan respons tetap:

module.exports.handler = function (request, response, context) {
    response.setStatusCode(200);
    response.setHeader('content-type', 'text/plain');
    response.send('Hello from Function Compute!');
};

Penanganan lengkap — membaca dan menampilkan kembali detail permintaan:

var getRawBody = require('raw-body');

module.exports.handler = function (request, response, context) {
    getRawBody(request, function (err, data) {
        var params = {
            path: request.path,
            queries: request.queries,
            headers: request.headers,
            method: request.method,
            body: data,
            url: request.url,
            clientIP: request.clientIP,
        };
        var respBody = new Buffer.from(JSON.stringify(params));
        response.setStatusCode(200);
        response.setHeader('content-type', 'application/json');
        response.send(respBody);
    });
};
Panggil response.send() untuk menghentikan eksekusi. Tanpa itu, fungsi akan timeout.

Python

# -*- coding: utf-8 -*-
import json

def handler(environ, start_response):
    response_body = {
        'uri': environ['fc.request_uri'],
        'method': environ['REQUEST_METHOD'],
    }
    status = '200 OK'
    response_headers = [('Content-type', 'text/json')]
    start_response(status, response_headers)
    # Python 2
    return [json.dumps(response_body)]
    # Python 3: Saat menggunakan Python 3, tipe str dan bytes tidak dapat dicampur.
    # Gunakan str.encode() untuk mengubah str menjadi bytes.
    # return [json.dumps(response_body).encode()]
Kembalikan nilai dari penanganan untuk mengirim respons. Tanpa nilai kembali, fungsi tidak akan berhenti.

PHP

<?php
use RingCentral\Psr7\Response;

function handler($request, $context): Response {
    /*
    $body       = $request->getBody()->getContents();
    $queries    = $request->getQueryParams();
    $method     = $request->getMethod();
    $headers    = $request->getHeaders();
    $path       = $request->getAttribute("path");
    $requestURI = $request->getAttribute("requestURI");
    $clientIP   = $request->getAttribute("clientIP");
    */
    return new Response(
        200,
        [
            'custom_header1' => 'v1',
            'custom_header2' => ['v2', 'v3'],
        ],
        'hello world'
    );
}
Kembalikan objek Response untuk menghentikan eksekusi.
Penting

Untuk pemanggilan asinkron, konfigurasikan callback hasil dalam jejak fungsi. Untuk informasi lebih lanjut, lihat Result callback.

Langkah 3: Uji fungsi

Metode 1: Konsol Function Compute

Pemanggilan sinkron — pada halaman detail fungsi, klik tab Code, lalu klik Test Function.

Pemanggilan asinkron — pada halaman detail fungsi, klik tab Test Function, pilih I want to make the call asynchronously, lalu klik Test Function.

Metode 2: Browser

Masukkan URL pemicu di bilah alamat browser dan tekan Enter. Browser akan menampilkan respons fungsi.

Pemicu baru — gunakan subdomain yang ditetapkan (disarankan)

Subdomain mencegah error 404 yang disebabkan oleh keterikatan nama layanan dalam kode fungsi dan meningkatkan portabilitas.

Format subdomain:

<subdomain>.<region_id>.fcapp.run/[action?queries]

Contoh:

funcname-svcname-khljsjksld.cn-shanghai.fcapp.run/action?hello=world

Pemicu yang sudah ada — susun URL secara manual

Aturan penyusunan:

<account_id>.<region_id>.fc.aliyuncs.com/<version>/proxy/<serviceName>/<functionName>/[action?queries]

Contoh:

164901546557****.cn-shanghai.fc.aliyuncs.com/2016-08-15/proxy/serviceName/functionName/action?hello=world
ParameterDeskripsi
account_idID akun Alibaba Cloud Anda. Temukan di halaman Security Settings. Pengguna RAM: arahkan kursor ke gambar profil di pojok kanan atas konsol untuk melihat ID akun.
region_idWilayah tempat Function Compute berada.
versionVersi API Function Compute.
serviceNameNama layanan.
functionNameNama fungsi.
actionPath permintaan kustom.
queriesParameter query.

Metode 3: cURL

Pemanggilan sinkron:

curl -v https://http-***.cn-shenzhen.fcapp.run/$path

Pemanggilan asinkron:

curl -v -H "X-Fc-Invocation-Type: Async" https://http-***.cn-shenzhen.fcapp.run/$path

Kode status 202 mengonfirmasi permintaan diterima. Kode status lainnya menunjukkan adanya error — lihat bagian Pemecahan masalah di bawah.

(Opsional) Lindungi fungsi HTTP dengan API Gateway

Secara default, pemicu HTTP mengizinkan akses anonim. Untuk menambahkan autentikasi dan kontrol akses tanpa mengubah kode fungsi, hubungkan fungsi ke API Gateway dan gunakan sistem plugin-nya.

  1. Di Konsol Function Compute, buka halaman detail fungsi, lalu klik tab Triggers dan ubah pemicu HTTP. Pada kotak dialog yang muncul, atur Authentication ke Yes.

  2. Login ke Konsol API Gateway dan beralih ke wilayah tempat fungsi berada.

  3. Buat grup API. Untuk detailnya, lihat Buat API dengan layanan backend tipe HTTP.

  4. Arahkan nama domain kustom Anda ke domain tingkat kedua API Gateway menggunakan rekaman Canonical Name (CNAME). Untuk detailnya, lihat Tambahkan rekaman CNAME.

  5. Buat API dengan pengaturan kunci berikut. Gunakan nilai default untuk semua parameter lainnya. Untuk informasi lebih lanjut, lihat Buat API.

    ParameterNilai
    Security AuthenticationNo Authentication (plugin menangani autentikasi pada langkah selanjutnya)
    Request Path/ — pilih Match All Subpaths
    HTTP MethodANY
    Request ModePass-through
    Backend Service TypeFunction Compute
    Function TypeHTTP Function
    Trigger PathTitik akhir internal fungsi HTTP di Function Compute
    ContentTypePass-through Client Content-type Header
  6. Publikasikan API. Temukan API tersebut, klik Publish di kolom Actions, pilih lingkungan online, lalu klik Publish.

  7. Buat plugin Backend Signature. Atur key ke AccessKey ID dan value ke AccessKey secret akun Alibaba Cloud Anda. Bind plugin ke API. Untuk detailnya, lihat Ikhtisar.

Setelah menyelesaikan langkah-langkah ini, fungsi Anda dapat diakses melalui nama domain kustom Anda. Untuk menambahkan kontrol akses lebih lanjut, buat dan bind plugin berikut:

Pemecahan masalah

Fungsi tidak dapat dipanggil

Pemicu baru belum siap — konfigurasi pemicu baru memerlukan waktu sekitar 10 detik untuk disebarluaskan. Tunggu dan coba lagi.

Jenis penanganan tidak valid — signature penanganan HTTP berbeda dari penanganan event biasa. Verifikasi implementasi penanganan Anda sesuai panduan spesifik runtime:

Fungsi tidak berhenti

Periksa apakah penanganan Anda memanggil fungsi pengiriman respons yang benar untuk runtime tersebut:

RuntimePanggilan yang diperlukan
Node.jsresponse.send()
Pythonreturn
PHPreturn new Response()
JavaHttpServletResponse
C#return
Runtime kustomFungsi respons spesifik bahasa

Kode error

Tabel berikut mencantumkan error yang dikembalikan selama pemanggilan pemicu HTTP.

Jenis errorX-Fc-Error-TypeStatus HTTPPenyebabDitagih
Error permintaanFcCommonError400Permintaan melebihi batas. Lihat Ikhtisar.Tidak
Error permintaanFcCommonError400Permintaan ke fungsi yang memerlukan autentikasi tidak memiliki header date atau authorization.Tidak
Error permintaanFcCommonError403Signature tidak valid. Signature berlaku selama 15 menit; buat ulang jika header date lebih dari 15 menit.Tidak
Error permintaanFcCommonError403Permintaan menggunakan metode HTTP yang tidak dikonfigurasi di pemicu.Tidak
Error permintaanFcCommonError404Tidak ada pemicu HTTP yang dikonfigurasi untuk fungsi tersebut.Tidak
Pembatasan kecepatan traffic penggunaFcCommonError429Batas permintaan konkuren tercapai. Kurangi konkurensi atau hubungi dukungan Function Compute untuk menambah kuota Anda.Tidak
Error fungsiUnhandledInvocationError502Respons melebihi batas ukuran respons HTTP. Lihat Ikhtisar.Ya
Error fungsiUnhandledInvocationError502Kode fungsi memiliki error sintaksis atau melempar exception yang tidak ditangani.Ya
Error fungsiUnhandledInvocationError502Permintaan HTTP dikirim ke fungsi yang menggunakan penanganan event, bukan penanganan HTTP.Ya
Error sistemFcCommonError500Error internal Function Compute. Coba ulang permintaan.Tidak
Pembatasan kecepatan sistemFcCommonError503Pembatasan kecepatan tingkat sistem. Coba ulang dengan exponential backoff.Tidak

Jika masalah berlanjut, bergabunglah dengan grup pengguna DingTalk (ID: 11721331) untuk menghubungi dukungan teknis Function Compute.

Langkah selanjutnya

Konfigurasikan pemicu menggunakan metode lain:

  • Serverless Devs — manajemen pemicu berbasis CLI

  • SDK — konfigurasi pemicu secara terprogram

Untuk memodifikasi atau menghapus pemicu yang sudah ada, lihat Kelola pemicu.