Lambda 関数のエイリアス - AWS Lambda

Lambda 関数のエイリアス

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

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

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

  2. 関数の名前を選択します。

  3. 関数の設定ページで、[Actions (アクション)]、[Create alias (エイリアスの作成)] の順に選択します。

  4. [Create alias (エイリアスの作成)] ページで、以下の操作を行います。

    1. [Name (名前)] で、エイリアスの名前を入力します。

    2. (オプション) [Description (説明)] で、エイリアスの説明を入力します。

    3. [Version (バージョン)] で、エイリアスが参照する関数のバージョンを選択します。

    4. (オプション) エイリアスのルーティングを設定するには、[Weighted alias (加重エイリアス)] を展開します。詳細については、「エイリアスのルーティング設定」を参照してください。

    5. [Save] を選択します。

関数に現在定義されているエイリアスを表示するには、関数の設定ページで [Qualifiers (修飾子)] を選択してから、[Aliases (エイリアス)] タブを選択します。

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

AWS Command Line Interface (AWS CLI) を使用してエイリアスを作成するには、create-alias コマンドを使用します。

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

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

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

エイリアスを削除するには、delete-alias コマンドを使用します。

$ aws lambda delete-alias --function-name my-function --name alias-name

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

エイリアスの使用

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

Amazon Simple Storage Service (Amazon S3) などのイベントソースは Lambda 関数を呼び出します。これらのイベントソースは、イベント発生時に呼び出す関数を識別するマッピングを維持します。マッピング設定で Lambda 関数のエイリアスを指定する場合、関数のバージョンが変更されたときにマッピングを更新する必要はありません。詳細については、「AWS Lambda イベントソースマッピング」を参照してください。

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

リソースポリシー

リソースベースのポリシーを使用して、サービス、リソース、またはアカウントに、関数に対するアクセス許可を付与できます。このアクセス許可の範囲は、ポリシーの適用先がエイリアス、バージョン、または関数全体のいずれになるかによって決まります。たとえば、エイリアス名 (helloworld:PROD など) を使用する場合は、アクセス許可で、エイリアス ARN (helloworld:PROD) を使用した helloworld 関数の呼び出しを許可できます。

エイリアスまたは特定のバージョンを使用しないで関数を呼び出そうとすると、アクセス許可エラーが発生します。このアクセス許可エラーは、エイリアスに関連付けられた関数のバージョンを直接呼び出そうとしても発生します。

たとえば、以下の AWS CLI コマンドは、Amazon S3 が examplebucket に代わって動作しているときに、helloworld 関数の PROD エイリアスを呼び出すアクセス許可を Amazon S3 に付与します。

$ 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

ポリシーでのリソース名の使用の詳細については、「Lambda アクションのリソースと条件」を参照してください。

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

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

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

  • 両方のバージョンに同じ実行ロールが必要です。

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

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

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

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

  2. 関数の名前を選択します。

  3. 関数に少なくとも 2 つの公開バージョンがあることを確認します。関数の設定ページで [Qualifiers (修飾子)] を選択し、[Versions (バージョン)] タブを選択して、バージョンのリストを表示します。追加のバージョンを作成するには、「Lambda 関数のバージョン」の手順に従います。

  4. [Actions (アクション)]、[Create alias (エイリアスの作成)] の順に選択します。

  5. [Create alias (エイリアスの作成)] ページで、以下の操作を行います。

    1. [Name (名前)] で、エイリアスの名前を入力します。

    2. (オプション) [Description (説明)] で、エイリアスの説明を入力します。

    3. [Version (バージョン)] で、エイリアスが参照する最初の関数のバージョンを選択します。

    4. [Weighted alias (加重エイリアス)] を展開します。

    5. [Additional version (追加のバージョン)] で、エイリアスが参照する 2 番目の関数のバージョンを選択します。

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

    7. [保存] を選択します。

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

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

以下の例では、関数のバージョン 1 を参照する routing-alias という名前の Lambda 関数のエイリアスを作成します。関数のバージョン 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 にルーティングするには、update-alias コマンドを使用して、エイリアスがバージョン 2 を参照するように function-version プロパティを変更します。このコマンドでは、ルーティング設定もリセットされます。

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

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

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

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

  • CloudWatch Logs – Lambda は、関数呼び出しがあるたびに、Amazon CloudWatch Logs に対して呼び出されたバージョン ID を含む START ログエントリを自動的に生成します。次に例を示します。

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

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

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