AWS Lambda
開発者ガイド

AWS Lambda 関数のエイリアス

AWS Lambda 関数の 1 つ以上のエイリアスを作成できます。Lambda エイリアスは Lambda 関数の特定のバージョンに対するポインタのようなものです。ユーザーは、エイリアス ARN を使用して関数バージョンにアクセスできます。

エイリアスを作成するには

  1. Lambda コンソール (関数ページ) を開きます。

  2. 関数を選択します。

  3. [アクション] で [エイリアスの作成] を選択します。

  4. [新しいエイリアスの作成] フォームで、エイリアスの名前と説明(オプション)を入力します。このエイリアスの関数バージョンを選択します。

関数に対して現在定義されているエイリアスを表示するには、[Qualifiers (修飾子)]、[エイリアス] タブの順に選択します。

Lambda API を使用したエイリアスの管理

エイリアスを作成するには、create-alias コマンドを使用します。

$ aws lambda create-alias --function-name my-function --function-version version number --name alias name --description " "

関数の新しいバージョンを指すようにエイリアスを変更するには、update-alias コマンドを使用します。

$ aws lambda update-alias --function-name my-function --function-version version number

上記の手順の AWS CLI コマンドは、次の AWS Lambda API に対応しています。

エイリアスの使用

各エイリアスには一意の ARN があります。エイリアスは関数バージョンのみを指すことができ、別のエイリアスを指すことはできません。関数の新しいバージョンを指すよう、エイリアスを更新できます。

Amazon S3 などのイベントソースは Lambda 関数を呼び出します。これらのイベントソースは、イベント発生時に呼び出す関数を識別するマッピングを維持します。マッピング設定で Lambda 関数のエイリアスを指定する場合、関数のバージョンが変更されたときにマッピングを更新する必要はありません。

リソースポリシーでは、Lambda 関数を使用するためのイベントソースにアクセス許可を付与できます。ポリシーでエイリアス ARN を指定した場合、関数のバージョンが変更されたときにポリシーを更新する必要はありません。

リソースポリシー

リソースベースのポリシーを使用して、サービス、リソース、またはアカウントに関数へのアクセスを許可する場合、その権限の範囲は、エイリアス、バージョン、または関数に適用したかどうかによって異なります。エイリアス名(helloworld:PROD など)を使用する場合、アクセス権限は、エイリアス ARN を使用して helloworld 関数を呼び出す場合にのみ有効です。バージョン ARN または関数 ARN を使用すると、アクセス許可エラーが発生します。これには、エイリアスが指すバージョン ARN が含まれます。

たとえば、以下の AWS CLI コマンドは Amazon S3 に helloworld Lambda 関数の PROD エイリアスを呼び出すためのアクセス許可を付与します。--qualifier パラメータはエイリアス名を指定することに注意してください。

$ aws lambda add-permission --function-name helloworld \ --qualifier PROD --statement-id 1 --principal s3.amazonaws.com --action lambda:InvokeFunction \ --source-arn arn:aws:s3:::examplebucket --source-account 123456789012

この場合、Amazon S3 が PROD エイリアスを呼び出せるようになりました。従って Lambda が PROD エイリアスが指す helloworld Lambda 関数バージョンを実行できます。これを正しく機能させるには、S3 バケットの通知設定で PROD エイリアス ARN を使用する必要があります。

エイリアスのルーティング設定

エイリアスでルーティング設定を使用して、トラフィックの一部を 2 番目の関数バージョンに送信します。たとえば、エイリアスを設定して、ほとんどのトラフィックを既存のバージョンに送信し、トラフィックの一部を新しいバージョンに送信するように設定することで、新しいバージョンを展開するリスクを軽減できます。

エイリアスは最大 2 つの Lambda 関数バージョンを指すことができます。バージョンは次の基準を満たす必要があります。

  • いずれのバージョンにも同じ IAM 実行ロールが付与されている必要があります。

  • どちらのバージョンも、同じ配信不能キュー設定を持つか、配信不能キュー設定がない必要があります。

  • 両方のバージョンを公開する必要があります。エイリアスが $LATEST を指すことはできません。

エイリアスのルーティングを構成するには

  1. Lambda コンソール (関数ページ) を開きます。

  2. 関数を選択します。

  3. 関数に少なくとも 2 つの公開バージョンがあることを確認します。これを行うには、[Qualifiers (修飾子)] を選択し、[バージョン] を選択してバージョンのリストを表示します。追加のバージョンを作成する必要がある場合は、AWS Lambda 関数のバージョン の手順に従います。

  4. [アクション] メニューで、[エイリアスの作成] を選択します。

  5. [新しいエイリアスの作成] ウィンドウで、[Name (名前)] の値を入力し、必要に応じて、エイリアスが参照する Lambda 関数の [説明] の値を入力して [Version (バージョン)] の値を指定します。

  6. [Additional version (追加バージョン)] で、次の項目を指定します。

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

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

  7. [Create] を選択します。

エイリアスルーティングの構成

create-alias コマンドおよび update-alias コマンドを使用して、2 つの関数バージョン間のトラフィックの重みを設定します。エイリアスを作成または更新するときは、routing-config パラメータでトラフィックの重みを指定します。

次の例では、Lambda 関数のエイリアス(名称: routing-alias)を作成します。エイリアスは、関数のバージョン 1 を指します。関数のバージョン 2 は、トラフィックの 3% を受信します。残りの 97% のトラフィックはバージョン 1 にルーティングされます。

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

バージョン 2 への着信トラフィックのパーセンテージを増やすには、update-alias コマンドを使用します。次の例では、トラフィックを 5% に増やします。

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

すべてのトラフィックをバージョン 2 にルーティングするには、UpdateAlias コマンドを使用して、エイリアスをバージョン 2 にポイントするように function-version プロパティを変更します。このコマンドでは、ルーティング設定もリセットされます。

$ aws lambda update-alias --name routing-alias --function-name my-function \ --function-version 2 --routing-config AdditionalVersionWeights={}

前の手順の CLI コマンドは、次の AWS Lambda API オペレーションに対応しています。

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

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

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

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

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

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