DotNet Lambda Layer Performance Test #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ## 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 |