Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:
strategy:
max-parallel: 4
matrix:
node-version: [18.12, 20.19, 22.11]
node-version: [18.12, 20.19, 22.11, 24.11]
steps:
- name: Checkout
uses: actions/checkout@v3
Expand All @@ -67,7 +67,7 @@ jobs:
restore-keys: |
${{ runner.os }}-yarn-
- name: Install NodeGYP
if: matrix.node-version == '20.19' || matrix.node-version == '22.11'
if: matrix.node-version == '20.19' || matrix.node-version == '22.11' || matrix.node-version == '24.11'
run: yarn global add node-gyp

- name: Install dependencies
Expand Down
3 changes: 3 additions & 0 deletions .gitlab/datasources/runtimes.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,6 @@ runtimes:
- name: "node22"
node_version: "22.11"
node_major_version: "22"
- name: "node24"
node_version: "24.11"
node_major_version: "24"
21 changes: 17 additions & 4 deletions .gitlab/scripts/publish_layers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,25 @@
set -e

# Available runtimes: https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html
AWS_CLI_NODE_VERSIONS=("nodejs18.x" "nodejs20.x" "nodejs22.x")
LAYER_PATHS=(".layers/datadog_lambda_node18.12.zip" ".layers/datadog_lambda_node20.19.zip" ".layers/datadog_lambda_node22.11.zip")
LAYERS=("Datadog-Node18-x" "Datadog-Node20-x" "Datadog-Node22-x")
NODE_VERSIONS=("18.12" "20.19" "22.11")
AWS_CLI_NODE_VERSIONS=("nodejs18.x" "nodejs20.x" "nodejs22.x" "nodejs24.x")
LAYER_PATHS=(".layers/datadog_lambda_node18.12.zip" ".layers/datadog_lambda_node20.19.zip" ".layers/datadog_lambda_node22.11.zip" ".layers/datadog_lambda_node24.11.zip")
LAYERS=("Datadog-Node18-x" "Datadog-Node20-x" "Datadog-Node22-x" "Datadog-Node24-x")
NODE_VERSIONS=("18.12" "20.19" "22.11" "24.11")
STAGES=('prod', 'sandbox', 'staging')

