From de1676d313abce63f998b8fab343c8ddff5914c6 Mon Sep 17 00:00:00 2001 From: Gary Rutland Date: Thu, 26 Feb 2026 18:52:57 +0000 Subject: [PATCH 01/10] Create deploy-lambda.yaml --- .github/workflows/deploy-lambda.yaml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/deploy-lambda.yaml diff --git a/.github/workflows/deploy-lambda.yaml b/.github/workflows/deploy-lambda.yaml new file mode 100644 index 0000000..9121486 --- /dev/null +++ b/.github/workflows/deploy-lambda.yaml @@ -0,0 +1,27 @@ +name: Deploy Lambda to AWS + +on: + push: + branches: ["*-workshop"] + paths: + - .github/** + - lambda/** + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +env: + AWS_REGION: eu-west-1 + +jobs: + deploy: + runs-on: ubuntu-latest + env: + FUNCTION_NAME: ${{ github.ref_name }} + permissions: + id-token: write + contents: read + steps: + - name: Checkout repository + uses: actions/checkout@v6 From f43eca84545f80b05de9d78a9665a08b048a4af2 Mon Sep 17 00:00:00 2001 From: Gary Rutland Date: Thu, 26 Feb 2026 19:10:22 +0000 Subject: [PATCH 02/10] Update deploy-lambda.yaml --- .github/workflows/deploy-lambda.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/deploy-lambda.yaml b/.github/workflows/deploy-lambda.yaml index 9121486..d01f0a0 100644 --- a/.github/workflows/deploy-lambda.yaml +++ b/.github/workflows/deploy-lambda.yaml @@ -25,3 +25,14 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v6 + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v6 + with: + role-to-assume: ${{ secrets.AWS_ROLE_ARN }} + aws-region: ${{ env.AWS_REGION }} + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: 24 + cache: npm + cache-dependency-path: lambda/package-lock.json From a63fde4b19b02b9ac39f464cfefe0b5607667b89 Mon Sep 17 00:00:00 2001 From: Gary Rutland Date: Thu, 26 Feb 2026 19:20:28 +0000 Subject: [PATCH 03/10] Update deploy-lambda.yaml --- .github/workflows/deploy-lambda.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/deploy-lambda.yaml b/.github/workflows/deploy-lambda.yaml index d01f0a0..7b07d52 100644 --- a/.github/workflows/deploy-lambda.yaml +++ b/.github/workflows/deploy-lambda.yaml @@ -36,3 +36,12 @@ jobs: node-version: 24 cache: npm cache-dependency-path: lambda/package-lock.json + - name: Install dependencies + working-directory: ./lambda + run: npm ci + - name: Build TypeScript + working-directory: ./lambda + run: npm run build + - name: Package Lambda function + working-directory: ./lambda + run: npm run package From 23c964e9c7538c31023270dc8e7590314bd4c6a5 Mon Sep 17 00:00:00 2001 From: Gary Rutland Date: Thu, 26 Feb 2026 19:23:55 +0000 Subject: [PATCH 04/10] Update deploy-lambda.yaml From b59b16a12b92c3f6c5b822ad055b16214ceb12ec Mon Sep 17 00:00:00 2001 From: Gary Rutland Date: Thu, 26 Feb 2026 19:25:54 +0000 Subject: [PATCH 05/10] Update deploy-lambda.yaml --- .github/workflows/deploy-lambda.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/deploy-lambda.yaml b/.github/workflows/deploy-lambda.yaml index 7b07d52..0b6c10a 100644 --- a/.github/workflows/deploy-lambda.yaml +++ b/.github/workflows/deploy-lambda.yaml @@ -45,3 +45,13 @@ jobs: - name: Package Lambda function working-directory: ./lambda run: npm run package + - name: Check if Lambda function exists + id: check_lambda + run: | + if aws lambda get-function --function-name ${{ env.FUNCTION_NAME }} >/dev/null 2>&1; then + echo "exists=true" >> $GITHUB_OUTPUT + echo "✅ Lambda function ${{ env.FUNCTION_NAME }} exists" + else + echo "exists=false" >> $GITHUB_OUTPUT + echo "➡️ Lambda function ${{ env.FUNCTION_NAME }} needs to be created" + fi From a457132b1c8ec6911b7e046f2fa384b5a14e8259 Mon Sep 17 00:00:00 2001 From: Gary Rutland Date: Thu, 26 Feb 2026 19:29:33 +0000 Subject: [PATCH 06/10] Update deploy-lambda.yaml --- .github/workflows/deploy-lambda.yaml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/.github/workflows/deploy-lambda.yaml b/.github/workflows/deploy-lambda.yaml index 0b6c10a..70af1d0 100644 --- a/.github/workflows/deploy-lambda.yaml +++ b/.github/workflows/deploy-lambda.yaml @@ -55,3 +55,26 @@ jobs: echo "exists=false" >> $GITHUB_OUTPUT echo "➡️ Lambda function ${{ env.FUNCTION_NAME }} needs to be created" fi + - name: Create Lambda function + if: steps.check_lambda.outputs.exists == 'false' + working-directory: ./lambda + run: | + aws lambda create-function \ + --function-name ${{ env.FUNCTION_NAME }} \ + --runtime nodejs24.x \ + --role ${{ secrets.LAMBDA_EXECUTION_ROLE_ARN }} \ + --handler build/index.handler \ + --zip-file fileb://function.zip \ + --description "Workshop Lambda deployed by ${{ github.actor }}" \ + --environment Variables={GITHUB_ACTOR=${{ github.actor }}} \ + --tags Workshop=GitHubActions,User=${{ github.actor }} + echo "🎉 Lambda function ${{ env.FUNCTION_NAME }} created!" + + - name: Update Lambda function code + if: steps.check_lambda.outputs.exists == 'true' + working-directory: ./lambda + run: | + aws lambda update-function-code \ + --function-name ${{ env.FUNCTION_NAME }} \ + --zip-file fileb://function.zip + echo "🔄 Lambda function ${{ env.FUNCTION_NAME }} updated!" From fe122a4ebf50cae5ca487d1e214a501a12a4c9fd Mon Sep 17 00:00:00 2001 From: Gary Rutland Date: Thu, 26 Feb 2026 19:39:04 +0000 Subject: [PATCH 07/10] Update deploy-lambda.yaml --- .github/workflows/deploy-lambda.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/deploy-lambda.yaml b/.github/workflows/deploy-lambda.yaml index 99749b4..70af1d0 100644 --- a/.github/workflows/deploy-lambda.yaml +++ b/.github/workflows/deploy-lambda.yaml @@ -45,7 +45,6 @@ jobs: - name: Package Lambda function working-directory: ./lambda run: npm run package -<<<<<<< gary-workshop - name: Check if Lambda function exists id: check_lambda run: | @@ -79,6 +78,3 @@ jobs: --function-name ${{ env.FUNCTION_NAME }} \ --zip-file fileb://function.zip echo "🔄 Lambda function ${{ env.FUNCTION_NAME }} updated!" -======= - ->>>>>>> main From 2744d270fdef6d5fec6430f397ae95bcb68bd620 Mon Sep 17 00:00:00 2001 From: Gary Rutland Date: Thu, 26 Feb 2026 19:51:13 +0000 Subject: [PATCH 08/10] Update deploy-lambda.yaml --- .github/workflows/deploy-lambda.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/deploy-lambda.yaml b/.github/workflows/deploy-lambda.yaml index 70af1d0..08e1b1c 100644 --- a/.github/workflows/deploy-lambda.yaml +++ b/.github/workflows/deploy-lambda.yaml @@ -78,3 +78,14 @@ jobs: --function-name ${{ env.FUNCTION_NAME }} \ --zip-file fileb://function.zip echo "🔄 Lambda function ${{ env.FUNCTION_NAME }} updated!" + - name: Test Lambda function + run: | + echo "🧪 Testing Lambda function..." + aws lambda invoke \ + --function-name ${{ env.FUNCTION_NAME }} \ + --payload '{}' \ + --log-type Tail \ + response.json + + echo "📋 Lambda response:" + cat response.json From 710b691fd4e00f4afb738e4bac088396fdc33f1e Mon Sep 17 00:00:00 2001 From: Gary Rutland Date: Thu, 26 Feb 2026 19:57:43 +0000 Subject: [PATCH 09/10] Update deploy-lambda.yaml --- .github/workflows/deploy-lambda.yaml | 44 +++++----------------------- 1 file changed, 8 insertions(+), 36 deletions(-) diff --git a/.github/workflows/deploy-lambda.yaml b/.github/workflows/deploy-lambda.yaml index 08e1b1c..a6881c5 100644 --- a/.github/workflows/deploy-lambda.yaml +++ b/.github/workflows/deploy-lambda.yaml @@ -42,42 +42,14 @@ jobs: - name: Build TypeScript working-directory: ./lambda run: npm run build - - name: Package Lambda function - working-directory: ./lambda - run: npm run package - - name: Check if Lambda function exists - id: check_lambda - run: | - if aws lambda get-function --function-name ${{ env.FUNCTION_NAME }} >/dev/null 2>&1; then - echo "exists=true" >> $GITHUB_OUTPUT - echo "✅ Lambda function ${{ env.FUNCTION_NAME }} exists" - else - echo "exists=false" >> $GITHUB_OUTPUT - echo "➡️ Lambda function ${{ env.FUNCTION_NAME }} needs to be created" - fi - - name: Create Lambda function - if: steps.check_lambda.outputs.exists == 'false' - working-directory: ./lambda - run: | - aws lambda create-function \ - --function-name ${{ env.FUNCTION_NAME }} \ - --runtime nodejs24.x \ - --role ${{ secrets.LAMBDA_EXECUTION_ROLE_ARN }} \ - --handler build/index.handler \ - --zip-file fileb://function.zip \ - --description "Workshop Lambda deployed by ${{ github.actor }}" \ - --environment Variables={GITHUB_ACTOR=${{ github.actor }}} \ - --tags Workshop=GitHubActions,User=${{ github.actor }} - echo "🎉 Lambda function ${{ env.FUNCTION_NAME }} created!" - - - name: Update Lambda function code - if: steps.check_lambda.outputs.exists == 'true' - working-directory: ./lambda - run: | - aws lambda update-function-code \ - --function-name ${{ env.FUNCTION_NAME }} \ - --zip-file fileb://function.zip - echo "🔄 Lambda function ${{ env.FUNCTION_NAME }} updated!" + - name: Deploy to Lambda + uses: aws-actions/aws-lambda-deploy@v1 + with: + function-name: ${{ env.FUNCTION_NAME }} + function-description: "Workshop Lambda deployed by ${{ github.actor }}" + code-artifacts-dir: ./lambda + handler: build/index.handler + runtime: nodejs24.x - name: Test Lambda function run: | echo "🧪 Testing Lambda function..." From 68fd75f84af56d6733393471f8c88932179995dc Mon Sep 17 00:00:00 2001 From: Gary Rutland Date: Thu, 26 Feb 2026 20:02:29 +0000 Subject: [PATCH 10/10] Update deploy-lambda.yaml --- .github/workflows/deploy-lambda.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/deploy-lambda.yaml b/.github/workflows/deploy-lambda.yaml index a6881c5..e51f647 100644 --- a/.github/workflows/deploy-lambda.yaml +++ b/.github/workflows/deploy-lambda.yaml @@ -50,6 +50,9 @@ jobs: code-artifacts-dir: ./lambda handler: build/index.handler runtime: nodejs24.x + env-vars: | + GITHUB_ACTOR=${{ github.actor }} + ENVIRONMENT=workshop - name: Test Lambda function run: | echo "🧪 Testing Lambda function..." @@ -61,3 +64,10 @@ jobs: echo "📋 Lambda response:" cat response.json + - name: Verify environment variables + run: | + echo "🔍 Checking Lambda configuration..." + aws lambda get-function-configuration \ + --function-name ${{ env.FUNCTION_NAME }} \ + --query 'Environment' \ + --output table