メジャーリリース: Rust の書き換え
New Relic Lambda Extension をGo (v2.3.24) からRustに完全に書き直し、パフォーマンスとメモリの安全性を向上し、コールド スタート時間を短縮しました。
新機能
APMモードのサポート: Lambda関数がアプリケーション エンティティとしてNew Relic APMプラットフォームに直接レポートできるようになりました
- 有効にする
NEW_RELIC_APM_LAMBDA_MODE=true - メトリクス、スパン、エラー、イベント、および賭けトレースを完全にサポート
- プラットフォーム ログがAPMメトリクス (
apm.lambda.transaction.*) に変換されました - ディストリビューティッド(分散)トレーシング コンテキストによるタイムアウトと障害に対するエラー イベントの強化
- 詳細については、 APMモードのドキュメントを参照してください。
- 有効にする
リクエストスコープ処理: ペイロード相関とライフサイクル管理の改善
インテリジェントバッファ管理: リクエストコンテキストの前に到着したエージェントペイロードを自動クリーンアップで処理します。
パフォーマンスの改善
- より高速なコールドスタート: 最小限の依存関係とLTOによる最適化されたRustコンパイル
- メモリ使用量の削減: ゼロコストの抽象化によりメモリ フットプリントを削減
- Concurrent Processing : ログ、プラットフォーム メトリクス、エージェント テレメトリーの並列処理
- 接続プーリング: 呼び出し間での HTTP クライアント接続の再利用
セキュリティと信頼性
- メモリの安全性: Rustの所有権システムはメモリ リークとバッファ オーバーフローを防止します
- パニックセーフティ: グローバルパニックハンドラは拡張機能の障害による Lambda のクラッシュを防ぎます
- 型安全性: コンパイル時の保証により、実行時エラーのクラス全体が排除されます。
技術的な変更
- Go
v1.23から Rust 2021 エディションに移行しました - Tokio非同期ランタイム上に構築
- Rust用AWS SDK v1 (AWS-config 1.8、AWS-sdk-secretsmanager 1.88、AWS-sdk-ssm 1.93)
- 懸念事項を明確に分離したモジュラーアーキテクチャー
構成
下位互換性を保つため、既存の環境変数はすべて変更されません。主な変数:
NEW_RELIC_LICENSE_KEY: New Relic ライセンスキーNEW_RELIC_APM_LAMBDA_MODE: APM モードを有効にする (デフォルト: false)NEW_RELIC_EXTENSION_SEND_FUNCTION_LOGS: 関数ログを送信する(デフォルト: false)NEW_RELIC_LAMBDA_LOG_LEVEL: 拡張ログレベルはinfo、debug、warn、error、trace、all
完全な設定の詳細はREADMEに記載されています。
移行に関する注意事項
- ドロップイン交換: 既存ユーザーはコードの変更は不要
- 環境変数: すべての設定は同じままです
- バイナリ互換性: 既存のNew Relicエージェントとの互換性を維持します。
- パフォーマンス: コールドスタートが20~40%高速化し、メモリ使用量が低減します。
[2.3.24] - Go実装(レガシー)
Rust 移行前の最後の Go ベースのバージョン。参照およびレガシー サポートのために維持されます。
Fixed
- Updated Go std lib version to
1.23.12to resolveCVE-2025-47907 - APM Mode: Resolved license key issue with SM/SSM in APM Mode & resolved log prefix
New feature
- Added Log Level Prefix
DEBUGandINFOto the existing prefix[NR_EXT] - APM Mode: Added tags to APM Mode
- APM Mode: Added Lambda ARN to host for APM connect
- APM Mode: Updated backoff duration for
NEW_RELIC_HOST - APM Mode: Refactor APM error event data
- APM Mode: Added ruby support
Notes
- Added option to build
nodejstest Layers for local testing
Fixed
- Updated AWS SDK and Go Version to address Security Vulnerabilities
[CVE-2020-8911, CVE-2020-8912, CVE-2025-0913, CVE-2025-4673]
Notes
- Added
APMconnect retry logic - Added
godebugto resolve AWS Firewall issue - Added
requestIdextraction from logs forNode.jsruntime
Fixed
- Updated Readme for
--enable-license-key-secret
Notes
- APM Fusion Mode: Limited Preview
Notes
Added logic to check the shutdown of
logserverand prevent handler from sending messages to log channelRemove Circle CI workflow
Fixed
- Add
WaitGroupto resolvelog server panicresulting from multiple log server handlers sending logs to closed channel
Notes
Updates go version to resolve
go/stdlibvulnerabilityUpdates example for AI monitoring in response streaming
Updates local testing
newrelic_lambda_wrappercodeUpdates
ubunturunnerUpdates Extension build to avoid error
/lib64/libc.so.6: versionGLIBC_X.YZnot found.Bump axios from
1.7.7to1.8.2in /examples/sam/containerized-lambda/nodejs-sam-example/hello-worldBump golang.org/x/net from
0.33.0to0.38.0
Notes
Added example for New Relic AI monitoring, along with instrumentation of Lambda functions with response streaming
Updated
SAMexamples to include latest layers and packagesUpdated
RubyLambda instrumentation exampleUpdated Readme to include
NEW_RELIC_COLLECT_TRACE_IDenvironment variable which can be used to addtrace-idto the Lambda logs
Fixed issues
Resolved the issue where Extension inaccurately captured timeout durations for Lambda function timeout errors
Updated sleep time to solve intermittent issue with unit test
TestClientSendRetry
New feature
- Add
trace.idto Lambda logs when the Lambda environment variableNEW_RELIC_COLLECT_TRACE_IDis set totrue
Notes
- Add publish script for Extension only Lambda Layer, intended for local testing of Extension