Anda dapat mempublikasikan satu atau lebih versi layanan. Versi berfungsi sebagai snapshot dari layanan tersebut. Saat Anda mempublikasikan versi, Function Compute membuat snapshot layanan dan menetapkan nomor versi yang mengaitkan layanan dengan snapshot tersebut. Anda juga dapat membuat alias untuk versi layanan dan mengarahkannya ke versi tertentu. Dengan menggunakan versi dan alias layanan, Anda dapat mengimplementasikan fitur seperti rilis, rollback, dan rilis canary. Topik ini menjelaskan cara mengimplementasikan rilis canary menggunakan versi dan alias layanan di konsol Function Compute.
Proses rilis canary
Sebelum Anda mulai
Langkah 1: Persiapkan dan uji fungsi
Saat pertama kali membuat layanan dan fungsi dalam layanan tersebut, versi layanan adalah LATEST. Anda dapat men-debug fungsi dalam layanan versi LATEST hingga stabil. Anda juga dapat memanggil fungsi dalam layanan versi LATEST melalui konsol Function Compute.
Masuk ke konsol Function Compute. Di panel navigasi sisi kiri, klik Services & Functions.
Di bilah navigasi atas, pilih wilayah. Pada halaman Services, klik layanan yang diinginkan.
Pada halaman Functions, klik nama fungsi yang diinginkan. Pada halaman Detail Fungsi yang muncul, klik tab Code.
Di editor kode, modifikasi kode untuk melihat versi fungsi, klik Deploy, lalu klik Test Function.
Berikut adalah contoh kode untuk memeriksa versi fungsi dalam berbagai bahasa pemrograman:
module.exports.handler = function(eventBuf, context, callback) { var qualifier = context['service']['qualifier'] var versionId = context['service']['versionId'] console.log('Qualifier from context:', qualifier); console.log('VersionId from context: ', versionId); callback(null, qualifier); };# -*- coding: utf-8 -*- def handler(event, context): qualifier = context.service.qualifier versionId = context.service.version_id print('Qualifier from context:' + qualifier) print('VersionId from context:' + versionId) return 'hello world'<?php function handler($event, $context) { $qualifier = $context["service"]["qualifier"]; $versionId = $context["service"]["versionId"]; print($qualifier); print($versionId); return "hello world"; }using System; using System.IO; using Aliyun.Serverless.Core; using Microsoft.Extensions.Logging; namespace Desktop { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } } class App { public string Handler(Stream input, IFcContext context) { ILogger logger = context.Logger; var qualifier = context.ServiceMeta.Qualifier; var versionId = context.ServiceMeta.VersionId; logger.LogInformation("Qualifier from context: {0}", qualifier); logger.LogInformation("versionId from context: {0}", versionId); return "hello word"; } } }Setelah eksekusi selesai, Anda dapat melihat versi fungsi di log output. Dalam log output contoh ini, nilai bidang qualifier adalah LATEST, menunjukkan bahwa fungsi yang dieksekusi termasuk dalam layanan versi LATEST.
Langkah 2: Publikasikan versi dan uji versi
Setelah layanan versi LATEST stabil, Anda dapat mempublikasikan layanan versi stabil untuk merespons permintaan online. Untuk informasi lebih lanjut, lihat Publikasikan Versi.
Setelah versi baru dipublikasikan, Anda dapat mengeksekusi fungsi versi baru di konsol Function Compute.
Masuk ke konsol Function Compute. Di panel navigasi sisi kiri, klik Services & Functions.
Di bilah navigasi atas, pilih wilayah. Pada halaman Services, klik layanan yang diinginkan.
Pada halaman Functions, pilih versi dari daftar drop-down Version.

