Anda dapat dengan mudah membangun aplikasi web dan layanan API menggunakan fungsi web di Function Compute. Fungsi web kompatibel dengan kerangka kerja web populer, seperti Java SpringBoot, Python Flask, dan Node.js Express, sehingga memungkinkan migrasi langsung aplikasi yang sudah ada. Function Compute mengelola sumber daya komputasi dasar untuk Anda. Saat layanan diakses melalui browser atau URL, Function Compute secara otomatis memulai dan menyesuaikan skala instans sesuai kebutuhan. Ketika tidak ada permintaan, instans tersebut secara otomatis dihapus. Anda hanya membayar sumber daya yang digunakan.
Ikhtisar pembuatan fungsi web
Topik ini menjelaskan cara menerapkan aplikasi Flask menggunakan fungsi web di Function Compute. Prosesnya adalah sebagai berikut:
Kembangkan dan uji aplikasi web: Buat proyek lokal menggunakan kode contoh. Edit dan uji kode API untuk memastikan API berfungsi sebagaimana mestinya. Jika Anda ingin memigrasikan aplikasi yang sudah ada, Anda dapat melewati langkah ini.
Buat paket kode: Instal pustaka dependensi yang diperlukan di direktori proyek lokal, lalu kemas proyek menjadi file ZIP untuk diterapkan ke Function Compute.
Unggah dan terapkan aplikasi: Konfigurasikan parameter pembuatan fungsi dan unggah paket kode untuk membuat fungsi.
Uji fungsi web: Panggil fungsi web untuk memverifikasi bahwa aplikasi Flask berjalan dengan benar.
Prasyarat
Prosedur
Anda dapat membuat fungsi web dan menerapkan kode Anda dengan salah satu cara berikut.
Konsol Function Compute: Cocok untuk skenario seperti membangun aplikasi ringan atau melakukan validasi cepat. Anda dapat dengan cepat membuat satu fungsi.
Antarmuka baris perintah Serverless Devs: Cocok untuk skenario seperti mengelola proyek produksi kompleks dan mengotomatiskan penerapan. Anda dapat menggunakan file konfigurasi YAML untuk mengelola beberapa fungsi dan sumber daya cloud terkait. Untuk informasi selengkapnya, lihat Memulai dengan Cepat.
Untuk menyederhanakan proses, topik ini menjelaskan cara membuat fungsi di Konsol Function Compute.
Langkah 1: Kembangkan dan uji aplikasi web
Jika Anda ingin memigrasikan aplikasi Flask yang sudah ada, Anda dapat melewati langkah ini dan lanjut ke Langkah 2: Buat paket kode.
Buka jendela baris perintah baru di mesin lokal Anda. Jalankan perintah berikut untuk menginstal pustaka dependensi
Flaskdantabulateyang diperlukan oleh aplikasi di lingkungan lokal Anda.pip install Flask tabulateBuat folder bernama
codedan file bernamaapp.pydi dalam folder tersebut. Tempel kode contoh berikut ke dalam file tersebut. Kode ini mengimplementasikan layanan kalender sederhana dan mengemasnya sebagai API. Ketika pengguna memberikan tahun dan bulan, misalnya Januari 2025, API akan mengembalikan tabel kalender yang sesuai.import calendar from flask import Flask, request from tabulate import tabulate import logging import json logger = logging.getLogger() app = Flask(__name__) @app.route("/", methods=["POST"]) def get_month_calendar(): # Dapatkan ID permintaan dan cetak log. requestId = request.headers.get('x-fc-request-id', '') logger.info("FC Invoke Start RequestId: " + requestId) # Dapatkan badan permintaan dan periksa formatnya. data = json.loads(request.stream.read().decode('utf-8')) if not ('year' in data and 'month' in data): message = "Request must be in a format such as {'year': '1999', 'month': '12'}" return message # Dapatkan tabel kalender. result = print_calendar(year=int(data['year']), month=int(data['month'])) # Cetak log sebelum mengembalikan hasil untuk menunjukkan bahwa eksekusi fungsi telah selesai. logger.info("FC Invoke End RequestId: " + requestId) return result def print_calendar(year, month): # Dapatkan matriks kalender untuk tahun dan bulan yang ditentukan. cal = calendar.monthcalendar(year, month) # Ganti 0 dengan string kosong untuk hari-hari yang tidak termasuk dalam bulan yang ditentukan. cal = list(map(lambda sublist: list(map(lambda x: '' if x == 0 else x, sublist)), cal)) # Buat header tabel. headers = ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"] # Gunakan tabulate untuk mencetak tabel kalender. return tabulate(cal, headers=headers, tablefmt="grid", stralign='center', numalign='center') if __name__ == "__main__": app.run(host='0.0.0.0', port=9000)Jalankan perintah
python3 app.pyuntuk memulai aplikasi Flask Anda. Saat keluaran menampilkanRunning on http://127.0.0.1:9000, aplikasi Flask Anda telah berhasil dimulai. Anda kemudian dapat menggunakan perintah cURL untuk menguji aplikasi.python3 app.py * Menjalankan aplikasi Flask 'app' * Mode Debug: off PERINGATAN: Ini adalah server pengembangan. Jangan gunakan dalam penyebaran produksi. Gunakan server WSGI produksi sebagai gantinya. * Berjalan pada http://127.0.0.1:9000 * Berjalan pada http://47.100.XX.XX:9000 Tekan CTRL+C untuk keluarBuka jendela terminal baru dan gunakan cURL untuk mengirim permintaan contoh. Jika perintah berhasil dijalankan, tabel kalender akan dikembalikan.
curl -X POST http://127.0.0.1:9000 -d '{"year": "2000", "month": "1"}'
Ini menyelesaikan pembuatan dan pengujian proyek lokal.
Langkah 2: Buat paket kode
Buat paket kode lokal untuk Function Compute. Paket kode harus berisi item-item berikut:
File proyek yang diperlukan oleh aplikasi web.
Jika pustaka dependensi yang diperlukan oleh aplikasi tidak tersedia di lingkungan runtime fungsi web, paket kode juga harus menyertakan pustaka tersebut. Untuk informasi selengkapnya tentang pustaka dependensi bawaan di lingkungan runtime fungsi web, lihat Dependensi bawaan.
Instal dependensi: Di direktori root proyek aplikasi web, jalankan perintah berikut untuk menginstal pustaka dependensi yang diperlukan (
tabulatedalam contoh ini) ke dalam direktori tersebut. Setelah perintah dijalankan, direktori root proyek berisi file proyek dan pustaka dependensi.CatatanLingkungan runtime Python untuk fungsi web sudah menyertakan pustaka
Flask. Oleh karena itu, Anda hanya perlu menginstaltabulateuntuk memenuhi kebutuhan aplikasi contoh.pip install -t . tabulateKemas semua file di direktori root proyek.
Linux atau macOS
Di direktori root proyek, jalankan
zip code.zip -r ./*. Perintah ini mengemas file proyek dan pustaka dependensi ke dalam file ZIP. Ini menyelesaikan pembuatan paket kode.CatatanPastikan Anda memiliki izin baca dan tulis pada direktori tersebut.
Windows
Buka direktori proyek, pilih semua file, klik kanan pada file yang dipilih, lalu kemas menjadi file ZIP. Perintah ini mengemas file proyek dan pustaka dependensi ke dalam file ZIP. Ini menyelesaikan pembuatan paket kode.
Langkah 3: Buat fungsi web dan terapkan paket kode
Pilih jenis fungsi web: Masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, pilih . Di bilah navigasi atas, pilih wilayah tempat Anda ingin membuat fungsi. Klik Create Function, pilih Web Function, lalu ikuti petunjuk untuk membuat fungsi.
Pilih runtime: Pilih . Runtime ini memiliki pustaka dependensi bawaan untuk kerangka kerja Flask.
CatatanUntuk fungsi web, kami menyarankan Anda menggunakan Custom Runtime. Custom Runtime memungkinkan Anda menyesuaikan perintah startup dan port pendengar, serta mendukung penanganan permintaan konkuren. Built-in Runtime tidak memiliki fitur-fitur ini dan lebih cocok untuk menangani event yang dihasilkan oleh layanan Alibaba Cloud lainnya.
Jika Anda lebih suka penerapan berbasis kontainer, Anda juga dapat menggunakan Custom Image untuk membuat fungsi web. Lingkungan ini juga mendukung permintaan konkuren pada satu instans, tetapi Anda harus mengelola dependensinya sendiri.
Untuk perbandingan mendetail antara berbagai lingkungan runtime, lihat Perbandingan lingkungan runtime.
Terapkan paket kode: Unggah paket kode ZIP yang Anda peroleh di Langkah 2. Tetapkan perintah startup menjadi
python3 app.pydan port pendengar menjadi9000. Jika Anda memigrasikan aplikasi Flask yang sudah ada, ubah konfigurasi agar sesuai dengan perintah startup dan port aplikasi Anda. Misalnya, port default Flask adalah 5000.Setelah menyelesaikan konfigurasi, klik Create dan tunggu hingga fungsi dibuat.

Langkah 4: Uji fungsi
Dapatkan URL fungsi: Di halaman detail fungsi, klik tab Triggers. Di kolom konfigurasi pemicu HTTP yang dituju, dapatkan Titik akhir publik.
Jika Anda berada di lingkungan pengujian yang tidak memerlukan autentikasi, Anda dapat mengatur Authentication Method menjadi No Authentication saat membuat pemicu HTTP atau dengan mengubahnya setelahnya.

Uji fungsi: Anda dapat menggunakan cURL, Postman, atau klien HTTP apa pun untuk memanggil fungsi dan memverifikasi fungsionalitas aplikasi Flask. Sebagai contoh, untuk menggunakan cURL, jalankan perintah contoh berikut di baris perintah. Ganti URL dengan yang Anda peroleh pada langkah sebelumnya.
curl https://******.cn-hangzhou.fcapp.run -d '{"year": "2025", "month": "1"}'Perintah tersebut mengembalikan informasi kalender untuk Januari 2025. Keluaran berikut adalah contohnya.
CatatanJika Anda menggunakan konfigurasi pemicu HTTP default, menjalankan perintah contoh di atas akan mengembalikan error MissingRequiredHeader. Dalam kasus ini, jika Anda berada di lingkungan pengujian, Anda dapat mengubah Authentication Method pemicu menjadi No Authentication.
Perintah contoh dan keluaran pada langkah ini hanya berlaku untuk kode contoh. Jika Anda memigrasikan aplikasi yang sudah ada, panggil layanan Anda berdasarkan nama dan parameter operasi API yang sebenarnya. Untuk informasi selengkapnya, lihat Uji fungsi menggunakan cURL.
(Opsional) Akses fungsi dari browser: Titik akhir publik yang disediakan oleh pemicu HTTP tidak dapat diakses dari browser karena memaksa unduhan file. Titik akhir ini hanya dimaksudkan untuk tujuan pengujian. Kami menyarankan agar Anda mengikat nama domain kustom ke fungsi untuk mengaktifkan akses browser dan penggunaan di lingkungan produksi. Untuk informasi selengkapnya, lihat Konfigurasi nama domain kustom.
(Opsional) Langkah 5: Bersihkan sumber daya
Function Compute adalah layanan bayar sesuai penggunaan. Anda tidak dikenai biaya untuk fungsi yang tidak digunakan. Namun, perhatikan layanan atau sumber daya Alibaba Cloud terkait lainnya, seperti data yang disimpan di OSS dan NAS, serta pemicu yang dikonfigurasi.
Untuk menghapus fungsi, masuk ke Konsol Function Compute. Di panel navigasi sebelah kiri, pilih . Pilih wilayah. Di kolom Actions fungsi yang dituju, klik Delete. Di kotak dialog yang muncul, pastikan tidak ada sumber daya, seperti pemicu, yang terkait dengan fungsi tersebut, lalu konfirmasi penghapusan.
Langkah selanjutnya
Setelah membuat aplikasi web dan menerapkannya ke fungsi web, Anda dapat melakukan operasi berikut sesuai kebutuhan.
Kembangkan kode di konsol: Untuk menyederhanakan proses penerapan, Anda dapat menggunakan WebIDE di Konsol Function Compute untuk mengembangkan dan men-debug kode di cloud secara real-time. Metode ini cocok untuk pengembangan yang memerlukan iterasi cepat karena Anda tidak perlu membuat paket kode di mesin lokal. Untuk informasi selengkapnya, lihat Gunakan WebIDE.
CatatanWebIDE hanya mendukung Python, Node.js, dan PHP. Untuk bahasa lain, seperti Java dan Go, Anda hanya dapat mengunggah file ZIP atau file biner yang telah dikompilasi dan dikemas.
Terapkan proyek secara berkelanjutan menggunakan Application Center: Untuk menerapkan integrasi berkelanjutan/penerapan berkelanjutan (CI/CD), Anda dapat menggunakan Application Center untuk secara otomatis membangun dan menerapkan kode Anda ke Function Compute di cloud. Untuk informasi selengkapnya, lihat Gunakan Application Center untuk menerapkan penyebaran berkelanjutan pada proyek Function Compute yang sudah ada.
Konfigurasi logging: Kami menyarankan agar Anda mengonfigurasi fitur logging untuk fungsi Anda guna mempermudah debugging, pemecahan masalah, atau audit keamanan. Untuk informasi selengkapnya, lihat Konfigurasi fitur logging.
Referensi
Untuk langkah-langkah menambahkan dependensi untuk setiap bahasa, lihat dokumen berikut: