Serverless Devs adalah alat pengembangan serverless open source yang memungkinkan Anda mengembangkan, membuat, menguji, dan menerapkan proyek secara efisien serta mengelolanya sepanjang siklus hidupnya. Topik ini menjelaskan cara menggunakan Serverless Devs untuk mengunduh templat aplikasi Function Compute dan menggunakan templat tersebut untuk mengembangkan serta menerapkan aplikasi fungsi. Dalam topik ini, fungsi dalam Node.js 14 digunakan.
Latar Belakang
Topik ini menjelaskan dua metode untuk menginisialisasi proyek di Serverless Devs. Saat pertama kali menggunakan Serverless Devs, disarankan untuk menggunakan Metode 1. Jika ingin mempelajari lebih lanjut tentang operasi seperti debugging lokal, pemanggilan jarak jauh, dan penghapusan sumber daya pada Serverless Devs, gunakan Metode 2.
Sebelum Anda mulai
Aktifkan Function Compute. Untuk informasi lebih lanjut, lihat Aktifkan Function Compute.
Metode 1: Gunakan perintah s untuk mengelola sumber daya
Jalankan perintah berikut untuk menginisialisasi proyek:
sudo sInisialisasi proyek berdasarkan keluaran perintah. Keluaran berikut dikembalikan:
Tidak ada proyek Serverless-Devs yang terdeteksi saat ini. Apakah Anda ingin membuat proyek baru? Ya// Tidak ada proyek Serverless-Devs yang ditemukan di file proyek. Tentukan apakah akan membuat proyek.
Serverless Awesome: https://github.com/Serverless-Devs/Serverless-Devs/blob/master/docs/zh/awesome.md
Halo Serverless untuk Penyedia Cloud Alibaba Cloud Serverless// Tentukan penyedia layanan cloud. Dalam contoh ini, Alibaba Cloud digunakan.
Halo, serverlesser. Template mana yang Anda sukai? Mulai Cepat [Terapkan fungsi Hello World ke FaaS]// Tentukan template yang ingin Anda gunakan. Dalam contoh ini, template digunakan untuk menerapkan fungsi event dalam Node.js 14.
Template mana yang Anda sukai? [Event] Node.js 14
Buat perintah aplikasi: [s init devsapp/start-fc-event-nodejs14]
Silakan masukkan nama proyek Anda (init dir) start-fc-event-nodejs14// Secara default, Serverless Devs menghasilkan nama proyek. Anda juga dapat menentukan nama proyek kustom.
dekompresi file selesai
____ _ _ ___ _ _ _ _____ ____
/ _ \/ \ / \\ \/// \ /\/ \ /| / // _\
| / \|| | | | \ / | | ||| |\ || | __\| /
| |-||| |_/\| | / / | \_/|| | \|| | | | \__
\_/ \|\____/\_//_/ \____/\_/ \| \_/ \____/
silakan pilih alias kredensial default// Tentukan alias yang dikonfigurasi di Serverless Devs.
Selamat datang di aplikasi Aliyun FC start
Aplikasi ini memerlukan untuk membuka layanan berikut:
FC : https://fc.console.alibabacloud.com/
* Proyek diinisialisasi. Anda dapat pergi ke direktori proyek dan jalankan perintah s deploy untuk menerapkan proyek.
Terima kasih telah menggunakan Serverless-Devs
Anda bisa [cd /test/start-fc-event-nodejs14] dan nikmati perjalanan serverless Anda!
Jika Anda membutuhkan bantuan untuk contoh ini, Anda dapat menggunakan [s -h] setelah masuk ke folder.
Dokumentasi Star: https://github.com/Serverless-Devs/Serverless-Devs
Apakah Anda ingin menerapkan proyek segera? Ya// Tentukan apakah akan menerapkan proyek. Dalam contoh ini, proyek diterapkan.
......
helloworld:
region: cn-hangzhou
service:
name: hello-world-service
function:
name: event-nodejs14
runtime: nodejs14
handler: index.handler
memorySize: 128
timeout: 60Metode 2: Gunakan perintah s init untuk mengelola sumber daya
Inisialisasi proyek.
Jalankan perintah berikut di direktori proyek untuk menginisialisasi proyek:
sudo s init devsapp/start-fc-http-nodejs14CatatanDalam contoh ini, fungsi HTTP dalam Node.js 14 diterapkan untuk menggambarkan cara menginisialisasi proyek. Jika ingin menerapkan jenis fungsi lain dalam lingkungan waktu proses lain, ganti
httpdistart-fc-http-nodejs14dengan jenis trigger yang ingin digunakan, sepertievent. Anda juga dapat menggantinodejs14dengan lingkungan waktu proses lain.Contoh keluaran perintah:
Serverless Awesome: https://github.com/Serverless-Devs/Serverless-Devs/blob/master/docs/zh/awesome.md Silakan masukkan nama proyek Anda (init dir) start-fc-http-nodejs14// Secara default, Serverless Devs secara otomatis menghasilkan nama proyek. Anda juga dapat menentukan nama proyek kustom. dekompresi file selesai ____ _ _ ___ _ _ _ _____ ____ / _ \/ \ / \\ \/// \ /\/ \ /| / // _\ | / \|| | | | \ / | | ||| |\ || | __\| / | |-||| |_/\| | / / | \_/|| | \|| | | | \__ \_/ \|\____/\_//_/ \____/\_/ \| \_/ \____/ silakan pilih alias kredensial default// Tentukan alias yang dikonfigurasi di Serverless Devs. Selamat datang di aplikasi Aliyun FC start Aplikasi ini memerlukan untuk membuka layanan berikut: FC : https://fc.console.alibabacloud.com/ * Proyek diinisialisasi. Anda dapat pergi ke direktori proyek dan jalankan perintah s deploy untuk menerapkan proyek. Terima kasih telah menggunakan Serverless-Devs Anda bisa [cd /test/start-fc-http-nodejs14] dan nikmati perjalanan serverless Anda! Jika Anda membutuhkan bantuan untuk contoh ini, Anda dapat menggunakan [s -h] setelah masuk ke folder. Dokumentasi Star: https://github.com/Serverless-Devs/Serverless-Devs Apakah Anda ingin menerapkan proyek segera? Tidak// Tentukan apakah akan menerapkan proyek.Setelah proyek diinisialisasi, folder bernama start-fc-http-nodejs14 dibuat di direktori. Folder start-fc-http-nodejs14 berisi file-file berikut:
s.yaml: File YAML yang mendefinisikan sumber daya Function Compute. Untuk informasi lebih lanjut tentang format YAML, lihat Sintaks YAML dan Manajemen Izin.
s_en.yaml: File YAML. File s_en.yaml sama dengan s.yaml. Secara default, sistem menggunakan file s.yaml. Untuk menggunakan file s_en.yaml, tentukan file tersebut secara eksplisit di perintah. Misalnya, tambahkan parameter
-t(s deploy -t s_en.yaml -y) saat menerapkan aplikasi.code: Folder code berisi file index.js tempat Anda dapat mengedit logika kode fungsi.
readme.md: File yang mendefinisikan dependensi, seperti modul dependen dan konfigurasi proyek.
Jalankan perintah berikut untuk masuk ke direktori proyek:
cd start-fc-http-nodejs14Opsional: Buat aplikasi.
Jalankan perintah berikut di direktori proyek untuk membuat aplikasi:
sudo s buildSetelah langkah ini, file .s dibuat di direktori saat ini untuk menyimpan keluaran. Anda dapat menggunakan file tersebut untuk men-debug dan menerapkan aplikasi di komputer Anda.
Opsional: Debug aplikasi di komputer Anda.
Setelah membangun aplikasi, Anda dapat men-debug aplikasi di komputer Anda untuk memeriksa apakah aplikasi berjalan sesuai harapan. Jalankan salah satu perintah berikut berdasarkan jenis fungsi:
Fungsi HTTP
sudo s local startContoh keluaran perintah:
[2021-12-16 07:17:05] [INFO] [FC-LOCAL-INVOKE] - Menggunakan trigger untuk memulai: name: httpTrigger type: http config: authType: anonymous methods: - GET [2021-12-16 07:17:05] [INFO] [FC-LOCAL-INVOKE] - HttpTrigger httpTrigger dari hello-world-service/http-trigger-nodejs14 telah didaftarkan url: http://localhost:7013/2016-08-15/proxy/hello-world-service/http-trigger-nodejs14/ methods: GET authType: anonymous Tips: Anda juga dapat menggunakan perintah-perintah ini untuk menjalankan atau men-debug sumber daya domain kustom: Mulai dengan customDomain: * s local start auto Debug dengan customDomain: * s local start -d 3000 auto Tips untuk langkah selanjutnya ====================== * Terapkan Sumber Daya: s deploy helloworld: status: berhasil fungsi compute app mendengarkan pada port 7013!Fungsi Event
sudo s local invoke
Hasil eksekusi bervariasi tergantung pada jenis fungsi.
Fungsi HTTP
Jika men-debug fungsi HTTP, URL dikembalikan setelah menjalankan perintah debugging, dan debugging berhenti. Anda dapat menggunakan salah satu metode berikut untuk memicu eksekusi fungsi:
Gunakan cURL untuk memicu fungsi HTTP.
curl http://localhost:7013/2016-08-15/proxy/hello-world-service/http-trigger-nodejs14/Gunakan browser untuk memicu fungsi HTTP.
http://localhost:7013/2016-08-15/proxy/hello-world-service/http-trigger-nodejs14/
Fungsi Event
Jika men-debug fungsi event, hasil debugging dikembalikan setelah menjalankan perintah debugging.
Terapkan aplikasi.
Jalankan perintah berikut untuk menerapkan aplikasi ke Function Compute:
sudo s deploy -yContoh keluaran perintah:
Memeriksa Service, Function, Triggers (0.82s) Membuat Service, Function, Triggers (0.6s) Membuat domain kustom (0.31s) Tips untuk langkah selanjutnya ====================== * Tampilkan informasi sumber daya yang diterapkan: s info * Tampilkan metrik: s metrics * Tampilkan log: s logs * Panggil fungsi jarak jauh: s invoke * Hapus Service: s remove service * Hapus Function: s remove function * Hapus Trigger: s remove trigger * Hapus CustomDomain: s remove domain helloworld: region: cn-hangzhou service: name: hello-world-service function: name: http-trigger-nodejs14 runtime: nodejs14 handler: index.handler memorySize: 128 timeout: 60 url: custom_domain: - domain: http://http-trigger-nodejs14.hello-world-service.188077086902****.cn-hangzhou.fc.devsapp.net triggers: - type: http name: httpTriggerJika eksekusi berhasil, aplikasi diterapkan ke Function Compute.
Opsional: Debug aplikasi secara jarak jauh.
Jalankan perintah berikut untuk men-debug aplikasi secara jarak jauh:
sudo s invoke -e '{"body": "","method":"GET","headers":{"header_1":"v1"},"queries":{"key":"value"},"path":"/"}'Contoh keluaran perintah:
Request url: https://188077086902****.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/hello-world-service/http-trigger-nodejs14/ ========= FC invoke Logs begin ========= FC Invoke Start RequestId: 6a3adedb-5d5d-4ac5-aa0b-2d43f4ace65c load code for handler:index.handler 2022-03-04T08:39:14.770Z 6a3adedb-5d5d-4ac5-aa0b-2d43f4ace65c [verbose] hello world FC Invoke End RequestId: 6a3adedb-5d5d-4ac5-aa0b-2d43f4ace65c Duration: 66.23 ms, Billed Duration: 67 ms, Memory Size: 128 MB, Max Memory Used: 42.48 MB ========= FC invoke Logs end ========= FC Invoke Result[Code: 200]: { path: '//', queries: { key: 'value' }, headers: { accept: 'application/json', authorization: 'FC yourAccessKeyID:yourAccessKeySecret', date: 'Fri, 04 Mar 2022 08:39:14 GMT', header_1: 'v1', host: '188077086902****.cn-hangzhou.fc.aliyuncs.com', 'user-agent': 'Node.js(v14.17.4) OS(linux/x64) SDK(@alicloud/fc2@v2.5.0)', 'x-forwarded-proto': 'http' }, method: 'GET', requestURI: '/2016-08-15/proxy/hello-world-service/http-trigger-nodejs14//?key=value', clientIP: '47.97.XX.XX', body: '' } Akhir dari metode: invokeDalam contoh ini, fungsi HTTP diterapkan. URL dikembalikan setelah menjalankan perintah debugging jarak jauh. Anda dapat menggunakan cURL untuk memicu fungsi HTTP di Function Compute:
curl https://188077086902****.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/hello-world-service/http-trigger-nodejs14/Opsional: Hapus aplikasi.
Jalankan perintah berikut untuk menghapus aplikasi:
sudo s remove serviceContoh keluaran perintah:
Perlu menghapus sumber daya di area cn-hangzhou, operasi service adalah hello-world-service: ...... Hapus trigger hello-world-service/http-trigger-nodejs14/httpTrigger berhasil. Hapus fungsi hello-world-service/http-trigger-nodejs14 berhasil. Hapus service hello-world-service berhasil. [2022-03-04 08:40:26] [INFO] [FC] - Mendapatkan daftar on-demand: _FC_NAS_hello-world-service-ensure-nas-dir-exist-service [2022-03-04 08:40:26] [INFO] [FC] - Mendapatkan daftar provision: _FC_NAS_hello-world-service-ensure-nas-dir-exist-service [2022-03-04 08:40:26] [INFO] [FC] - Mendapatkan listAliases: _FC_NAS_hello-world-service-ensure-nas-dir-exist-service [2022-03-04 08:40:26] [INFO] [FC] - Mendapatkan daftar on-demand: _FC_NAS_hello-world-service [2022-03-04 08:40:26] [INFO] [FC] - Mendapatkan daftar provision: _FC_NAS_hello-world-service [2022-03-04 08:40:26] [INFO] [FC] - Mendapatkan listAliases: _FC_NAS_hello-world-service Akhir dari metode: removeJika eksekusi berhasil, aplikasi dihapus.