Dalam beberapa skenario umum, Anda dapat menggunakan lapisan publik resmi yang disediakan oleh Function Compute untuk mengurangi ukuran paket kode Anda. Dibandingkan dengan lapisan kustom, lapisan publik resmi dari Function Compute lebih mudah digunakan karena runtime standar dan paket dependensi umum telah diatur sebelumnya untuk berbagai bahasa pemrograman. Anda tidak perlu khawatir tentang konfigurasi lingkungan dasar, cukup pilih lapisan publik yang sesuai dan ikat ke fungsi Anda. Topik ini memberikan contoh cara menggunakan lapisan publik resmi.
Catatan penggunaan
Untuk melihat versi terbaru dan petunjuk penggunaan lapisan publik resmi, lihat awesome-layers.
Contoh 1: Tangkap tangkapan layar halaman web berdasarkan Node.js 16 dan Puppeteer
Puppeteer dapat mengontrol Chrome (atau Chromium) untuk mengimplementasikan berbagai proses otomatis seperti penangkapan layar halaman web, pembuatan PDF, pengiriman formulir otomatis, pengujian UI otomatis, dan simulasi input keyboard. Pada dasarnya, Puppeteer mengimplementasikan browser Chrome tanpa kepala berbasis Node.js.
Dalam contoh ini, Puppeteer digunakan untuk menangkap tangkapan layar halaman web.
Buat fungsi acara.
Di halaman Create Function, konfigurasikan parameter berikut dan gunakan nilai default untuk parameter lainnya. Untuk informasi lebih lanjut, lihat Buat Fungsi Acara.
Pilih Event Function sebagai tipe fungsi.
Runtime: Pilih Node.js 16 dari daftar drop-down.
Atur Memory Capacity menjadi 1.024 MB.
Edit kode fungsi. Di halaman detail fungsi, klik tab Code, edit kode fungsi di file index.js, lalu klik Deploy.
Berikut adalah contoh kode sampel:
const fs = require('fs'); const puppeteer = require('puppeteer'); function autoScroll(page) { return page.evaluate(() => { return new Promise((resolve, reject) => { var totalHeight = 0; var distance = 100; var timer = setInterval(() => { var scrollHeight = document.body.scrollHeight; window.scrollBy(0, distance); totalHeight += distance; if (totalHeight >= scrollHeight) { clearInterval(timer); resolve(); } }, 100); }) }); } exports.handler = async (event, context, callback) => { console.log('Versi Node adalah: ' + process.version); try { const browser = await puppeteer.launch({ headless: true, args: [ '--disable-gpu', '--disable-dev-shm-usage', '--disable-setuid-sandbox', '--no-first-run', '--no-zygote', '--no-sandbox' ] }); let url = 'https://www.serverless-devs.com'; if (event.queryStringParameters && event.queryStringParameters.url) { url = event.queryStringParameters.url; } if (!url.startsWith('https://') && !url.startsWith('http://')) { url = 'http://' + url; } const page = await browser.newPage(); await page.emulateTimezone('Asia/Shanghai'); await page.goto(url, { waitUntil: 'networkidle2' }); await page.setViewport({ width: 1200, height: 800 }); await autoScroll(page); let path = '/tmp/example'; let contentType = 'image/png'; await page.screenshot({ path: path, fullPage: true, type: 'png' }); await browser.close(); const screenshot = fs.readFileSync(path); const response = { statusCode: 200, headers: { 'Content-Type': contentType }, body: screenshot.toString('base64'), isBase64Encoded: true }; callback(null, response); } catch (err) { const errorResponse = { statusCode: 500, headers: { 'Content-Type': 'text/plain' }, body: err.message }; callback(null, errorResponse); } };Deskripsi:
Parsing parameter query untuk mendapatkan URL snapshot. Jika parsing gagal, halaman utama Serverless Devs akan digunakan secara otomatis.
Gunakan Puppeteer untuk menangkap layar halaman web. Simpan tangkapan layar ke folder /tmp/example instance yang sedang berjalan, lalu kembalikan jalur tersebut sebagai badan balasan permintaan HTTP.
Konfigurasikan lapisan publik Puppeteer untuk fungsi tersebut.
Untuk informasi lebih lanjut, lihat Konfigurasikan Lapisan Umum di Konsol Function Compute. Pilih lapisan publik resmi Puppeteer17x.

Buat pemicu HTTP. Di kolom Configurations pemicu, lihat dan salin nilai dari Public Endpoint. Kemudian, tempelkan titik akhir di browser untuk melakukan tes.
Untuk informasi lebih lanjut tentang cara membuat pemicu HTTP, lihat Buat Pemicu.

Setelah pengujian, tangkapan layar (format PNG) halaman web Serverless Devs ditangkap dan diunduh secara otomatis ke mesin lokal Anda.
Contoh 2: Implementasikan runtime kustom .NET 6 berdasarkan lapisan publik
Buat fungsi web.
Di halaman Create Function, konfigurasikan parameter seperti yang ditunjukkan pada gambar berikut. Pertahankan nilai default untuk parameter lainnya. Untuk informasi lebih lanjut, lihat Buat Fungsi Web.

Setelah fungsi dibuat, Anda dapat melihat kode sampel Program.cs di WebIDE. Deskripsi:

①: Fungsi ini mendengarkan port 9000 di
0.0.0.0. Layanan yang dimulai oleh runtime kustom harus mendengarkan di0.0.0.0:CAPortatau*:CAPort, tetapi tidak dapat mendengarkan di127.0.0.1ataulocalhost. Untuk informasi lebih lanjut, lihat Prinsip-prinsip.②: Tambahkan rute / dan langsung kembalikan string
"Hello World!".③: Tambahkan rute /invoke yang menggunakan jalur penanganan acara. Untuk informasi lebih lanjut, lihat Fungsi Web.
④: Tambahkan rute /initialize, yaitu jalur yang sesuai dengan panggilan balik Initializer dari fungsi. Panggilan balik Initializer dieksekusi sekali selama inisialisasi program sampel. Untuk informasi lebih lanjut, lihat Hook Siklus Hidup untuk Instance Fungsi.
Uji fungsi tersebut.
Di kolom Konfigurasi pemicu, lihat dan salin nilai dari Public Endpoint. Kemudian, tempelkan titik akhir di browser untuk melakukan tes. Dalam kasus ini, tidak ada informasi jalur yang ditambahkan.

Setelah eksekusi selesai, lampiran diunduh secara otomatis ke mesin lokal Anda.
Gunakan curl untuk menambahkan jalur
/invokeatau/initializeke titik akhir publik yang diperoleh pada langkah sebelumnya. Metode routing adalah POST. Anda dapat menjalankan perintah curl -XPOST untuk melakukan tes.Gambar berikut menunjukkan hasil eksekusi.
