Function Compute adalah pembaruan utama dari versi sebelumnya. Di Function Compute 3.0, berbagai fitur terkait manajemen fungsi, mesin eksekusi fungsi, nama domain kustom, manajemen izin, dan aturan penskalaan otomatis diperbarui untuk meningkatkan pengalaman pengguna. Topik ini menjelaskan perubahan fitur di Function Compute 3.0 serta kompatibilitasnya dengan layanan dan fungsi asli.
Pembaruan fitur di Function Compute 3.0
Berikut adalah fitur-fitur yang diperbarui di Function Compute 3.0:
Manajemen Fungsi
Layanan tidak lagi digunakan di Function Compute. Fungsi menjadi entitas tingkat pertama. Peran, log, dan virtual private cloud (VPC) dikonfigurasi pada tingkat fungsi.
Versi dan alias dikonfigurasi pada tingkat fungsi. Anda dapat menggunakan versi dan alias untuk melakukan manajemen versi pada fungsi.
Untuk informasi lebih lanjut, lihat Manajemen Fungsi.
Mesin Eksekusi Fungsi
Tanda tangan handler untuk permintaan HTTP dan permintaan acara disatukan. Untuk informasi lebih lanjut, lihat Perilaku Pemicu HTTP.
Runtime standar Function Compute tidak lagi mendukung fitur konkurensi instans. Instans yang berjalan di runtime kustom masih mendukung fitur konkurensi.
Hook PreFreeze tidak lagi didukung dalam manajemen siklus hidup instans fungsi.
Nama Domain Kustom
Nama domain kustom tidak lagi bergantung pada pemicu HTTP dan dapat langsung dialihkan ke fungsi.
Manajemen Izin
Peran Terhubung Layanan didukung untuk menyederhanakan otorisasi fungsi. Untuk informasi lebih lanjut, lihat Peran Terhubung Layanan.
Aturan Penskalaan Otomatis
Fitur penskalaan otomatis instans yang disediakan dimasukkan ke dalam manajemen konkurensi instans. Anda dapat membatasi total konkurensi instans yang disediakan dan instans sesuai permintaan.
Konfigurasi layanan dan fungsi asli tetap tidak berubah. Fungsi asli masih dapat dipanggil seperti biasa. Sebagai contoh, konkurensi instans yang Anda konfigurasikan untuk sebuah fungsi di Function Compute 2.0 masih berlaku di Function Compute 3.0. Namun, fungsi yang dibuat di runtime standar Function Compute 3.0 tidak lagi mendukung fitur konkurensi instans. Untuk informasi tentang kompatibilitas Function Compute 3.0 dengan layanan dan fungsi asli, lihat Kompatibilitas dengan Layanan dan Fungsi Asli.
Manajemen fungsi
Di Function Compute, Anda dapat membuat fungsi tanpa perlu membuat layanan. Konfigurasi tingkat layanan asli, seperti peran, logging, dan VPC, sekarang dikonfigurasi di fungsi. Contoh kode berikut memberikan contoh konfigurasi fungsi di SDK Function Compute untuk Go:
resp, err := client.CreateFunction(
new(fc.CreateFunctionRequest).
SetBody(&fc.CreateFunctionInput{
FunctionName: &funcName,
Runtime: tea.String("nodejs12"),
Handler: tea.String("index.handler"),
MemorySize: tea.Int32(128),
Role: tea.String("role-arn"),
VpcConfig: &fc.VPCConfig{
VpcId: tea.String("vpc-id"),
VSwitchIds: []*string{tea.String("vsw-id")},
SecurityGroupId: tea.String("sg-id"),
},
Code: new(fc.InputCodeLocation).SetZipFile(fx.GetCodeZipBase64()),
}))
event := "my event"
resp, err = client.InvokeFunction(&funcName,
new(fc.InvokeFunctionRequest).SetBody(strings.NewReader(event)))
body, err := ioutil.ReadAll(resp.Body)Contoh kode berikut memberikan contoh cara menerbitkan versi dan membuat alias untuk fungsi di SDK Function Compute untuk Go:
resp, err := client.PublishFunctionVersion(&funcName,
new(fc.PublishFunctionVersionRequest).SetBody(&fc.PublishVersionInput{
Description: tea.String("version desc"),
}))
aliasName := "my-alias"
routingConfig := map[string]*float32{
"2": tea.Float32(float32(0.05)),
}
resp, err := client.CreateAlias(&funcName, new(fc.CreateAliasRequest).
SetBody(&fc.CreateAliasInput{
AliasName: &aliasName,
VersionId: tea.String("1"),
AdditionalVersionWeight: routingConfig,
}))Perilaku Pemicu HTTP
Di Function Compute 3.0, handler untuk permintaan acara dan permintaan HTTP disatukan. Contoh kode berikut memberikan contoh dalam Python:
def handler(event, context):
return 'hello fc'
Function Compute mengonversi permintaan yang mengakses fungsi menggunakan URL pemicu HTTP atau nama domain kustom menjadi acara dan mengonversi respons fungsi menjadi respons HTTP.
Contoh kode berikut memberikan contoh permintaan acara:
{
"version": "v1",
"rawPath": "/my/path",
"httpMethod": "POST",
"headers": {
"header1": "value1,value2",
"header2": "value2"
},
"queryParameters": {
"param1": "value1,value2",
"param2": "value2"
},
"body": "hello from client",
"isBase64Encoded": false,
"requestContext": {
"accountId": "12345678",
"domainName": "my-domain.com",
"domainPrefix": "prefix",
"requestId": "abcd-efgh",
"time": "2023-09-01T14:17:23+08:00",
"timeEpoch": 1693549043255,
"http": {
"method": "GET",
"path": "/my/path",
"protocol": "http",
"sourceIP": "39.40.41.42",
"userAgent": "go-sdk/1.0"
}
}
}Contoh kode berikut memberikan contoh respons HTTP:
def handler(event, context):
return {
'body': 'hello FC',
'headers': {
'my-custom-header': 'foo'
},
'statusCode': 400
}
Kode berikut menunjukkan respons HTTP yang dikonversi dari kode sebelumnya:
HTTP/1.1 400 Bad Request
Content-Type: text/plain; charset=utf-8
My-Custom-Header: foo
X-Fc-Request-Id: 64e866c9-69902fbc525fd10989e7299c
Date: Fri, 25 Aug 2023 10:18:06 GMT
Content-Length: 8
hello FCUntuk informasi tentang konversi format permintaan dan respons, lihat Ikhtisar.
Peran terhubung layanan
Saat Anda menggunakan fitur spesifik yang disediakan oleh Function Compute, seperti logging, VPC, dan pemanggilan asinkron, Function Compute perlu mengakses layanan Alibaba Cloud lainnya. Sebagai contoh, saat Anda mengonfigurasi fitur logging untuk sebuah fungsi, Anda harus memberikan Function Compute izin tulis pada Simple Log Service Logstore sebelum Function Compute dapat menulis log ke Logstore. Di versi sebelumnya, izin tulis pada Simple Log Service Logstore dikonfigurasi menggunakan peran layanan. Peran layanan diasumsikan oleh Function Compute dan kode fungsi untuk mengakses layanan Alibaba Cloud lainnya. Hal ini dapat menyebabkan peran layanan diberikan izin berlebihan.
Di Function Compute 3.0, peran terhubung layanan didukung. Anda dapat menggunakan peran terhubung layanan untuk mengotorisasi Function Compute untuk mengakses layanan Alibaba Cloud lainnya. Jika kode Anda perlu mengakses layanan Alibaba Cloud lainnya, Anda dapat menggunakan peran fungsi untuk mengimplementasikan otorisasi. Function Compute juga memungkinkan Anda mengelola izin peran fungsi secara halus berdasarkan kebutuhan bisnis Anda.
Setelah Anda membuat peran terhubung layanan, fungsi yang Anda buat di Function Compute 3.0 dapat secara otomatis mengasumsikan peran terhubung layanan. Anda dapat menggunakan fitur spesifik, seperti logging, VPC, dan pemanggilan asinkron, pada fungsi tanpa perlu mengonfigurasi peran untuk fungsi tersebut.
Kompatibilitas dengan layanan dan fungsi asli
Function Compute 3.0 menyediakan serangkaian Operasi API baru dan antarmuka GUI konsol baru, yang kompatibel dengan layanan dan fungsi asli. Tabel berikut menjelaskan aturan kompatibilitas dan memberikan contoh untuk pemahaman yang lebih baik. Dalam contoh, Anda telah membuat layanan s1 yang berisi fungsi f1 dan fungsi f2 di Function Compute 2.0. Versi 1, versi 2, dan alias prod dibuat untuk layanan s1 di Function Compute 2.0.
Kategori | Aturan Kompatibilitas | Contoh |
Konfigurasi Layanan | Layanan dan fungsi asli semuanya dikonversi menjadi fungsi di Function Compute 3.0 dalam format Konfigurasi layanan asli, seperti peran layanan, logging, dan VPC, dikonversi menjadi konfigurasi fungsi. | Di Function Compute 3.0, fungsi asli dikonversi menjadi fungsi |
Pembaruan konfigurasi fungsi dalam layanan tidak memengaruhi fungsi lain dalam layanan. | Jika Anda memperbarui konfigurasi VPC dari fungsi | |
Jika Anda memanggil Operasi API Function Compute 2.0 untuk memperbarui konfigurasi layanan, konfigurasi yang sesuai dari semua fungsi dalam layanan diperbarui. | Jika Anda memperbarui konfigurasi VPC dari layanan s1 di Function Compute 2.0, konfigurasi VPC dari fungsi | |
Versi dan Alias | Versi dan alias layanan asli dikonversi menjadi versi dan alias fungsi. | Di Function Compute 3.0, fungsi |
Versi baru dari fungsi berlaku pada layanan asli tempat fungsi tersebut berada dan fungsi lain dalam layanan. | Jika Anda menerbitkan versi 3 untuk fungsi | |
Alias baru dari fungsi berlaku pada layanan tempat fungsi tersebut berada dan fungsi lain dalam layanan. | Jika Anda membuat alias test untuk fungsi | |
Anda tidak dapat menghapus versi atau alias dari fungsi yang dikonversi di Function Compute 3.0 karena versi dan alias tersebut dibagikan oleh layanan dan fungsi lain dalam layanan. | Jika Anda mencoba menghapus versi 3 dari fungsi | |
Pembaruan alias fungsi tidak memengaruhi fungsi lain dalam layanan. | Jika Anda memperbarui alias prod untuk fungsi | |
Jika Anda memanggil Operasi API Function Compute 2.0 untuk memperbarui alias layanan, alias semua fungsi dalam layanan diperbarui. | Jika Anda memperbarui alias prod untuk layanan s1 dan mengubah versi yang ditunjuk oleh alias prod dari versi 1 ke versi 2, alias prod dari fungsi |
Setelah Anda melakukan operasi pada fungsi asli di konsol Function Compute 3.0, fungsi tersebut memiliki konfigurasi tingkat layanan independen. Pembaruan selanjutnya yang dilakukan di konsol Function Compute 3.0 pada fungsi tersebut hanya memengaruhi fungsi itu sendiri. Jika Anda memperbarui konfigurasi tingkat layanan fungsi di konsol Function Compute 2.0, konfigurasi yang sesuai dari semua fungsi dalam layanan diperbarui.