AWS SDK for JS v3 では TCP 接続の再利用がデフォルトで有効になり、Lambda 関数の環境変数での AWS_NODEJS_CONNECTION_REUSE_ENABLED=1 の設定が不要となりました

AWS SDK for JS v3 では TCP 接続の再利用がデフォルトで有効になり、Lambda 関数の環境変数での AWS_NODEJS_CONNECTION_REUSE_ENABLED=1 の設定が不要となりました

Clock Icon2024.06.28

こんにちは、製造ビジネステクノロジー部の若槻です。

はじめに

AWS Lambda の Node.js 18 以降のランタイムに含まれる AWS SDK for JavaScript のバージョンは v3 となります。

この AWS SDK for JavaScript v3 ではTCP 接続の再利用がデフォルトで有効になり、Lambda 関数の環境変数での AWS_NODEJS_CONNECTION_REUSE_ENABLED=1 の設定が不要となりました。
https://aws.amazon.com/jp/blogs/compute/node-js-18-x-runtime-now-available-in-aws-lambda/

aws_lambda_nodejs モジュールでも遅ればせながら対応された

前項までが本題で、本項からは補足です。

aws-cdk-lib.aws_lambda_nodejs モジュールでは今までは環境変数 AWS_NODEJS_CONNECTION_REUSE_ENABLED=1 を設定するフラグである awsSdkConnectionReuse プロパティがデフォルトで有効でしたが、SDK v3 で TCP 接続の再利用がデフォルトで有効になったこと(正確には Lambda Node16 ランタイムが廃止されたこと)に伴い、awsSdkConnectionReuse プロパティ自体が廃止されました。

ただしそのアップデートが行われたのは v2.143.0(2024/5/24)と割と最近のリリースになります。
https://github.com/aws/aws-cdk/releases/tag/v2.143.0

対応する Issue は下記となります。
https://github.com/aws/aws-cdk/issues/29497

前述のリリースノートにはデフォルトで AWS_NODEJS_CONNECTION_REUSE_ENABLED を設定しなくなった旨が記載されていなかったのですが、CDK スナップショットテストで急に Lambda 関数の環境変数の差分が出るようになったためこのアップデートがあったことに気が付きました。

下記は GitHub Actiosn による CI 実行で CDK スナップショットに意図しない差分が出ていたためテストが失敗している様子です。

よって、aws_lambda_nodejs モジュールを使っている場合は AWS CDK モジュールを v2.143.0 以降にアップデートする際にスナップショットの更新を忘れずに行うようにしましょう。

おわりに

AWS SDK for JS v3 では TCP 接続の再利用がデフォルトで有効になり、Lambda 関数の環境変数でのAWS_NODEJS_CONNECTION_REUSE_ENABLED=1の設定が不要となった件のご紹介でした。

今までは必須の設定としておまじない的に AWS_NODEJS_CONNECTION_REUSE_ENABLED=1 を設定していたと思うので、それがデフォルトになったのは嬉しいですね。

以上

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.