Lambda 関数のバージョンを管理する - AWS Lambda

Lambda 関数のバージョンを管理する

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

注記

新しいバージョンの関数の作成するには、最初に未公開バージョン ($LATEST) を変更する必要があります。これらの変更には、コードの更新や設定の変更が含まれます。$LATEST が以前に公開されたバージョンと同じ場合、変更を $LATEST にデプロイするまで新しいバージョンを作成することはできません。

関数のバージョンを公開すると、そのコード、ランタイム、アーキテクチャ、メモリ、レイヤー、その他のほとんどの設定はイミュータブルになります。つまり、$LATEST から新しいバージョンを公開しないと、これらの設定を変更することはできません。公開済みの関数のバージョンには、次の項目を設定できます。

注記

[自動] モードでランタイム管理コントロールを使用している場合は、関数のバージョンで使用されるランタイムバージョンが自動的に更新されます。[Function update] (関数の更新) または [Manual] (手動) モードを使用している場合、ランタイムバージョンは更新されません。詳細については、「Lambda がランタイムバージョンの更新を管理する方法を理解する」を参照してください。

関数バージョンの作成

関数コードと設定は、未公開バージョンの関数でのみ変更できます。バージョンを公開すると、Lambda は、そのバージョンのユーザー向けに一貫したエクスペリエンスを保つためにコードとほとんどの設定をロックします。

Lambda コンソールを使用して、関数のバージョンを作成できます。

新しい関数バージョンを作成するには
  1. Lambda コンソールの [関数ページ] を開きます。

  2. 関数を選択し、[バージョン] をクリックします。

  3. バージョンの設定ページで、[新しいバージョンを発行] をクリックします。

  4. (オプション) バージョンの説明を入力します。

  5. [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 関数のエイリアスの作成」を参照してください。