Anda dapat menggunakan fungsi web di Function Compute untuk dengan mudah membangun aplikasi web dan layanan API. Fungsi web kompatibel dengan berbagai framework web populer, seperti Java SpringBoot, Python Flask, dan Node.js Express, sehingga memungkinkan migrasi aplikasi yang sudah ada secara cepat. Function Compute mengelola sumber daya komputasi dasar untuk Anda. Saat layanan diakses melalui browser atau URL, sistem secara otomatis menyediakan dan menskalakan instans sesuai permintaan. Ketika tidak ada lalu lintas, instans tersebut dilepas secara otomatis, dan Anda hanya membayar sumber daya yang digunakan.
Ikhtisar
Topik ini menjelaskan cara menerapkan aplikasi Flask menggunakan fungsi web di Function Compute. Proses keseluruhan adalah sebagai berikut:
Kembangkan dan uji aplikasi web: Buat proyek di mesin lokal Anda menggunakan kode contoh. Edit dan uji kode API untuk memastikan API berfungsi sebagaimana mestinya. Jika Anda ingin melakukan migrasi aplikasi yang sudah ada, Anda dapat melewati langkah ini.
Buat paket kode: Instal dependensi yang diperlukan ke dalam direktori proyek lokal, lalu kemas proyek menjadi file ZIP untuk diterapkan ke Function Compute.
Unggah dan terapkan aplikasi: Konfigurasikan parameter pembuatan fungsi, lalu unggah paket kode untuk membuat fungsi.
Uji fungsi web: Panggil fungsi web untuk memverifikasi bahwa aplikasi Flask berjalan sebagaimana diharapkan.
Prasyarat
Prosedur
Anda dapat menggunakan salah satu metode berikut untuk membuat fungsi web dan menerapkan kode Anda.
Buat fungsi di Konsol Function Compute: Metode ini memungkinkan Anda membuat satu fungsi dengan cepat dan cocok untuk membangun aplikasi ringan atau validasi cepat.
Gunakan alat baris perintah Serverless Devs: Metode ini cocok untuk mengelola proyek produksi kompleks dan penerapan otomatis. Anda dapat menggunakan file konfigurasi YAML untuk mengelola beberapa fungsi dan resource cloud terkaitnya. 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
Jika Anda ingin melakukan migrasi aplikasi Flask yang sudah ada, Anda dapat melewati langkah ini dan melanjutkan ke Langkah 2: Buat paket kode.
Buka jendela command-line baru di mesin lokal Anda dan jalankan perintah berikut untuk menginstal library
Flaskdantabulateyang diperlukan.pip install Flask tabulateBuat folder bernama
codedan file bernamaapp.pydi dalamnya. Tempel kode contoh berikut ke dalam file tersebut. Kode ini mengimplementasikan layanan kalender sederhana yang dikemas sebagai API. API menerima tahun dan bulan, misalnya Januari 2025, dan mengembalikan tabel kalender untuk bulan tersebut.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 konten permintaan dan periksa format permintaan. data = json.loads(request.stream.read().decode('utf-8')) if not ('year' in data and 'month' in data): message = "Request must be in format like {'year': '1999', 'month': '12'}" return message # Dapatkan tabel kalender. result = print_calendar(year=int(data['year']), month=int(data['month'])) # Cetak log yang menunjukkan eksekusi fungsi telah selesai sebelum hasil dikembalikan. 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) # Ubah tanggal yang tidak termasuk dalam bulan tersebut dari 0 menjadi string kosong. 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 menjalankan aplikasi Flask Anda. Jika outputRunning on http://127.0.0.1:9000ditampilkan, berarti aplikasi Flask sedang berjalan. Anda kemudian dapat menggunakan perintah cURL untuk menguji aplikasi.python3 app.py * Serving Flask app 'app' * Debug mode: off WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:9000 * Running on http://47.100.XX.XX:9000 Press CTRL+C to quitBuka jendela terminal baru dan gunakan cURL untuk mengirim permintaan contoh. Perintah yang berhasil akan mengembalikan tabel kalender.
curl -X POST http://127.0.0.1:9000 -d '{"year": "2000", "month": "1"}'
Anda kini telah membuat dan menguji proyek secara lokal.
Langkah 2: Buat paket kode
Anda akan membuat paket kode secara lokal yang sesuai untuk Function Compute. Paket kode harus berisi konten berikut:
File proyek yang diperlukan oleh aplikasi web.
Jika aplikasi Anda memiliki dependensi yang tidak termasuk dalam runtime, Anda harus menambahkannya ke dalam paket kode. Untuk informasi tentang dependensi bawaan untuk runtime, lihat Dependensi bawaan.
Instal dependensi: Di direktori root proyek aplikasi web Anda, jalankan perintah berikut untuk menginstal dependensi yang diperlukan (dalam contoh ini,
tabulate) ke direktori tersebut. Perintah ini menginstal dependensi ke direktori root proyek Anda.CatatanRuntime fungsi web Python sudah menyertakan library
Flask. Anda hanya perlu menginstal librarytabulateagar aplikasi contoh dapat berjalan.pip install -t . tabulateKemas semua file di direktori root proyek.
Linux atau macOS
Di direktori root proyek, jalankan perintah
zip code.zip -r ./*. Perintah ini mengemas file proyek dan dependensinya ke dalam file ZIP, sehingga membuat paket kode.CatatanPastikan Anda memiliki izin baca dan tulis pada direktori tersebut.
Windows
Buka direktori proyek, pilih semua file, klik kanan file-file tersebut, lalu kemas ke dalam file ZIP. Ini akan mengemas file proyek dan dependensinya ke dalam file ZIP, sehingga membuat paket kode.
Langkah 3: Buat dan terapkan fungsi
Pilih jenis fungsi web: Masuk ke Konsol Function Compute. Di panel navigasi kiri, klik . Di bilah navigasi atas, pilih wilayah tempat Anda ingin membuat fungsi. Pada halaman yang muncul, klik Create Function, lalu ikuti petunjuk di layar untuk membuat Web Function.
Pilih runtime: Seperti yang ditunjukkan pada gambar berikut, pilih . Runtime ini memiliki dependensi yang diperlukan oleh framework Flask.
CatatanKami menyarankan menggunakan Custom Runtime untuk fungsi web Anda. Custom Runtime memungkinkan Anda menentukan perintah startup dan port pendengar, serta mendukung penanganan permintaan konkuren. Built-in Runtimes tidak menyediakan fitur-fitur ini dan lebih cocok untuk menangani event yang dihasilkan oleh layanan cloud lainnya.
Jika Anda lebih memilih penerapan berbasis kontainer, Anda dapat menggunakan Custom Container untuk membuat fungsi web. Runtime ini juga mendukung penanganan permintaan konkuren, tetapi Anda harus mengelola dependensinya sendiri.
Untuk perbandingan detail antar runtime, lihat Pilih runtime.
Terapkan paket kode: Seperti yang ditunjukkan pada gambar, unggah paket kode ZIP yang Anda buat di Langkah 2. Atur perintah startup menjadi
python3 app.pydan port pendengar menjadi9000. Jika Anda melakukan migrasi aplikasi Flask yang sudah ada, ubah konfigurasi berdasarkan perintah startup dan port aktual. Misalnya, port default Flask adalah 5000.Klik Create dan tunggu hingga fungsi dibuat.

Langkah 4: Uji fungsi
Dapatkan URL fungsi: Di halaman detail fungsi yang baru dibuat, klik tab Trigger. Di konfigurasi pemicu HTTP, salin Titik akhir publik.
Jika Anda berada di Lingkungan pengujian dan tidak memerlukan autentikasi, Anda dapat mengubah Authentication Method menjadi No Authentication di konfigurasi pemicu HTTP saat atau setelah membuat pemicu.

Uji fungsi: Anda dapat menggunakan cURL, Postman, atau klien HTTP apa pun untuk memanggil fungsi dan memverifikasi bahwa aplikasi Flask berfungsi sebagaimana diharapkan. Contoh berikut menggunakan perintah cURL. Ganti URL dengan Titik akhir yang Anda salin pada langkah sebelumnya.
curl https://******.cn-hangzhou.fcapp.run -d '{"year": "2025", "month": "1"}'API web mengembalikan informasi kalender untuk Januari 2025. Berikut ini adalah contoh output.
CatatanJika Anda menggunakan konfigurasi pemicu HTTP default, perintah akan mengembalikan error "MissingRequiredHeader". Jika Anda berada di Lingkungan pengujian, Anda dapat mengubah Authentication Method pemicu menjadi No Authentication.
Perintah contoh dan output pada langkah ini hanya berlaku untuk kode contoh. Jika Anda melakukan migrasi aplikasi yang sudah ada, panggil layanan berdasarkan nama dan parameter API aktual. Untuk informasi selengkapnya, lihat Gunakan cURL untuk menguji fungsi.
(Opsional) Akses fungsi dari browser: Titik akhir publik yang disediakan oleh pemicu HTTP tidak dapat dibuka langsung di browser (yang dapat memicu unduhan paksa) dan 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 Konfigurasikan nama domain kustom.
(Opsional) Langkah 5: Bersihkan resource
Function Compute adalah layanan bayar sesuai penggunaan. Anda tidak dikenai biaya untuk fungsi yang tidak digunakan. Namun, Anda mungkin dikenai biaya untuk resource cloud terkait, seperti data yang disimpan di OSS dan Penyimpanan File NAS, serta pemicu yang dibuat.
Jika Anda perlu menghapus fungsi, masuk ke Konsol Function Compute. Di panel navigasi kiri, klik . Pilih wilayah. Di kolom Actions fungsi yang dituju, klik Delete. Di kotak dialog yang muncul, pastikan fungsi tersebut tidak terikat ke resource apa pun seperti pemicu, lalu konfirmasi penghapusan.
Operasi lanjutan
Sekarang Anda telah membuat dan menerapkan aplikasi web ke fungsi web, Anda dapat melakukan operasi lanjutan berikut berdasarkan kebutuhan Anda.
Kembangkan kode di konsol: Meskipun topik ini berfokus pada pengembangan lokal yang berguna untuk migrasi aplikasi yang sudah ada, Anda juga dapat menyederhanakan penerapan dengan menggunakan WebIDE. Metode ini menghilangkan kebutuhan untuk membuat paket kode secara lokal dan cocok untuk iterasi pengembangan cepat. 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.
Lakukan penyebaran berkelanjutan proyek menggunakan Serverless Application Center: Untuk mengotomatiskan build dan penerapan (CI/CD) kode Anda ke Function Compute, gunakan Serverless Application Center. Untuk informasi selengkapnya, lihat Implementasikan penyebaran berkelanjutan untuk proyek Function Compute yang sudah ada menggunakan Serverless Application Center.
Konfigurasikan logging: Untuk mempermudah debugging, troubleshooting, atau audit keamanan, kami menyarankan agar Anda mengonfigurasi logging untuk fungsi Anda. Untuk informasi selengkapnya, lihat Konfigurasikan fitur logging.
Referensi
Untuk informasi selengkapnya tentang cara menambahkan paket dependensi untuk berbagai bahasa, lihat topik-topik berikut: