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