Skip to content

DotNet Lambda Layer Performance Test #1

DotNet Lambda Layer Performance Test

DotNet Lambda Layer Performance Test #1

## Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
## SPDX-License-Identifier: Apache-2.0
name: DotNet Lambda Layer Performance Test
on:
workflow_dispatch:
inputs:
test_runs:
description: 'Number of test runs to perform'
required: true
default: 20
type: number
dotnet-version:
description: 'dotnet version to use'
required: true
default: '8.0.x'
type: string
jobs:
dotnet-lambda-layer-performance-test:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
env:
NUM_TEST_RUNS: ${{ github.event.inputs.test_runs }}
steps:
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::${{ secrets.APPLICATION_SIGNALS_E2E_TEST_ACCOUNT_ID }}:role/${{ secrets.APPLICATION_SIGNALS_E2E_TEST_ROLE_NAME }}
aws-region: us-east-1
- name: Checkout aws-otel-dotnet-instrumentation
uses: actions/checkout@v4
with:
repository: aws-observability/aws-otel-dotnet-instrumentation
path: aws-otel-dotnet-instrumentation
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ github.event.inputs.dotnet-version }}
- name: Setup AWS Lambda Tools
run: dotnet tool install -g Amazon.Lambda.Tools
- name: Setup Terraform
uses: hashicorp/setup-terraform@v2
- name: Build and Deploy .NET Sample App and Lambda Layer
run: |
cd aws-otel-dotnet-instrumentation/sample-applications/lambda-test-apps/SimpleLambdaFunction/
./build-and-deploy.sh
- name: Checkout current repository
uses: actions/checkout@v4
with:
path: current-repo
- name: Run Cold Start Iterations for Base Lambda + Lambda Layer
run: |
cd current-repo
chmod +x lambda-layer-perf-test/lambda-layer-run.sh
./lambda-layer-perf-test/lambda-layer-run.sh false SimpleLambdaFunction
- name: Remove Application Signals Lambda Layer
run: |
echo "Removing Lambda layer..."
OUTPUT=$(aws lambda update-function-configuration \
--function-name SimpleLambdaFunction \
--layers [])
echo "Lambda configuration:"
echo "$OUTPUT"
LAYERS=$(echo "$OUTPUT" | jq -r '.Layers | length')
if [ "$LAYERS" -ne 0 ]; then
echo "::error::Found $LAYERS layer(s) still attached to the function"
echo "::error::Layer details:"
echo "$OUTPUT" | jq -r '.Layers'
exit 1
else
echo "✅ Layers successfully removed"
fi
- name: Run Cold Start Iterations for Base Lambda
run: |
cd current-repo
chmod +x lambda-layer-perf-test/lambda-layer-run.sh
./lambda-layer-perf-test/lambda-layer-run.sh true SimpleLambdaFunction
- name: Upload test results
uses: actions/upload-artifact@v4
with:
name: dotnet-performance-test-results
path: |
no_layer_results.txt
layer_results.txt
retention-days: 90
- name: Cleanup Terraform Resources
if: success() || failure() || cancelled()
run: |
cd aws-otel-dotnet-instrumentation/sample-applications/lambda-test-apps/SimpleLambdaFunction/terraform/lambda
echo "Starting Terraform cleanup..."
terraform init
terraform destroy -auto-approve