Klik nama fungsi yang ingin Anda kelola. Pada halaman yang muncul, klik tab Code lalu klik Test Function.
Setelah fungsi dieksekusi, Anda dapat melihat log output eksekusi. Dalam log output contoh ini, nilai bidang qualifier adalah 1 dan nilai bidang versionId adalah 1, menunjukkan bahwa fungsi yang dieksekusi termasuk dalam layanan Versi 1.
Langkah 3: Gunakan alias untuk beralih lalu lintas
Setelah versi dipublikasikan, Anda dapat membuat alias dan mengarahkannya ke versi tersebut. Saat versi diperbarui, Anda dapat mengarahkan alias ke versi baru. Dengan cara ini, pemanggil hanya perlu menggunakan alias yang benar untuk memanggil fungsi. Untuk informasi tentang cara membuat alias, lihat Buat Alias.
Setelah alias dibuat, Anda dapat memverifikasi apakah versi fungsi yang benar dieksekusi di konsol Function Compute.
Dalam contoh topik ini, alias alias1 mengarah ke versi 1.
Masuk ke konsol Function Compute. Di panel navigasi sisi kiri, klik Services & Functions.
Di bilah navigasi atas, pilih wilayah. Pada halaman Services, klik layanan yang diinginkan.
Pada halaman Functions, klik nama fungsi yang diinginkan.
Di pojok kanan atas halaman detail fungsi, pilih alias1 dari daftar drop-down Version or Alias.

Klik tab Code lalu klik Test Function.
Setelah eksekusi selesai, Anda dapat melihat versi fungsi di log output. Dalam log output contoh ini, nilai bidang qualifier adalah alias1 dan nilai bidang versionId adalah 1. Nilai-nilai tersebut menunjukkan bahwa fungsi yang dieksekusi termasuk dalam layanan yang terkait dengan alias alias1 dan alias tersebut mengarah ke Versi 1.
Setelah versi baru dikembangkan, Anda dapat menggunakan versi rilis canary untuk memastikan bahwa versi baru stabil.
Publikasikan versi 2 sebagai versi baru. Untuk informasi lebih lanjut, lihat Publikasikan Versi.
Setelah versi dipublikasikan, Anda dapat melihat versi terbaru dalam daftar versi.
Di panel navigasi sisi kiri, klik Aliases.
Dalam daftar alias, temukan alias alias1 yang mengarah ke Versi 1 dan klik Modify di kolom Actions.
Di panel yang muncul, atur parameter Canary Release Version ke 2, pilih jenis rilis canary, lalu klik OK.
Random Canary Release by Percentages
Tentukan nilai untuk parameter Canary Release Version Weight. Gambar berikut memberikan contoh.

Setelah pengaturan selesai, Anda dapat memanggil alias alias1 untuk memverifikasi apakah jumlah lalu lintas tertentu dialihkan ke Versi 2. Dalam contoh ini, jika alias alias1 dipanggil untuk mengeksekusi fungsi sebanyak 10 kali, Versi 2 dipanggil tiga kali dan Versi 1 dipanggil tujuh kali.
Canary Release Based on Specified Rules
CatatanAnda hanya dapat memilih Canary Release Based on Specified Rules untuk fungsi HTTP.

