Skip to content

DotNet Lambda Layer Performance Test #2

DotNet Lambda Layer Performance Test

DotNet Lambda Layer Performance Test #2

## 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@a03048d87541d1d9fcf2ecf528a4a65ba9bd7838 # v5.0.0
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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
repository: aws-observability/aws-otel-dotnet-instrumentation
path: aws-otel-dotnet-instrumentation
- name: Setup .NET
uses: actions/setup-dotnet@d4c94342e560b34958eacfc5d055d21461ed1c5d # v5.0.0
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@b9cd54a3c349d3f38e8881555d616ced269862dd #v3.1.2
- 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@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
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@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
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