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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Lambda 関数のエイリアス

Lambda 関数のエイリアスを作成できます。Lambda のエイリアスとは、更新可能な関数のバージョンへのポインタです。関数のユーザーは、エイリアス Amazon リソースネーム (ARN) を使用して関数のバージョンにアクセスできます。新しいバージョンをデプロイする場合は、新しいバージョンを使用するようにエイリアスを更新するか、2 つのバージョン間でトラフィックを分割することができます。

関数エイリアスの作成 (コンソール)

Lambda コンソールを使用して、関数エイリアスを作成できます。

エイリアスを作成するには
  1. Lambda コンソールの [関数ページ] を開きます。

  2. 関数を選択します。

  3. [エイリアス]、[ エイリアスの作成 ] の順にクリックします。

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

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

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

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

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

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

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 オペレーションに対応しています。

AWS SAM と AWS CloudFormation を使用したエイリアスの管理

AWS Serverless Application Model (AWS SAM) と AWS CloudFormation を使用して、関数エイリアスを作成し、管理することができます。

AWS SAM テンプレートで関数エイリアスを宣言する方法については、「AWS SAM デベロッパーガイド」の「AWS::Serverless::Function」ページを参照してください。AWS CloudFormation を使用したエイリアスの作成と設定については、「AWS CloudFormation ユーザーガイド」の「AWS::Lambda::Alias」を参照してください。

エイリアスの使用

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

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

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

リソースポリシー

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

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

例えば、以下の 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 番目の関数バージョンに送信します。たとえば、エイリアスを設定して、ほとんどのトラフィックを既存のバージョンに送信し、トラフィックの一部を新しいバージョンに送信するように設定することで、新しいバージョンを展開するリスクを軽減できます。

Lambda は単純な確率モデルを使用して、2 つの関数バージョン間でトラフィックを分配することに注意してください。低いトラフィックレベルでは、各バージョンで設定されたトラフィックの割合と実際の割合の間に大きな差異が生じる場合があります。関数がプロビジョニングされた同時実行を使用する場合、エイリアスルーティングがアクティブである間に、プロビジョニングされた同時実行インスタンスの数を高く設定することで、過剰呼び出しを防ぐことができます。

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

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

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

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

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

関数に少なくとも 2 つの公開バージョンがあることを確認します。追加のバージョンを作成するには、「Lambda 関数のバージョン」の手順に従います。

  1. Lambda コンソールの [関数ページ] を開きます。

  2. 関数を選択します。

  3. [エイリアス]、[ エイリアスの作成 ] の順にクリックします。

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

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

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

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

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

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

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

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

CLI を使用したエイリアスルーティングの設定

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 ログ – Lambda は、関数の呼び出しごとに、呼び出されたバージョン ID を含むSTARTログエントリを Amazon CloudWatch Logs に自動的に出力します。以下に例を示します。

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

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

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