メニュー
AWS Lambda
開発者ガイド

AWS Lambda バージョニングの紹介

このセクションでは、Lambda 関数を作成し、そのバージョンを発行する方法を説明します。また、発行済みバージョンがある場合に、関数コードおよび設定情報を更新する方法も説明します。また、特定の関数バージョンまたは Lambda 関数全体 (すべてのバージョンおよび関連エイリアスを含む) を削除する方法についても説明します。

Lambda 関数 ($LATEST バージョン) の作成

Lambda 関数を作成するとき、バージョンは 1 つです。これは $LATEST バージョンです。

Amazon リソースネーム (ARN) を使用してこの関数を参照できます。この初期バージョンに関連付けられる ARN は 2 つです。

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

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

    この ARN は関連するすべてのオペレーションで使用できますが、これを使用してエイリアスを作成することはできません。詳細については、「AWS Lambda エイリアスの紹介」を参照してください。

    非修飾 ARN には、独自のリソースポリシーがあります。

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

注記

複数バージョンの発行を選択しないかぎり、$LATEST バージョンが存在する唯一の Lambda 関数バージョンです。この $LATEST バージョンを呼び出すには、修飾 ARN と非修飾 ARN のいずれもイベントソースマッピングで使用できます。

以下に、CreateFunction API 呼び出しのレスポンスの例を示します。

Copy
{ "CodeSize": 287, "Description": "test function." "FunctionArn": "arn:aws:lambda:aws-region:acct-id:function:helloworld", "FunctionName": "helloworld", "Handler": "helloworld.handler", "LastModified": "2015-07-16T00:34:31.322+0000", "MemorySize": 128, "Role": "arn:aws:iam::acct-id:role/lambda_basic_execution", "Runtime": "nodejs6.10", "Timeout": 3, "CodeSHA256": "OjRFuuHKizEE8tHFIMsI+iHR6BPAfJ5S0rW31Mh6jKg=", "Version": "$LATEST" }

詳細については、「CreateFunction」を参照してください。

このレスポンスでは、AWS Lambda は新しく作成された関数の非修飾 ARN と、そのバージョンである $LATEST を返します。また、応答には、Version ステータスが $LATEST であることも示されます。CodeSha256 はアップロードしたデプロイパッケージのチェックサムです。

Lambda 関数バージョンの発行

バージョンを発行すると、AWS Lambda は $LATEST バージョンに Lambda 関数コード (および設定) のスナップショットのコピーを作成します。発行済みバージョンは変更不可能です。つまり、コーディングや設定情報を変更することはできません。新しいバージョンには、次に示すようにバージョン番号のサフィックスを含む一意の ARN があります。

以下のいずれかの方法でバージョンを発行できます。

  • 明示的にバージョンを発行 - PublishVersion API を使用して明示的にバージョンを発行します。詳細については、「PublishVersion」を参照してください。このアクションでは、$LATEST バージョンのコードと設定を使用して新しいバージョンを作成します。

  • Lambda 関数の作成/発行時にバージョンを発行 - CreateFunction または UpdateFunctionCode リクエストを使用し、リクエストにオプションの publish パラメータを追加することで、バージョンを発行することもできます。

    • 新しい Lambda 関数 ($LATEST バージョン) を作成する CreateFunction リクエストで publish パラメータを指定すると、スナップショットを作成してバージョン 1 として割り当て、ただちに発行します。CreateFunction の詳細については、「CreateFunction」を参照してください。

    • $LATEST バージョンのコードを更新する UpdateFunctionCode リクエストで publish パラメータを指定すると、$LATEST からバージョンを発行します。UpdateFunctionCode の詳細については、「UpdateFunctionCode」を参照してください。

    Lambda 関数の作成時に publish パラメータを指定する場合、応答として AWS Lambda が返す関数設定情報に新たに発行されたバージョンの番号が以下のように表示されます (この例では、バージョンは 1 です)。

    Copy
    { "CodeSize": 287, "Description": "test function." "FunctionArn": "arn:aws:lambda:aws-region:acct-id:function:helloworld", "FunctionName": "helloworld", "Handler": "helloworld.handler", "LastModified": "2015-07-16T00:34:31.322+0000", "MemorySize": 128, "Role": "arn:aws:iam::acct-id:role/lambda_basic_execution", "Runtime": "nodejs6.10", "Timeout": 3, "CodeSHA256": "OjRFuuHKizEE8tHFIMsI+iHR6BPAfJ5S0rW31Mh6jKg=", "Version": "1" }

