Lambda 関数のバージョンを管理する
バージョンを使用して、関数のデプロイを管理できます。たとえば、安定した実稼働バージョンのユーザーに影響を与えることなく、ベータテスト用の新しいバージョンの関数を公開できます。Lambda は、関数を公開するたびに新しいバージョンの関数を作成します。新しいバージョンは、関数の未公開バージョンのコピーです。未公開バージョンの名前は $LATEST
です。
注記
新しいバージョンの関数の作成するには、最初に未公開バージョン ($LATEST
) を変更する必要があります。これらの変更には、コードの更新や設定の変更が含まれます。$LATEST
が以前に公開されたバージョンと同じ場合、変更を $LATEST
にデプロイするまで新しいバージョンを作成することはできません。
関数のバージョンを公開すると、そのコード、ランタイム、アーキテクチャ、メモリ、レイヤー、その他のほとんどの設定はイミュータブルになります。つまり、$LATEST
から新しいバージョンを公開しないと、これらの設定を変更することはできません。公開済みの関数のバージョンには、次の項目を設定できます。
注記
[自動] モードでランタイム管理コントロールを使用している場合は、関数のバージョンで使用されるランタイムバージョンが自動的に更新されます。[Function update] (関数の更新) または [Manual] (手動) モードを使用している場合、ランタイムバージョンは更新されません。詳細については、「Lambda がランタイムバージョンの更新を管理する方法を理解する」を参照してください。
関数バージョンの作成
関数コードと設定は、未公開バージョンの関数でのみ変更できます。バージョンを公開すると、Lambda は、そのバージョンのユーザー向けに一貫したエクスペリエンスを保つためにコードとほとんどの設定をロックします。
Lambda コンソールを使用して、関数のバージョンを作成できます。
新しい関数バージョンを作成するには
Lambda コンソールの [関数ページ]
を開きます。 -
関数を選択し、[バージョン] をクリックします。
-
バージョンの設定ページで、[新しいバージョンを発行] をクリックします。
-
(オプション) バージョンの説明を入力します。
-
[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": "nodejs20.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 つのバージョンになるかによって決まります。ポリシーでの関数のリソース名の詳細については、「ポリシーのリソースセクションと条件セクションの微調整」を参照してください。
関数のエイリアスを使用すると、イベントソースおよび AWS Identity and Access Management (IAM) ポリシーの管理を簡素化することができます。詳細については、「Lambda 関数のエイリアスの作成」を参照してください。