AWS Lambda 関数のバージョン - AWS Lambda

AWS Lambda 関数のバージョン

バージョンを使用して、AWS Lambda 関数のデプロイを管理できます。たとえば、安定した実稼働バージョンのユーザーに影響を与えることなく、ベータテスト用の新しいバージョンの関数を公開できます。

Lambda 関数を公開するたびに、新しいバージョンの関数がシステムで作成されます。新しいバージョンは、関数の未公開バージョンのコピーです。関数のバージョンには、次の情報が含まれています。

  • 関数コードと関連するすべての依存関係。

  • 関数を実行する Lambda ランタイム。

  • 環境変数を含むすべての関数設定。

  • 関数のこのバージョンを識別する一意の Amazon リソースネーム (ARN)。

関数コードと設定は、未公開バージョンの関数でのみ変更できます。バージョンを公開すると、そのバージョンのユーザーに一貫したエクスペリエンスを保証するためにコードとほとんどの設定がロックされます。関数の設定の詳細については、「AWS Lambda コンソールで関数を設定する」を参照してください。

関数の新しいバージョンを作成するには

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

  2. 公開する関数を選択します。

  3. [アクション] メニューで、[新しいバージョンを発行] を選択します。

関数の最初のバージョンを公開すると、使用可能なバージョンのドロップダウンメニューが Lambda コンソールに表示されます。[デザイナー] パネルで、関数名の末尾にバージョン修飾子が表示されます。

関数の現在のバージョンを表示するには、関数を選択して [Qualifiers (修飾子)] を選択します。展開された [Qualifiers (修飾子)] メニューで、[バージョン] タブを選択します。[バージョン] パネルで、選択した関数のバージョンのリストを確認できます。選択した関数をまだ公開していない場合、[バージョン] パネルには $LATEST バージョンのみが表示されます。

Lambda API を使用したバージョンの管理

関数のバージョンを公開するには、PublishVersion API アクションを使用します。

次の例では、関数の新しいバージョンを公開します。レスポンスは、バージョン番号およびバージョンがサフィックスとしてついた関数 ARN を含む、新しいバージョンの設定情報を返します。

$ aws lambda publish-version --function-name my-function { "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function:1", "Version": "1", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "function.handler", "Runtime": "nodejs12.x", ... }

バージョンの使用

ARN を使用して Lambda 関数を参照します。この初期バージョンに関連付けられる ARN は 2 つです。

  • 修飾 ARN – バージョンのサフィックスが付いた関数 ARN です。

    arn:aws:lambda:aws-region:acct-id:function:helloworld:$LATEST
  • 非修飾 ARN – バージョンのサフィックスが付いていない関数 ARN です。

    arn:aws:lambda:aws-region:acct-id:function:helloworld

    この非修飾 ARN は関連するすべてのオペレーションで使用できます。ただし、これを使用してエイリアスを作成することはできません。

関数のバージョンを公開しない場合に関数を呼び出すには、修飾 ARN と非修飾 ARN のいずれもイベントソースマッピングで使用できます。

Lambda では、コードがまだ公開されていない場合、または最近の公開バージョンと比較してコードが変更されている場合にのみ、関数の新しいバージョンを公開します。変更がない場合、関数のバージョンは最後に公開されたバージョンのままです。

Lambda 関数バージョンにはそれぞれ、一意の ARN があります。バージョンを公開した後は、ARN または関数コードを変更することはできません。

リソースポリシー

リソースベースのポリシーを使用して、サービス、リソース、またはアカウントに関数へのアクセスを許可する場合、その権限の範囲は、関数に適用したか、または関数の 1 つのバージョンに適用したかによって異なります。

  • 修飾関数名(helloworld:1など)を使用した場合、アクセス許可はその修飾 ARN を使用した helloworld 関数のバージョン 1 の呼び出しのみに有効です。他の ARN を使用すると、アクセス許可エラーが発生します。

  • 非修飾関数名(helloworld など)を使用した場合は、アクセス権限は非修飾関数 ARN を使用した helloworld 関数の呼び出しのみに有効です。$LATEST などの他の ARN を使用すると、アクセス許可エラーが発生します。

  • $LATEST 修飾関数名(helloworld:$LATEST など)を使用した場合、アクセス権限はその修飾 ARN を使用した helloworld 関数の呼び出しのみに有効です。非修飾 ARN を使用すると、アクセス権限エラーが発生します。

関数エイリアスを使用すると、イベントソースとリソースポリシーの管理を簡素化できます。詳細については、「AWS Lambda 関数のエイリアス」を参照してください。