Node Lambda Layer Performance Test #2
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: Node Lambda Layer Performance Test | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| test_runs: | |
| description: 'Number of test runs to perform' | |
| required: true | |
| default: 20 | |
| type: number | |
| node_version: | |
| description: 'The Node.js version to run the test' | |
| required: true | |
| default: '22' | |
| type: string | |
| jobs: | |
| node-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-js-instrumentation | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: aws-observability/aws-otel-js-instrumentation | |
| path: aws-otel-js-instrumentation | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: ${{ github.event.inputs.node_version }} | |
| - name: Setup Terraform | |
| uses: hashicorp/setup-terraform@v2 | |
| - name: Build Lambda Layer | |
| run: | | |
| cd aws-otel-js-instrumentation/lambda-layer | |
| chmod +x build.sh | |
| ./build.sh | |
| - name: Deploy Node.js Sample App and Lambda Layer | |
| run: | | |
| cd aws-otel-js-instrumentation/lambda-layer/sample-apps/aws-sdk | |
| npm install | |
| cd ../../terraform/lambda | |
| terraform init | |
| terraform apply -auto-approve | |
| - 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 aws-opentelemetry-distro-nodejs | |
| - name: Remove Application Signals Lambda Layer | |
| run: | | |
| echo "Removing Lambda layer..." | |
| OUTPUT=$(aws lambda update-function-configuration \ | |
| --function-name aws-opentelemetry-distro-nodejs \ | |
| --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 aws-opentelemetry-distro-nodejs | |
| - name: Upload test results | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: js-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-js-instrumentation/lambda-layer/terraform/lambda | |
| echo "Starting Terraform cleanup..." | |
| terraform init | |
| terraform destroy -auto-approve |