shared-actions/aws-lambda-alias-update
Marcel Frey 4d9b2459a4
All checks were successful
validate-shared-actions / validate-shared-actions (pull_request) Successful in 33s
Aikido Security PR Check / Aikido Security Scan (pull_request) Successful in 50s
feat: add aws-lambda-alias-update and aws-lambda-wait-for-provisioned-concurrency actions
2026-06-25 10:40:28 +00:00
..
action.yml feat: add aws-lambda-alias-update and aws-lambda-wait-for-provisioned-concurrency actions 2026-06-25 10:40:28 +00:00
README.md feat: add aws-lambda-alias-update and aws-lambda-wait-for-provisioned-concurrency actions 2026-06-25 10:40:28 +00:00

aws-lambda-alias-update

Composite action that updates Lambda function aliases from a Terraform output. Iterates over the lambda_alias_updates Terraform output and calls aws lambda update-alias for each entry.

Example lambda-alias-updates input:

[
  "{\"alias_name\": \"live\", \"function_name\": \"my-get-product\", \"version\": \"42\"}",
  "{\"alias_name\": \"live\", \"function_name\": \"my-get-category\", \"version\": \"7\"}"
]

Inputs

Input Required Default Description
lambda-alias-updates Yes JSON array of Lambda alias update objects (Terraform output: lambda_alias_updates). Each element is a JSON-encoded string with alias_name, function_name, and version.

Usage

- name: Update Lambda Aliases
  uses: https://schmalz-git.git.onstackit.cloud/schmalz/shared-actions/aws-lambda-alias-update@aws-lambda-alias-update-v1
  with:
    lambda-alias-updates: ${{ steps.tf-apply.outputs.lambda_alias_updates }}

Terraform Setup

  • Add the following content to the project
  • Add all Lambda Modules to the provisioned_lambda_modules list for which the Function Alias and/or Provisioned Concurrency should be updated

output.tf

locals {
  // List of Lambda Modules that have provisioned concurrency configured.
  // Required to update the aliases of these functions after deployment.
  provisioned_lambda_modules = [
    module.lambda_get_category,
    module.lambda_product_get_full_slug,
    module.lambda_get_product,
  ]
}

// Output which allows Updates of Lambda Alias and Provisioned Concurrency
output "lambda_alias_updates" {
  value = concat([for module in local.provisioned_lambda_modules : "{\"alias_name\": \"${module.lambda_alias_name}\", \"function_name\": \"${module.lambda_name}\", \"version\": \"${module.lambda_version}\" }"])
}

Example Usage with other Shared Actions

jobs:
  deploy-stage:
    name: Build and Deploy to Stage
    runs-on: stackit-ubuntu-22
    steps:
      - name: Apply Terraform
        uses: https://schmalz-git.git.onstackit.cloud/schmalz/shared-actions/terraform-apply@terraform-apply-v1
        id: tf-apply
        with:
          terraform-version: 1.14.9
          workspace: stage
          var-file: stage.tfvars
          jfrog-token: ${{ secrets.JFROG_TOKEN }}

      - name: Update Lambda Aliases
        uses: https://schmalz-git.git.onstackit.cloud/schmalz/shared-actions/aws-lambda-alias-update@aws-lambda-alias-update-v1
        with:
          lambda-alias-updates: ${{ steps.tf-apply.outputs.lambda_alias_updates }}

      - name: Wait for Lambda Provisioned Concurrency
        uses: https://schmalz-git.git.onstackit.cloud/schmalz/shared-actions/aws-lambda-wait-for-provisioned-concurrency@aws-lambda-wait-for-provisioned-concurrency-v1
        with:
          lambda-alias-updates: ${{ steps.tf-apply.outputs.lambda_alias_updates }}

Notes

  • Expects the lambda-alias-updates input to be the raw lambda_alias_updates output from the terraform-apply action.
  • Requires AWS credentials to be configured in the job before this step runs.