AWS Lambda
開発者ガイド

エイリアスを使用したトラフィックの移行

デフォルトでは、エイリアスは単一の Lambda 関数バージョンを指します。エイリアスが別の関数バージョンを指すように更新されると、受信リクエストトラフィックは更新されたバージョンにすぐに指します。これにより、そのエイリアスは、新しいバージョンによる潜在的な不安定さの影響を受ける可能性があります。この影響を最小限に抑えるには、Lambda 関数の 2 つの異なるバージョンを指し、受信トラフィックが各バージョンに送信される割合 (%) を決定できる Lambda エイリアスの routing-config パラメータを実装できます。

たとえば、本稼働環境への対応状況を分析する際に、受信トラフィックの 2 パーセントのみが新しいバージョンにルーティングされ、残りの 98 パーセントは元のバージョンにルーティングされることを指定できます。新しいバージョンが成熟して安定するまでは、必要に応じて比率を徐々に更新できます。その後、エイリアスを更新し、すべてのトラフィックを新しいバージョンにルーティングできます。

注記

エイリアスは最大 2 つの Lambda 関数バージョンを指すことができます。加えて:

  • 両方のバージョンが同じ デッドレターキュー 設定 (または DLQ 設定) を持つ必要があります。

  • 両方のバージョンは同じ IAM 実行ロールを持つ必要があります。

  • エイリアスで複数のバージョンを指す場合、エイリアスは $LATEST を指すことはできません。

エイリアスを使用したトラフィックの移行 (CLI)

CreateAlias オペレーションを使用してウェイトに基づいて 2 つのパラメータ間でトラフィックを移行するようにエイリアスを設定するには、routing-config パラメータを設定する必要があります。次の例では、エイリアスで 2 つの異なる Lambda 関数バージョンを指し、バージョン 2 が 2 パーセントの呼び出しトラフィックを受信して、残りの 98 パーセントがバージョン 1 を呼び出します。

aws lambda create-alias --name alias name --function-name function-name \ --function-version 1 --routing-config AdditionalVersionWeights={"2"=0.02}

着信トラフィックの割合 (%) は、UpdateAlias オペレーションを使用して新しいバージョン (バージョン 2) に更新できます。たとえば、次に示すように、新しいバージョンの呼び出しトラフィックを 5 パーセントに高めることができます。

aws lambda update-alias --name alias name --function-name function-name \ --routing-config AdditionalVersionWeights={"2"=0.05}

すべてのトラフィックをバージョン 2 にルーティングするには、再び UpdateAlias オペレーションを使用して、バージョン 2 を指すように function-version プロパティを変更します。次に、以下のように routing-config パラメータを空の文字列に設定します。

aws lambda update-alias --name alias name --function-name function-name \ --function-version 2 --routing-config ''

エイリアスを使用したトラフィックの移行 (コンソール)

以下に示すように Lambda コンソールを使用して、トラフィックの移行を設定できます。

  1. Lambda 関数を開き、少なくとも 2 つの以前に発行されたバージョンがあることを確認します。それ以外の場合は、バージョニングの詳細について「AWS Lambda バージョニングの紹介」を参照し、最初の関数バージョンを発行することができます。

  2. [Actions] の [Create alias] を選択します。

  3. [Create a new alias] ウィンドウで、[Name*] の値を指定し、必要に応じて、エイリアスが指す Lambda 関数の [Description] および [Version*] の値を指定します。ここでは、バージョンは 1 です。

  4. [Additional version] で、次のように指定します。

    1. 2 番目の Lambda 関数のバージョンを指定します。

    2. 関数のウェイト値を入力します。ウェイトとは、エイリアスが呼び出されたときにそのバージョンに割り当てられるトラフィックの割合 (%) です。最初のバージョンは残余ウェイトを受け取ります。たとえば、[Additional version] に 10 パーセントを指定した場合、最初のバージョンには自動的に 90 パーセントが割り当てられます。

  5. [Create (作成)] を選択します。

起動されたバージョンの特定

エイリアスで 2 つの関数バージョン間でトラフィックを移行している場合、どちらの Lambda 関数バージョンが呼び出されたかを特定するための 2 つの方法があります。

  1. CloudWatch Logs – Lambda は、すべての関数呼び出しで、CloudWatch Logs に対して呼び出されたバージョン ID を含む START ログエントリを自動的に発信します。以下に例を示します。

    19:44:37 START RequestId: request id Version: $version

    Lambda は Executed Version ディメンションを使用して、実行されたバージョンでメトリクスデータをフィルタリングします。これはエイリアスの呼び出しのみに適用されます。詳細については、「AWS Lambda CloudWatch ディメンション」を参照してください。

  2. 応答のペイロード (同期呼び出し) – 同期関数呼び出しの応答には、呼び出された関数バージョンを示す x-amz-executed-version ヘッダーが含まれます。