Dalam contoh ini, pesan permintaan dirutekan ke versi rilis canary hanya ketika nilai key adalah
x-test-uid.
Tabel berikut menjelaskan parameter untuk membuat aturan rilis canary.
Parameter
Deskripsi
Name
Masukkan nama alias yang ingin Anda buat.
Major Version
Versi utama dari alias.
Enable Canary Release Version
Tentukan apakah akan mengaktifkan versi rilis canary.
Canary Release Version
Versi rilis canary dari alias.
Canary Release Type
Pilih jenis rilis canary. Nilai valid: Random Canary Release by Percentages dan Canary Release Based on Specified Rules.
Random Canary Release by Percentages: bobot untuk beralih lalu lintas ke versi rilis canary.
Canary Release Based on Specified Rules: aturan berdasarkan mana rilis canary dilakukan.
Canary Release Version Weight
Parameter ini diperlukan hanya jika Anda mengatur parameter Canary Release Type ke Random Canary Release by Percentages.
Parameter ini menentukan persentase lalu lintas yang dialihkan ke versi rilis canary. Sebagai contoh, jika Anda mengatur parameter ini ke 5%, Function Compute mengalokasikan 5% lalu lintas ke versi rilis canary dan 95% lalu lintas ke versi utama.
Rule Mode
Parameter ini diperlukan hanya jika Anda mengatur parameter Canary Release Type ke Canary Release Based on Specified Rules.
Parameter ini menentukan mode seleksi untuk aturan tertentu. Nilai valid:
Meet All of the Following Rules
Meet Any of the Following Rules
Rules
Parameter ini diperlukan hanya jika Anda mengatur parameter Canary Release Type ke Canary Release Based on Specified Rules.
Parameter ini menentukan isi dari aturan. Setiap aturan berisi bidang berikut:
Parameter Type: tipe parameter. Nilai valid: Header, Cookie, dan Query.
Parameter: nama parameter yang digunakan untuk mengontrol rilis canary.
Condition: kondisi perbandingan. Setelah Anda mengirim permintaan, Function Compute membandingkan nilai aktual dari bidang Parameter dan nilai yang Anda tentukan untuk bidang Parameter berdasarkan kondisi yang ditentukan. Jika kondisi terpenuhi, permintaan dirutekan ke versi rilis canary. Nilai valid:
=, !=, >, <, >=, <=: operator perbandingan. Sebagai contoh, jika Anda mengatur bidang Condition ke=, permintaan dirutekan ke versi rilis canary hanya ketika nilai aktual dari parameter permintaan sama dengan nilai yang Anda tentukan di bidang Value.in: kondisi pencocokan string. Permintaan dirutekan ke versi rilis canary hanya ketika nilai aktual dari parameter permintaan termasuk dalam nilai yang Anda tentukan di bidang Value.Distribusi Nilai: Lakukan rilis canary berdasarkan distribusi nilai parameter tertentu. Sebagai contoh, Anda mengatur bidang Parameter Type ke Header, bidang Parameter keuser-id, dan bidang Value ke20. Ini menunjukkan bahwa permintaan yang sesuai dengan 20% nilai distribusi header permintaan HTTPuser-iddirutekan ke versi rilis canary.
Value: nilai parameter yang digunakan untuk mengontrol rilis canary.
Anda dapat mengklik + Add Rule untuk menambahkan lebih banyak aturan.
Pengaturan Lanjutan
Canary Release Weight of Provisioned Instances
Persentase instans dalam mode disediakan untuk rilis canary. Jika jumlah instans yang disediakan lebih besar dari 1, Function Compute menghasilkan instans berdasarkan nilai yang ditentukan. Jika Anda tidak menentukan parameter, nilai defaultnya adalah 1%.
PentingNilai parameter ini valid hanya jika jumlah instans yang disediakan lebih besar dari 1.
Setelah versi rilis canary menjadi stabil, Anda dapat beralih semua lalu lintas online ke layanan versi baru 2.
FAQ
Bagaimana cara memeriksa versi layanan yang dipanggil?
Saat menggunakan fitur rilis canary, Function Compute mengalokasikan lalu lintas berdasarkan bobot yang ditentukan. Anda dapat menggunakan salah satu metode berikut untuk memeriksa versi layanan:
Gunakan Parameter context
Setiap kali fungsi dipanggil, parameter service yang terkandung dalam parameter context mencakup bidang qualifier dan versionId.
qualifier: Informasi versi yang dilewatkan saat fungsi dipanggil. Nilainya bisa berupa nomor versi atau alias.
versionId: Nomor versi spesifik yang diurai berdasarkan bidang qualifier saat fungsi dieksekusi.
Gunakan Respons Pemanggilan Fungsi Sinkron
Respons pemanggilan fungsi sinkron berisi header x-fc-invocation-service-version yang menunjukkan versi layanan yang dipanggil.