# Ensure the argument arrays have the same length
expected_length=${#AWS_CLI_NODE_VERSIONS[@]}
if [[ ${#LAYER_PATHS[@]} -ne $expected_length ]] || \
[[ ${#LAYERS[@]} -ne $expected_length ]] || \
[[ ${#AVAILABLE_LAYERS[@]} -ne $expected_length ]]; then; then
echo "ERROR: arguments AWS_CLI_NODE_VERSIONS, LAYER_PATHS, LAYERS, and NODE_VERSIONS must have the same number of entries."
echo "AWS_CLI_NODE_VERSIONS has ${#AWS_CLI_NODE_VERSIONS[@]} entries."
echo "LAYER_PATHS has ${#LAYER_PATHS[@]} entries."
echo "LAYERS has ${#LAYERS[@]} entries."
echo "NODE_VERSIONS has ${#NODE_VERSIONS[@]} entries."
exit 1
fi

printf "Starting script...\n\n"

publish_layer() {
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
[![Slack](https://chat.datadoghq.com/badge.svg?bg=632CA6)](https://chat.datadoghq.com/)
[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](https://github.com/DataDog/datadog-lambda-js/blob/main/LICENSE)

Datadog Lambda Library for Node.js (18.x, 20.x, and 22.x) enables enhanced Lambda metrics, distributed tracing, and custom metric submission from AWS Lambda functions.
Datadog Lambda Library for Node.js (18.x, 20.x, 22.x, and 24.x) enables enhanced Lambda metrics, distributed tracing, and custom metric submission from AWS Lambda functions.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

todo: deprecate v18.x because it's been deprecated by lambda since september

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should I do that here or maybe split into a different PR?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

different PR is fine


## Installation

Expand Down
293 changes: 293 additions & 0 deletions integration_tests/snapshots/logs/async-metrics_node24.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,293 @@

START
{
"e": XXXX,
"m": "aws.lambda.enhanced.invocations",
"t": [
"region:eu-west-1",
"account_id:XXXX",
"functionname:integration-tests-js-XXXX-async-metrics_node24",
"resource:integration-tests-js-XXXX-async-metrics_node24",
"memorysize:1024",
"cold_start:true",
"datadog_lambda:vX.X.X",
"runtime:nodejs24.x"
],
"v": 1
}
{
"e": XXXX,
"m": "serverless.integration_test.outside_handler",
"t": [
"tagkey:tagvalue",
"eventsource:outside_handler",
"dd_lambda_layer:datadog-nodev24.XX.X"
],
"v": 1
}
XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Processed APIGateway request
{
"e": XXXX,
"m": "serverless.integration_test.execution",
"t": [
"tagkey:tagvalue",
"eventsource:APIGateway",
"dd_lambda_layer:datadog-nodev24.XX.X"
],
"v": 1
}
END Duration: XXXX ms (init: XXXX ms) Memory Used: XXXX MB
START
XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Processed undefined request
{
"e": XXXX,
"m": "aws.lambda.enhanced.invocations",
"t": [
"region:eu-west-1",
"account_id:XXXX",
"functionname:integration-tests-js-XXXX-async-metrics_node24",
"resource:integration-tests-js-XXXX-async-metrics_node24",
"memorysize:1024",
"cold_start:false",
"datadog_lambda:vX.X.X",
"runtime:nodejs24.x"
],
"v": 1
}
{
"e": XXXX,
"m": "serverless.integration_test.execution",
"t": [
"tagkey:tagvalue",
"eventsource:undefined",
"dd_lambda_layer:datadog-nodev24.XX.X"
],
"v": 1
}
END Duration: XXXX ms Memory Used: XXXX MB
START
XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Processed undefined request
{
"e": XXXX,
"m": "aws.lambda.enhanced.invocations",
"t": [
"region:eu-west-1",
"account_id:XXXX",
"functionname:integration-tests-js-XXXX-async-metrics_node24",
"resource:integration-tests-js-XXXX-async-metrics_node24",
"memorysize:1024",
"cold_start:false",
"datadog_lambda:vX.X.X",
"runtime:nodejs24.x"
],
"v": 1
}
{
"e": XXXX,
"m": "serverless.integration_test.execution",
"t": [
"tagkey:tagvalue",
"eventsource:undefined",
"dd_lambda_layer:datadog-nodev24.XX.X"
],
"v": 1
}
END Duration: XXXX ms Memory Used: XXXX MB
START
XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Processed undefined request
{
"e": XXXX,
"m": "aws.lambda.enhanced.invocations",
"t": [
"region:eu-west-1",
"account_id:XXXX",
"functionname:integration-tests-js-XXXX-async-metrics_node24",
"resource:integration-tests-js-XXXX-async-metrics_node24",
"memorysize:1024",
"cold_start:false",
"datadog_lambda:vX.X.X",
"runtime:nodejs24.x"
],
"v": 1
}
{
"e": XXXX,
"m": "serverless.integration_test.execution",
"t": [
"tagkey:tagvalue",
"eventsource:undefined",
"dd_lambda_layer:datadog-nodev24.XX.X"
],
"v": 1
}
END Duration: XXXX ms Memory Used: XXXX MB
START
XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Processed undefined request
{
"e": XXXX,
"m": "aws.lambda.enhanced.invocations",
"t": [
"region:eu-west-1",
"account_id:XXXX",
"functionname:integration-tests-js-XXXX-async-metrics_node24",
"resource:integration-tests-js-XXXX-async-metrics_node24",
"memorysize:1024",
"cold_start:false",
"datadog_lambda:vX.X.X",
"runtime:nodejs24.x"
],
"v": 1
}
{
"e": XXXX,
"m": "serverless.integration_test.execution",
"t": [
"tagkey:tagvalue",
"eventsource:undefined",
"dd_lambda_layer:datadog-nodev24.XX.X"
],
"v": 1
}
END Duration: XXXX ms Memory Used: XXXX MB
START
{
"e": XXXX,
"m": "aws.lambda.enhanced.invocations",
"t": [
"region:eu-west-1",
"account_id:XXXX",
"functionname:integration-tests-js-XXXX-async-metrics_node24",
"resource:integration-tests-js-XXXX-async-metrics_node24",
"memorysize:1024",
"cold_start:false",
"datadog_lambda:vX.X.X",
"runtime:nodejs24.x"
],
"v": 1
}
XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Processed undefined request
{
"e": XXXX,
"m": "serverless.integration_test.execution",
"t": [
"tagkey:tagvalue",
"eventsource:undefined",
"dd_lambda_layer:datadog-nodev24.XX.X"
],
"v": 1
}
END Duration: XXXX ms Memory Used: XXXX MB
START
XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Processed undefined request
{
"e": XXXX,
"m": "aws.lambda.enhanced.invocations",
"t": [
"region:eu-west-1",
"account_id:XXXX",
"functionname:integration-tests-js-XXXX-async-metrics_node24",
"resource:integration-tests-js-XXXX-async-metrics_node24",
"memorysize:1024",
"cold_start:false",
"datadog_lambda:vX.X.X",
"runtime:nodejs24.x"
],
"v": 1
}
{
"e": XXXX,
"m": "serverless.integration_test.execution",
"t": [
"tagkey:tagvalue",
"eventsource:undefined",
"dd_lambda_layer:datadog-nodev24.XX.X"
],
"v": 1
}
END Duration: XXXX ms Memory Used: XXXX MB
START
XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Processed SNS request
{
"e": XXXX,
"m": "aws.lambda.enhanced.invocations",
"t": [
"region:eu-west-1",
"account_id:XXXX",
"functionname:integration-tests-js-XXXX-async-metrics_node24",
"resource:integration-tests-js-XXXX-async-metrics_node24",
"memorysize:1024",
"cold_start:false",
"datadog_lambda:vX.X.X",
"runtime:nodejs24.x"
],
"v": 1
}
{
"e": XXXX,
"m": "serverless.integration_test.records_processed",
"t": [
"tagkey:tagvalue",
"eventsource:SNS",
"dd_lambda_layer:datadog-nodev24.XX.X"
],
"v": 1
}
{
"e": XXXX,
"m": "serverless.integration_test.execution",
"t": [
"tagkey:tagvalue",
"eventsource:SNS",
"dd_lambda_layer:datadog-nodev24.XX.X"
],
"v": 1
}
END Duration: XXXX ms Memory Used: XXXX MB
START
XXXX-XX-XX XX:XX:XX.XXX INFO [dd.trace_id=XXXX dd.span_id=XXXX] Processed SQS request
{
"e": XXXX,
"m": "aws.lambda.enhanced.invocations",
"t": [
"region:eu-west-1",
"account_id:XXXX",
"functionname:integration-tests-js-XXXX-async-metrics_node24",
"resource:integration-tests-js-XXXX-async-metrics_node24",
"memorysize:1024",
"cold_start:false",
"datadog_lambda:vX.X.X",
"runtime:nodejs24.x"
],
"v": 1
}
{
"e": XXXX,
"m": "serverless.integration_test.records_processed",
"t": [
"tagkey:tagvalue",
"eventsource:SQS",
"dd_lambda_layer:datadog-nodev24.XX.X"
],
"v": 1
}
{
"e": XXXX,
"m": "serverless.integration_test.records_processed",
"t": [
"tagkey:tagvalue",
"eventsource:SQS",
"dd_lambda_layer:datadog-nodev24.XX.X"
],
"v": 1
}
{
"e": XXXX,
"m": "serverless.integration_test.execution",
"t": [
"tagkey:tagvalue",
"eventsource:SQS",
"dd_lambda_layer:datadog-nodev24.XX.X"
],
"v": 1
}
END Duration: XXXX ms Memory Used: XXXX MB
Loading
Loading