Traffine I/O

日本語

2022-09-13

AWS Lambdaのバージョニングとエイリアス

AWS Lambdaのバージョニング

AWS Lambda関数が時間とともに進化するにつれ、コードの異なるバージョンを管理することが重要になります。AWS Lambdaには、Lambda関数コードの異なるイテレーションを管理し追跡するためのバージョニング機能が用意されています。各バージョンは、関数コードとその設定(環境変数やリソース割り当てなど)のスナップショットです。

Lambda関数を作成する場合、またはそのコードを更新する場合は、$LATESTバージョンで作業しています。現在の関数の状態をキャプチャするために、新しいバージョンを公開することができます。公開されたバージョンは不変であり、そのコードや設定を変更することはできません。

バージョンの作成と管理

Lambda関数の新しいバージョンを作成するには、次の手順に従ってください。

  1. AWS Lambdaコンソールに移動
  2. バージョンを作成する関数を選択
  3. アクションドロップダウンから新しいバージョンを公開を選択
  4. オプションの説明を入力し、公開をクリック

これにより、Lambdaコンソールのバージョンタブで公開された関数のバージョンを表示および管理できるようになります。

Lambda関数の新しいバージョンを公開すると、AWSは自動的に一意のバージョン番号を割り当てます。Lambda関数のバージョン履歴を表示するには、次の手順に従ってください。

  1. AWS Lambdaコンソールに移動
  2. バージョン履歴を表示したい関数を選択
  3. バージョンタブをクリックして、公開されたバージョンとその詳細の一覧を表示

Lambda関数の特定のバージョンを削除するには、次の手順を実行してください。

  1. Lambdaコンソールで、バージョンタブに移動
  2. 削除するバージョンを探す
  3. バージョン番号の横にあるチェックボックスを選択
  4. アクションドロップダウンから削除をクリック

$LATESTバージョンは削除できないことを覚えておいてください。

AWS CLIを使用したバージョン管理

AWS Lambdaコンソールだけでなく、AWSコマンドラインインターフェイス(CLI)を使用してLambda関数のバージョンを管理することもできます。これにより、バージョンの作成、更新、削除をプログラムで行い、既存のワークフローに簡単に自動化および統合することができます。

AWS CLIをインストールおよび設定するには、公式のAWS CLIドキュメントの手順に従ってください。

https://aws.amazon.com/cli/

AWS CLIを使用してLambda関数の新しいバージョンを公開するには、次のコマンドを実行してください。

bash
$ aws lambda publish-version --function-name YourFunctionName --description "Your version description"

このコマンドは、指定したLambda関数の新しいバージョンを作成し、新しいバージョンの詳細を含むJSONオブジェクトを返します。

Lambda関数の全てのバージョンをリストするには、list-versions-by-functionコマンドを使用します。

bash
$ aws lambda list-versions-by-function --function-name YourFunctionName

このコマンドは、指定したLambda関数に関連する全ての公開されたバージョンおよび$LATESTバージョンの詳細を含むJSONオブジェクトを返します。

AWS CLIを使用してLambda関数の特定のバージョンを削除するには、次のコマンドを実行します。

bash
$ aws lambda delete-function --function-name YourFunctionName:YourVersionNumber

AWS Lambdaのエイリアス

AWS Lambdaのエイリアスとは、特定の関数バージョンへのポインターです。バージョン番号ではなく、"prod"や"dev"などの人間が読み取り可能な識別子を使用して、特定のバージョンを参照できます。これにより、関数呼び出しが簡素化され、展開中にバージョン間をシームレスに切り替えることができます。

エイリアスを使用すると、エイリアスが指す関数のバージョンを更新することなく、関数を呼び出すクライアントコードを変更することなく簡単に更新できます。これは、ダウンタイムなしで新しいバージョンの関数を本番環境に展開する必要がある場合に特に役立ちます。

エイリアスの作成と管理

Lambda関数の新しいエイリアスを作成するには、次の手順に従ってください。

  1. AWS Lambdaコンソールに移動
  2. エイリアスを作成する関数を選択
  3. アクションドロップダウンからエイリアスの作成を選択
  4. エイリアス名、説明、指すべきバージョンを入力し、作成をクリック

これにより、Lambdaコンソールのエイリアスタブでエイリアスを表示および管理できるようになります。

既存のエイリアスを新しいバージョンを指すように更新するには、次の手順に従ってください。

  1. Lambdaコンソールで、エイリアスタブに移動
  2. 更新するエイリアスを探す
  3. エイリアス名をクリックしてエイリアスの構成ページを開く
  4. エイリアス構成セクションの下で、編集をクリック
  5. エイリアスが指すバージョンを更新し、保存をクリック

エイリアスを削除するには、次の手順に従ってください。

  1. Lambdaコンソールで、エイリアスタブに移動
  2. 削除するエイリアスを探す
  3. エイリアス名の横にあるチェックボックスを選択
  4. アクションドロップダウンから削除をクリック

AWS CLIを使用したエイリアスの管理

AWS Lambdaコンソールを使用するだけでなく、AWS CLIを使用してLambda関数のエイリアスを管理することもできます。これにより、エイリアスの作成、更新、削除をプログラムで行い、既存のワークフローに簡単に自動化および統合することができます。

AWS CLIを使用してLambda関数の新しいエイリアスを作成するには、次のコマンドを実行してください。

bash
$ aws lambda create-alias \
  --function-name YourFunctionName \
  --name YourAliasName \
  --function-version YourVersionNumber \
  --description "Your alias description"

このコマンドは、指定したLambda関数の新しいエイリアスを作成し、新しいエイリアスの詳細を含むJSONオブジェクトを返します。

既存のエイリアスを新しいバージョンを指すように更新するには、update-aliasコマンドを使用します。

bash
aws lambda update-alias --function-name YourFunctionName --name YourAliasName --function-version NewVersionNumber

このコマンドは、指定したエイリアスを新しいバージョンに更新します。

Lambda関数の全てのエイリアスをリストするには、list-aliasesコマンドを使用します。

bash
$ aws lambda list-aliases --function-name YourFunctionName

このコマンドは、指定したLambda関数に関連する全てのエイリアスの詳細を含むJSONオブジェクトを返します。

AWS CLIを使用してエイリアスを削除するには、次のコマンドを実行してください。

bash
$ aws lambda delete-alias --function-name YourFunctionName --name YourAliasName

Lambdaエイリアスのユースケース

Lambdaエイリアスは、次のような様々なシナリオで役立ちます。

  • デプロイの簡素化
    Lambda関数の新しいバージョンをデプロイする際に、エイリアスを更新して、関数を呼び出すクライアントコードを更新する必要がありません。

  • 環境の分離
    開発、ステージング、本番など、異なる環境用に別々のエイリアスを作成できます。これにより、次の環境に昇格する前に、関数の新しいバージョンを分離された環境でテストできます。

  • A/Bテスト
    エイリアスを使用することで、関数の新しいバージョンに一部のトラフィックをルーティングして、全てのユーザーに展開する前にパフォーマンスや機能性をテストできます。

  • ロールバック
    新しいバージョンを展開した後に問題が発生した場合、エイリアスを以前のバージョンにすばやく戻すことができます。これにより、ダウンタイムやユーザーへの影響を最小限に抑えることができます。

参考

https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html
https://acloudguru.com/blog/engineering/aws-lambda-versioning-and-aliases
https://medium.com/@dalibor.plavcic/aws-lambda-versions-and-aliases-5f7a63a75afa

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!