Lambda 関数のバージョン
バージョンを使用して、関数のデプロイを管理できます。たとえば、安定した実稼働バージョンのユーザーに影響を与えることなく、ベータテスト用の新しいバージョンの関数を公開できます。Lambda は、関数を公開するたびに新しいバージョンの関数を作成します。新しいバージョンは、関数の未公開バージョンのコピーです。未公開バージョンの名前は $LATEST です。
注記
未公開バージョンのコードが以前の公開バージョンと同じ場合、Lambda は新しいバージョンを作成しません。新しいバージョンを作成する前に、$LATEST でコードの変更をデプロイする必要があります。
関数のバージョンには、以下の情報が含まれています。
-
関数コードと関連するすべての依存関係。
-
関数が使用する Lambda ランタイム識別子とランタイムバージョン。
-
環境変数を含むすべての関数設定。
-
関数の特定のバージョンを識別する一意の Amazon リソースネーム (ARN)。
[Auto] (自動) モードでランタイム管理コントロールを使用している場合は、関数バージョンが使用するランタイムバージョンが自動的に更新されます。[Function update] (関数の更新) または [Manual] (手動) モードを使用している場合、ランタイムバージョンは更新されません。詳細については、「Lambda ランタイム更新」を参照してください。
関数バージョンの作成
関数コードと設定は、未公開バージョンの関数でのみ変更できます。バージョンを公開すると、Lambda は、そのバージョンのユーザー向けに一貫したエクスペリエンスを保つためにコードとほとんどの設定をロックします。関数の設定の詳細については、「Lambda 関数オプションの設定」を参照してください。
Lambda コンソールを使用して、関数のバージョンを作成できます。
新しい関数バージョンを作成するには
Lambda コンソールの [Functions]
(関数) ページを開きます。 -
関数を選択し、[バージョン] をクリックします。
-
バージョンの設定ページで、[新しいバージョンを発行] をクリックします。
-
(オプション) バージョンの説明を入力します。
-
[Publish] (発行) を選択します。
代替手段として、PublishVersion API 操作を使用して関数のバージョンを発行できます。
以下の AWS CLI コマンドは、関数の新しいバージョンを発行します。レスポンスは、バージョン番号およびバージョンがサフィックスとしてついた関数 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": "nodejs18.x", ... }
注記
Lambda は、バージョニングのために単調増加するシーケンス番号を割り当てます。関数を削除して再作成した後でも、Lambda がバージョン番号を再利用することは一切ありません。
バージョンの使用
修飾 ARN または非修飾 ARN を使用して、Lambda 関数を参照できます。
-
修飾 ARN - バージョンのサフィックスが付いた関数 ARN です。以下の例では、
helloworld
関数のバージョン 42 を参照しています。arn:aws:lambda:aws-region:acct-id:function:helloworld:42
-
非修飾 ARN - バージョンのサフィックスが付いていない関数 ARN です。
arn:aws:lambda:aws-region:acct-id:function:helloworld
関連するすべての API オペレーションで、修飾 ARN または非修飾 ARN を使用できます。ただし、非修飾 ARN を使用してエイリアスを作成することはできません。
関数のバージョンを公開しないことにした場合、関数を呼び出すには、修飾 ARN または非修飾 ARN をイベントソースマッピングで使用します。非修飾 ARN を使用して関数を呼び出すと、Lambda によって暗黙的に $LATEST が呼び出されます。
コードが公開されたことがない場合、またはコードが最後に公開されたバージョンから変更された場合にのみ、Lambda によって新しい関数のバージョンが公開されます。変更がない場合、関数のバージョンは最後に公開されたバージョンのままです。
各 Lambda 関数のバージョンの修飾 ARN は一意です。バージョンを公開した後は、ARN または関数コードを変更することはできません。
アクセス許可の付与
リソースベースのポリシーまたはアイデンティティベースのポリシーを使用して、関数へのアクセスを許可できます。このアクセス許可の範囲は、ポリシーの適用先が関数になるか、関数の 1 つのバージョンになるかによって決まります。ポリシーでの関数のリソース名の詳細については、「Lambda アクションのリソースと条件」を参照してください。
関数のエイリアスを使用すると、イベントソースおよび AWS Identity and Access Management (IAM) ポリシーの管理を簡素化することができます。詳細については、「Lambda 関数のエイリアス」を参照してください。