注記

Lambda は、$LATEST バージョンと比較して、コードがまだ発行されていない場合、またはコードが変更されている場合のみ、新しいバージョンを発行します。変更がない場合は、$LATEST 発行済みバージョンが返されます。

特に複数の開発者が同じ Lambda 関数の開発に関わっている場合は、Lambda 関数の作成または Lambda 関数コードの更新と同時にバージョンを発行することをお勧めします。リクエストで publish パラメータを使用することでこれを実現できます。1 つのプロジェクトで作業する開発者が複数いる場合、開発者 A が Lambda 関数 ($LATEST バージョン) を作成し、開発者 A がそのバージョンを発行する前に開発者 B が $LATEST バージョンに関連付けられたコード (デプロイパッケージ) を更新するといったことが起こり得ます。この場合、開発者 A がアップロードした元のコードが失われます。両方の開発者が publish パラメータを追加することで、ここに説明した競合状態を防止できます。

注記

発行済みバージョンは変更不可能です。つまり、バージョンに関連付けられたコードや設定情報を変更することはできません。

Lambda 関数の各バージョンは Amazon リソースネーム (ARN) を持つ一意のリソースです。次の例は、helloworld Lambda 関数のバージョン番号 1 の ARN を示します。

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

注記

これはバージョン番号がサフィックスである修飾 ARN です。発行済みバージョンは修飾 ARN のみを持ちます。

バージョンは複数発行できます。バージョンを発行するたびに、AWS Lambda は $LATEST バージョン (コードおよび設定情報) をコピーし、新しいバージョンを作成します。追加バージョンを発行すると、AWS Lambda は、関数が削除され再作成されても、一定間隔で増加するシーケンス番号をバージョニングに割り当てます。バージョン番号は、関数が削除されて再作成されたとしても、再利用されることはありません。したがって、そのバージョンのユーザーは、そのバージョンの決して変更されていない実行可能ファイルに依存できるようになります (ただしそのバージョンが削除された場合を除く)。修飾子を再利用する場合は、バージョンとともにエイリアスを使用します。エイリアスは削除して、同じ名前で再作成できます。

Lambda 関数コードおよび設定の更新

AWS Lambda は最新の関数コードを $LATEST バージョンに維持します。関数コードを更新すると、AWS Lambda は Lambda 関数の $LATEST バージョンのコードを置き換えます。詳細については、「UpdateFunctionCode」を参照してください。

発行済みバージョンは変更不可能です。発行済みバージョンに関連付けられたコードや設定情報は更新できません。

Lambda 関数コードを更新する際、新しいバージョンの発行に関する次のオプションがあります。

  • 同じ更新コードリクエストでバージョンを発行する - UpdateFunctionCode API を使用します (推奨)。

  • まずコードを更新し、次に明示的にバージョンを発行する - PublishVersion API を使用します。

Lambda 関数の $LATEST バージョンのコードおよび設定情報 (記述、メモリサイズ、実行タイムアウトなど) は更新できます。ただし、発行済みバージョンは変更不可能です。つまり、コーディングや設定情報を変更することはできません。

Lambda 関数および特定のバージョンの削除

バージョニングでは、以下を選択できます。

  • 特定のバージョンを削除する - DeleteFunction リクエストで削除するバージョンを指定して、Lambda 関数のバージョンを削除できます。このバージョンに依存するエイリアスがある場合、リクエストは失敗します。AWS Lambda は、このバージョンに依存するエイリアスがない場合のみ、バージョンを削除します。エイリアスの詳細については、「AWS Lambda エイリアスの紹介」を参照してください。

  • Lambda 関数全体 (そのバージョンとエイリアスのすべて) を削除する - Lambda 関数とそのすべてのバージョンを削除するには、DeleteFunction リクエストでいずれのバージョンも指定しないでください。こうすることで、すべてのバージョンおよびエイリアスを含むその関数全体を削除します。

重要

関数の特定のバージョンを削除できますが、$LATEST は削除できません。

AWS Lambda エイリアスの紹介

AWS マネジメントコンソール、AWS CLI、または Lambda API を使用したバージョニングの管理