Skip to content

Commit 5fbff6d

Browse files
Nodejs slim layers (#384)
* publish slim layers
1 parent b59c2a8 commit 5fbff6d

File tree

2 files changed

+67
-23
lines changed

2 files changed

+67
-23
lines changed

libBuild.sh

Lines changed: 43 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -207,12 +207,48 @@ function hash_file() {
207207
fi
208208
}
209209

210+
function publish_public_layer {
211+
layer_name=$1
212+
bucket_name=$2
213+
s3_key=$3
214+
description=$4
215+
arch_flag=$5
216+
region=$6
217+
runtime_name=$7
218+
compat_list=("${@:8}")
219+
220+
221+
layer_version=$(aws lambda publish-layer-version \
222+
--layer-name ${layer_name} \
223+
--content "S3Bucket=${bucket_name},S3Key=${s3_key}" \
224+
--description "${description}"\
225+
--license-info "Apache-2.0" $arch_flag \
226+
--compatible-runtimes ${compat_list[*]} \
227+
--region "$region" \
228+
--output text \
229+
--query Version)
230+
echo "Published ${runtime_name} layer version ${layer_version} to ${region}"
231+
232+
echo "Setting public permissions for ${runtime_name} layer version ${layer_version} in ${region}"
233+
aws lambda add-layer-version-permission \
234+
--layer-name ${layer_name} \
235+
--version-number "$layer_version" \
236+
--statement-id public \
237+
--action lambda:GetLayerVersion \
238+
--principal "*" \
239+
--region "$region"
240+
echo "Public permissions set for ${runtime_name} layer version ${layer_version} in region ${region}"
241+
242+
}
243+
244+
210245
function publish_layer {
211246
layer_archive=$1
212247
region=$2
213248
runtime_name=$3
214249
arch=$4
215250
newrelic_agent_version=${5:-"none"}
251+
slim=${6:-""}
216252
agent_name=$( agent_name_str $runtime_name )
217253
layer_name=$( layer_name_str $runtime_name $arch )
218254

@@ -256,26 +292,13 @@ function publish_layer {
256292
fi
257293

258294
echo "Publishing ${runtime_name} layer to ${region}"
259-
layer_version=$(aws lambda publish-layer-version \
260-
--layer-name ${layer_name} \
261-
--content "S3Bucket=${bucket_name},S3Key=${s3_key}" \
262-
--description "${description}"\
263-
--license-info "Apache-2.0" $arch_flag \
264-
--compatible-runtimes ${compat_list[*]} \
265-
--region "$region" \
266-
--output text \
267-
--query Version)
268-
echo "Published ${runtime_name} layer version ${layer_version} to ${region}"
269-
270-
echo "Setting public permissions for ${runtime_name} layer version ${layer_version} in ${region}"
271-
aws lambda add-layer-version-permission \
272-
--layer-name ${layer_name} \
273-
--version-number "$layer_version" \
274-
--statement-id public \
275-
--action lambda:GetLayerVersion \
276-
--principal "*" \
277-
--region "$region"
278-
echo "Public permissions set for ${runtime_name} layer version ${layer_version} in region ${region}"
295+
if [[ $slim == "slim" ]]; then
296+
echo "Publishing ${runtime_name} slim layer to ${region}"
297+
layer_name="${layer_name}-slim"
298+
base_description="New Relic slim Layer without opentelemetry for ${runtime_name} (${arch})"
299+
description="${base_description}${extension_info}${agent_info}"
300+
fi
301+
publish_public_layer $layer_name $bucket_name $s3_key "$description" "$arch_flag" "$region" "$runtime_name" "${compat_list[@]}"
279302

280303
}
281304

nodejs/publish-layers.sh

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,19 @@ EOM
2323
function build_wrapper {
2424
node_version=$1
2525
arch=$2
26+
slim=${3:-""}
2627
echo "Building new relic layer for nodejs${node_version}.x (${arch})"
2728
ZIP=$DIST_DIR/nodejs${node_version}x.${arch}.zip
29+
if [ "$slim" == "slim" ]; then
30+
ZIP=$DIST_DIR/nodejs${node_version}x.${arch}.slim.zip
31+
fi
2832
rm -rf $BUILD_DIR $ZIP
2933
mkdir -p $DIST_DIR
30-
npm install --prefix $BUILD_DIR newrelic@latest
34+
npm install --install-strategy=nested --prefix $BUILD_DIR newrelic@latest
35+
if [ "$slim" == "slim" ]; then
36+
echo "Slim build, removing opentelemetry dependencies"
37+
rm -rf $BUILD_DIR/node_modules/newrelic/node_modules/@opentelemetry
38+
fi
3139
NEWRELIC_AGENT_VERSION=$(npm list newrelic --prefix $BUILD_DIR | grep newrelic@ | awk -F '@' '{print $2}')
3240
touch $DIST_DIR/nr-env
3341
echo "NEWRELIC_AGENT_VERSION=$NEWRELIC_AGENT_VERSION" > $DIST_DIR/nr-env
@@ -46,40 +54,53 @@ function build_wrapper {
4654
function publish_wrapper {
4755
node_version=$1
4856
arch=$2
57+
slim=${3:-""}
4958
ZIP=$DIST_DIR/nodejs${node_version}x.${arch}.zip
59+
if [ "$slim" == "slim" ]; then
60+
echo "Publishing slim build for nodejs${node_version}.x (${arch})"
61+
ZIP=$DIST_DIR/nodejs${node_version}x.${arch}.slim.zip
62+
fi
5063
source $DIST_DIR/nr-env
5164
if [ ! -f $ZIP ]; then
5265
echo "Package not found: ${ZIP}"
5366
exit 1
5467
fi
5568

5669
for region in "${REGIONS[@]}"; do
57-
publish_layer $ZIP $region nodejs${node_version}.x ${arch} $NEWRELIC_AGENT_VERSION
70+
publish_layer $ZIP $region nodejs${node_version}.x ${arch} $NEWRELIC_AGENT_VERSION $slim
5871
done
5972
}
6073

6174
case "$1" in
6275
"build_wrapper")
63-
build_wrapper $2 $3
76+
build_wrapper $2 $3 $4
6477
;;
6578
"publish_wrapper")
6679
publish_wrapper $2 $3
6780
;;
6881
"build-20")
6982
build_wrapper 20 arm64
7083
build_wrapper 20 x86_64
84+
build_wrapper 20 arm64 slim
85+
build_wrapper 20 x86_64 slim
7186
;;
7287
"publish-20")
7388
publish_wrapper 20 arm64
7489
publish_wrapper 20 x86_64
90+
publish_wrapper 20 arm64 slim
91+
publish_wrapper 20 x86_64 slim
7592
;;
7693
"build-22")
7794
build_wrapper 22 arm64
7895
build_wrapper 22 x86_64
96+
build_wrapper 22 arm64 slim
97+
build_wrapper 22 x86_64 slim
7998
;;
8099
"publish-22")
81100
publish_wrapper 22 arm64
82101
publish_wrapper 22 x86_64
102+
publish_wrapper 22 arm64 slim
103+
publish_wrapper 22 x86_64 slim
83104
;;
84105
"build-publish-20-ecr-image")
85106
build_wrapper 20 arm64

0 commit comments

Comments
 (0)