Topik ini mencakup struktur, contoh kode, dan FAQ terkait penangan acara dalam runtime Custom Container.
Latar Belakang
Untuk fungsi Custom Container, Function Compute meneruskan header permintaan umum, badan permintaan, metode POST, serta jalur /invoke dan /initialize ke server HTTP di dalam kontainer. Anda dapat menggunakan tanda tangan fungsi seperti context dan event dari waktu proses yang didukung oleh Function Compute, seperti Go runtime. Header permintaan dan badan juga dapat digunakan sebagai parameter input untuk menentukan logika layanan suatu fungsi. Untuk informasi lebih lanjut, lihat Penangan acara dalam runtime kustom.
Pemanggilan Fungsi
Jika fungsi Custom Container menggunakan penangan acara, server HTTP hanya perlu mengimplementasikan logika untuk jalur /invoke dan metode POST.
Jalur | Permintaan | Respon yang Diharapkan |
POST |
| Badan Respon: nilai pengembalian handler fungsi, yang mencakup kode respon dan header respon.
Anda dapat menyertakan bidang x-fc-status dalam header respons untuk melaporkan kepada Function Compute apakah fungsi lokal berhasil dipanggil.
Catatan Kami merekomendasikan agar Anda menentukan bidang StatusCode dan x-fc-status dalam respons HTTP. |
Contoh Kode
Dalam contoh Node.js Express berikut, metode POST dan jalur /initialize dipanggil oleh Function Compute saat instance fungsi diinisialisasi. Metode POST dan jalur /invoke bertindak sebagai penangan saat Function Compute dipanggil. Parameter context dan event diperoleh dari req.headers dan req.body, dan hasil pemanggilan dikembalikan sebagai respons HTTP.
'use strict';
const express = require('express');
// Konstanta.
const PORT = 9000;
const HOST = '0.0.0.0';
const app = express();
// Parsing body permintaan berformat JSON.
app.use(express.json({type:['application/json', 'application/octet-stream']}))
// Contoh hook Initializer. Anda harus mengonfigurasi hook initializer saat membuat fungsi.
app.post('/initialize', (req, res) => {
console.log(req.body)
res.send('Hello FunctionCompute, /initialize\n');
});
// Memanggil fungsi acara.
app.post('/invoke', (req, res) => {
console.log(req.body)
res.send('Hello FunctionCompute, event function\n');
});
var server = app.listen(PORT, HOST);
console.log(`Berjalan pada http://${HOST}:${PORT}`);
server.timeout = 0; // Tidak pernah timeout.
server.keepAliveTimeout = 0; // keepalive, tidak pernah timeoutContoh untuk bahasa pemrograman lainnya
Anda dapat menggunakan Serverless Devs untuk memigrasikan aplikasi Anda ke Function Compute hanya dengan beberapa klik. Contoh berikut menunjukkan cara menggunakan Serverless Devs untuk menerapkan dan memanggil fungsi secara efisien. Anda dapat memodifikasi contoh kode sesuai dengan kebutuhan bisnis Anda.

