関数に対して 1 つ以上のバージョンを公開できます。バージョンを公開するたびに、Function Compute はコードと構成の不変のスナップショットを一意のバージョン番号で作成します。また、特定のバージョンへのポインターとして機能するエイリアスを作成することもできます。バージョンとエイリアスを併用することで、デプロイメントの管理、ロールバックの実行、カナリアリリースの実装が容易になります。
カナリアリリースのワークフロー
前提条件
ステップ 1:関数の準備とテスト
関数を作成すると、その初期バージョンは LATEST になります。LATEST バージョンで関数を開発およびテストし、安定するまで続けます。コンソールから関数の 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:バージョンの公開とテスト
関数の LATEST バージョンが安定したら、公開して本番トラフィックを処理できます。詳細については、「バージョンの公開」をご参照ください。
新しいバージョンを公開した後、コンソールからそれを呼び出すことができます。
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、を選択します。
上部のナビゲーションバーでリージョンを選択します。関数リストページで、対象の関数をクリックします。
関数の詳細ページで、バージョン管理 タブをクリックし、対象のバージョンをクリックします。
対象のバージョンの詳細ページで、コード タブをクリックし、次に 関数のテスト をクリックします。
実行が完了したら、実行ログを表示できます。ログ出力には、qualifier が 1 で、解析された versionId が 1 であることが示されます。これは、関数のバージョン 1 が実行されたことを意味します。
ステップ 3:エイリアスを使用したトラフィックの切り替え
新しいバージョンをデプロイした後、それを指すエイリアスを作成できます。関数を更新する際に、エイリアスを更新して新しいバージョンを指すようにすることができます。これにより、呼び出し元はバージョン番号を追跡する必要なく、固定のエイリアスを使用できます。エイリアスの作成手順については、「エイリアスの作成」をご参照ください。
エイリアスを作成した後、コンソールから正しい関数バージョンが呼び出されることを確認できます。
この例では、エイリアス alias1 はバージョン 1 を指します。
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、を選択します。
上部のナビゲーションバーでリージョンを選択します。関数リストページで、対象の関数をクリックします。
関数の詳細ページで、エイリアス管理 タブをクリックし、対象のエイリアスをクリックします。
対象のエイリアスの詳細ページで、テスト タブをクリックし、次に 関数のテスト をクリックします。
実行が完了したら、ログ出力を表示できます。ログ出力には、qualifier が alias1 で、解決された versionId が 1 であることが示されます。これは、バージョン 1 を指すエイリアス alias1 を使用して関数が実行されたことを示します。
新しいバージョンを開発した後、カナリアリリースを使用して安定したロールアウトを保証します。
新しいバージョンは、前回のバージョン公開以降に関数のコードまたは構成が変更された場合にのみ公開できます。
新しいバージョン 2 を公開します。詳細については、「バージョンの公開」をご参照ください。
バージョンが公開されると、バージョンリストで新しいバージョンを表示できます。
関数の詳細ページで、エイリアス タブをクリックします。対象のエイリアスの 操作 列で、変更 をクリックします。
[エイリアスの変更] パネルで、新しいバージョン 2 を カナリアリリースバージョン として設定し、カナリアリリースバージョンの重み を構成してから、OK をクリックします。
カナリアバージョンが安定していることを確認した後、完全な切り替えを実行して、すべてのトラフィックをバージョン 2 にルーティングできます。
よくある質問
呼び出された関数バージョンの確認
カナリアリリース機能を使用すると、Function Compute は指定した重みに従ってトラフィックを割り当てます。呼び出された関数のバージョンは、次の方法で確認できます:
context 入力パラメーターによる確認
各関数呼び出しにおいて、context 入力パラメーターには qualifier フィールドと versionId フィールドが含まれます。
qualifier:呼び出す関数のバージョンまたはエイリアス。
versionId:関数の実行時に qualifier から解決される特定のバージョン番号。
同期関数呼び出しの応答を使用して
同期関数呼び出しのレスポンスには、呼び出された関数バージョンを指定する x-fc-invocation-function-version ヘッダーが含まれます。
参考
関数のバージョンの公開とエイリアスの構成に関する詳細については、「バージョンの管理」および「エイリアスの管理」をご参照ください。