Lambda関数の異なるバージョンを管理する方法
ラムダ関数はAWSのコンピューティングサービスに非常に役立つ入り口です。基本的にクラウド内の関数であるため、異なるバージョンの追跡や更新の展開は、それらを効果的に扱うために重要です。
最新のトラック 最新のアップデート
Lambda関数に変更を加えると、その変更は自動的に$LATESTと呼ばれるバージョンに反映されます。これは最新の更新を追跡し、ほとんどのLambda関数のデフォルトバージョンです。Lambda編集ページ、Cloud9 IDE、CLIからのZIPアップロードの変更はすべてこのバージョンを更新します。
このため、最新のバージョンは本番環境で使用すべきではありません。新機能をテストするための機能の更新は、あなたの本番トラフィックに影響を与えるからです。さらに、最新のバージョンを使用している場合、CodeDeployを使用して時間の経過とともに更新を展開する簡単な方法はありません。
代わりに、各リリースの新しいバージョンを作成し、それを指す「production」エイリアスを作成することを推奨します。$LATESTは開発に使用でき、それ自体に指向するエイリアスも持つことができます。
新しいバージョンを追加する(そしてそのバージョンへのトラフィックをシフトする)
バージョンを扱うのは非常に簡単です。Lambda管理コンソールから、あなたの関数を選択し、「バージョン:」のドロップダウンをクリックします。これにより、バージョンを切り替えたり、現在使用中のバージョンを表示したりできます。
新しいバージョンを公開するには、最新バージョンに切り替え、「アクション」ドロップダウンから「新しいバージョンを公開」をクリックする必要があります。
新しいバージョンは、ほとんどのソフトウェアリリースで使用される標準のメジャー.マイナー.パッチ形式を使用する方法がないため、代わりに古典的にインクリメントされた整数で示されます。この形式が本当に必要な場合は、SAMデプロイメントとともにCodePipelineの使用をお勧めし、GitでLambdaのバージョンを追跡してください。
この新しいバージョンは、API Gatewayなどの他のサービスで使用できます。ただし、関数自体が更新されるたびに、Lambda関数を使用しているすべてのサービスを更新しなければならないというのは避けたいことです。その代わりに、特定のバージョン番号を指すエイリアスを作成し、API Gatewayのエンドポイントとして設定するべきです。これにより、新しいバージョンを公開するたびに、エイリアスを更新するだけで全てを切り替えることができます。
同じ「アクション」メニューからエイリアスを作成できます。名前を「プロダクション」と付け、指すバージョンを選択します。
エイリアスは、トラフィックを新しいバージョンに徐々に移行させることもできます。手動で設定することも可能ですが、主にCodeDeployのデプロイメントに使用されます。ここでは、関数の新しいバージョンを徐々に展開でき、例えば、5分ごとに10%などの割合で行います。この方法により、早期にエラーをキャッチし、全員に影響を与える前にリリースをロールバックすることができます。
SAMデプロイメントは自動的に新しいバージョンを追加します
手動でバージョンを作成することは便利ですが、多くの関数を管理している場合は、代わりにSAMデプロイメントを使用することになるでしょう。SAMテンプレートを使用してデプロイされたLambda関数は、新しいバージョンを自動的に追加し(および$LATESTを更新します)。
Gitによるバージョン管理とAWSのCodePipeline CI/CDサービスを組み合わせることで、Lambda関数のバージョン管理がずっと簡単になります。ソースコントロールのリリースブランチに変更がプッシュされると、CodePipelineが自動的にトリガーされ、関数が更新されます。コンパイルが必要な言語(TypeScriptの場合はトランスパイル)で作業している場合は、その段階を処理するためにCodeBuildに関数コードを送信することもできます。
SAMのデプロイメントはCloudFormationの拡張であるため、SAMを使用して行われたすべてのデプロイメントは新しいCloudFormationスタックを作成します。更新がプッシュされるたびに、CloudFormationはそれが新しいスタックではなくスタックの更新であることを認識し、現在の関数のバージョンを更新されたものに置き換えます。



