関数の複数のバージョンは、必要に応じて公開できます。公開すると、システムは自動的に一意のバージョン番号を生成し、現在のコードと構成を不変のベースラインとして保持します。さらに、特定のバージョンへのポインターとして機能するエイリアスを作成できます。バージョンとエイリアスの両方を活用することで、リリース、ロールバック、カナリアデプロイメントなどのシナリオ全体で管理を効率化できます。
カナリアリリースのプロセス
始める前に
関数が作成されていること。詳細については、「関数を作成する」をご参照ください。
ステップ 1: 関数の準備とテスト
初めて関数を作成すると、関数のバージョンは LATEST になります。関数が安定するまで、LATEST バージョンの関数をデバッグできます。Function Compute コンソールで LATEST バージョンの関数を呼び出すこともできます。
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、[関数] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。[関数] ページで、管理する関数をクリックします。
関数詳細ページで、[コード] タブをクリックします。
コードエディタで、関数のバージョンを表示するようにコードを変更し、[デプロイ] をクリックしてから、[関数のテスト] をクリックします。
次のサンプルコードは、関数のバージョンを確認するために使用されます。
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"; } } }実行が完了したら、ログ出力を表示できます。ログ出力では、バージョン情報を示す qualifier パラメーターの値が LATEST であることがわかります。これは、実行された関数が LATEST バージョンの関数に属していることを意味します。
ステップ 2: バージョンの公開とテスト
関数が安定していることが証明されたら、このバージョンを公開してオンラインリクエストの処理に使用できます。詳細については、「バージョンを公開する」をご参照ください。
新しいバージョンが公開された後、Function Compute コンソールで実行できます。
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、[関数] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。[関数] ページで、管理する関数をクリックします。
関数詳細ページで、[バージョン] タブページに切り替え、管理するバージョンをクリックします。
表示されたページで、[コード] タブをクリックし、[関数のテスト] をクリックします。
関数が実行された後、実行ログ出力を表示できます。ログ出力では、バージョン情報を示す qualifier パラメーターの値が 1 であり、バージョン ID を示す versionId パラメーターの値が 1 であることがわかります。ログ出力は、実行された関数がバージョン 1 であることを示しています。
ステップ 3: エイリアスを使用したトラフィックの転送
バージョンが公開された後、エイリアスを作成し、そのエイリアスをバージョンにポイントできます。このバージョンが更新されたら、エイリアスを更新されたバージョンにポイントできます。呼び出し元は、正しいエイリアスを使用するだけでよく、関数の特定のバージョンを意識する必要はありません。エイリアスの作成方法の詳細については、「エイリアスを作成する」をご参照ください。
エイリアスが作成された後、Function Compute コンソールで正しいバージョンの関数が実行されているかどうかを確認できます。
このトピックでは、エイリアス alias1 はバージョン 1 をポイントします。
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、[関数] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。[関数] ページで、管理する関数をクリックします。
関数詳細ページで、[エイリアス] タブページに切り替え、表示するエイリアスをクリックします。
表示されたページで、[テスト] タブをクリックし、[関数のテスト] をクリックします。
実行が完了したら、ログ出力を表示できます。ログ出力では、バージョン情報を示す qualifier パラメーターの値が alias1 であり、バージョン ID を示す versionId パラメーターの値が 1 であることがわかります。ログは、alias1 エイリアスの関数が呼び出され、エイリアスがバージョン 1 をポイントしていることを示しています。
新しいバージョンが開発された後、カナリアリリース機能を使用して、新しいバージョンが正式に展開される前に安定していることを確認できます。
新しいバージョンは、以前のバージョンと比較して関数の構成またはコードに変更が加えられた場合にのみ公開できます。
新しいバージョンとしてバージョン 2 を公開します。詳細については、「バージョンを公開する」をご参照ください。
バージョンが公開された後、バージョンリストで最新のバージョンを表示できます。
関数詳細ページで、[エイリアス] タブページに切り替えます。管理するエイリアスを見つけ、[アクション] 列の [変更] をクリックします。
エイリアス編集パネルで、バージョン 2 を [カナリアリリースバージョン] として設定し、[カナリアリリースバージョンの重み] を構成してから、[OK] をクリックします。
カナリアリリースバージョンが安定したら、すべてのオンライン トラフィックをバージョン 2 に切り替えることができます。
よくある質問
呼び出しの関数バージョンを確認するにはどうすればよいですか?
カナリアリリース機能を使用すると、Function Compute は指定された重みに基づいてトラフィックを割り当てます。次のメソッドを使用して、特定のリクエストを処理するために呼び出される関数のバージョンを確認できます。
context パラメーターを使用する
各関数の呼び出しでは、qualifier フィールドと versionId フィールドが context 入力パラメーターに含まれます。
qualifier: 関数が呼び出されたときに渡されるバージョン情報。バージョン番号またはエイリアスを指定できます。
versionId: 関数が実行されるときに qualifier パラメーターに基づいて解析される特定のバージョン ID。
同期関数呼び出しの応答を使用する
同期関数呼び出しへの応答には、呼び出された関数のバージョンを示す x-fc-invocation-function-version ヘッダーが含まれます。