49 lines
1.8 KiB
YAML
49 lines
1.8 KiB
YAML
name: "AWS Lambda - Update Alias"
|
|
description: >
|
|
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.
|
|
|
|
inputs:
|
|
lambda-alias-updates:
|
|
description: >
|
|
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.
|
|
required: true
|
|
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: Install AWS CLI
|
|
shell: bash
|
|
run: |
|
|
if ! command -v aws &> /dev/null; then
|
|
curl -fsSL "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o /tmp/awscliv2.zip
|
|
unzip -q /tmp/awscliv2.zip -d /tmp
|
|
sudo /tmp/aws/install
|
|
rm -rf /tmp/awscliv2.zip /tmp/aws
|
|
fi
|
|
|
|
- name: Install jq if missing
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
command -v jq >/dev/null 2>&1 || sudo apt-get install -y --no-install-recommends jq
|
|
|
|
- name: Update Lambda Aliases
|
|
shell: bash
|
|
env:
|
|
LAMBDA_ALIAS_UPDATES: ${{ inputs.lambda-alias-updates }}
|
|
run: |
|
|
echo "$LAMBDA_ALIAS_UPDATES" | jq -c '.[] | fromjson' | while IFS= read -r entry; do
|
|
alias_name=$(echo "$entry" | jq -r '.alias_name')
|
|
function_name=$(echo "$entry" | jq -r '.function_name')
|
|
version=$(echo "$entry" | jq -r '.version')
|
|
echo "Updating alias '$alias_name' for '$function_name' to version '$version'"
|
|
aws lambda update-alias \
|
|
--no-cli-pager \
|
|
--name "$alias_name" \
|
|
--function-name "$function_name" \
|
|
--function-version "$version"
|
|
echo "Updated alias '$alias_name' for '$function_name' to version '$version'"
|
|
done
|