@wpkyoto/nodejs-lambda-version の廃止について

このたび、@wpkyoto/nodejs-lambda-version ライブラリを正式に廃止することを決定しました。AWS CDK v2 が本ライブラリの機能を上回るネイティブサポートを提供するようになったためです。

廃止に至った経緯

2020年に本ライブラリを開発した当時、AWS CDK v1 には Lambda 関数の自動バージョニング機能がありませんでした。そこで、ソースコードのハッシュ値に基づいて Lambda バージョンを自動生成するユーティリティを構築したわけです。

しかし、CDK のエコシステムはその後大きく進化しました。AWS CDK v2 では、Lambda 関数に対して currentVersion プロパティがネイティブで提供されています。バンドルされたコード、依存関係、設定の変更を検出する包括的なハッシュ計算が実装され、Lambda レイヤーのバージョン変更も自動的に検出されるようになりました。不要なバージョン作成を防ぐためのメタデータ変更の処理も改善されており、AWS CDK チームによる公式サポートと継続的なメンテナンスも受けられます。

一方、本ライブラリはエントリーファイルのみをハッシュ化するため、依存関係の変更や設定の更新を検出できないという制限があります。公式 CDK がより優れた機能を提供している現状では、別途ユーティリティを維持する意義がなくなったといえるでしょう。

移行方法

移行作業は簡単で、最小限のコード変更で対応可能です。

従来の実装では以下のように記述していました。

import { NodejsLambdaVersion } from '@wpkyoto/nodejs-lambda-version';

const lambdaVersion = new NodejsLambdaVersion(this, 'MyFunction', {
  entry: 'lambda/handler.ts',
});

const version = lambdaVersion.version;

新しい実装では、AWS CDK v2 のネイティブ機能を使用します。

import { NodejsFunction } from 'aws-cdk-lib/aws-lambda-nodejs';

const fn = new NodejsFunction(this, 'MyFunction', {
  entry: 'lambda/handler.ts',
});

const version = fn.currentVersion;

今後のスケジュール

本ライブラリへの新機能追加は即時停止となります。README には廃止告知と移行ガイドを追記済みです。今後、バグ修正やセキュリティアップデートの提供は行いません。

推奨する対応

すべてのユーザーに対して、以下の対応を強く推奨します。まず、AWS CDK v2 への移行がまだの場合は早急に実施してください。本ライブラリの代わりにネイティブの currentVersion プロパティを使用し、依存関係から @wpkyoto/nodejs-lambda-version を削除することで移行が完了します。

参考リソース

移行作業に役立つ公式ドキュメントとして、AWS CDK v2 Lambda DocumentationAWS CDK v2 Migration GuideNodejsFunction Documentation をご参照ください。

謝辞

長年にわたり本ライブラリをご利用いただいた皆様に感謝申し上げます。CDK エコシステムに存在していたギャップを埋める役割を果たすことができました。AWS が公式にネイティブサポートを提供するようになった今、その役目を公式実装に引き継ぐ時が来たと考えています。

Hidetaka Okamoto profile photo

Hidetaka Okamoto

ビジネスデベロップメント

DigitalCubeのBizDev。EC ASPの開発やStripeのDeveloper Advocateとしての経験を元に、SaaSやECサイトの収益を増やすための方法・生成AIを使った効率化や新しい事業モデルの模索などに挑戦する。

関連記事