diff --git a/.github/workflows/_deploy_lambda.yml b/.github/workflows/_deploy_lambda.yml index 3b25200e..ce4c906a 100644 --- a/.github/workflows/_deploy_lambda.yml +++ b/.github/workflows/_deploy_lambda.yml @@ -83,22 +83,19 @@ jobs: - name: Terraform Plan working-directory: ${{ inputs.lambda_path }} run: | - ENV_VARS="" + PLAN_CMD="terraform plan \ + -var=\"stage=${{ inputs.stage }}\" \ + -var=\"lambda_name=${{ inputs.lambda_name }}\" \ + -var=\"ecr_repo_url=${{ steps.repo.outputs.ecr_repo_url }}\" \ + -var=\"image_digest=${{ inputs.image_digest }}\"" + if [ -n "${{ inputs.environment_vars }}" ]; then - # convert multi-line to JSON map: key=value -> "key"="value" - ENV_VARS=$(echo "${{ inputs.environment_vars }}" | \ - awk -F= '{gsub(/"/,"\\\""); printf "\"%s\"=\"%s\",",$1,$2}' | \ - sed 's/,$//') # remove trailing comma - ENV_VARS="-var='environment_vars={${ENV_VARS}}'" + PLAN_CMD="$PLAN_CMD -var=\"environment_vars=${{ inputs.environment_vars }}\"" fi - terraform plan \ - -var="stage=${{ inputs.stage }}" \ - -var="lambda_name=${{ inputs.lambda_name }}" \ - -var="ecr_repo_url=${{ steps.repo.outputs.ecr_repo_url }}" \ - -var="image_digest=${{ inputs.image_digest }}" \ - $ENV_VARS \ - -out=lambdaplan + PLAN_CMD="$PLAN_CMD -out=lambdaplan" + echo "Running: $PLAN_CMD" + eval $PLAN_CMD - name: Terraform Apply working-directory: ${{ inputs.lambda_path }} diff --git a/infrastructure/terraform/lambda/condition-etl/main.tf b/infrastructure/terraform/lambda/condition-etl/main.tf index a421f898..3ab719f7 100644 --- a/infrastructure/terraform/lambda/condition-etl/main.tf +++ b/infrastructure/terraform/lambda/condition-etl/main.tf @@ -11,4 +11,8 @@ module "lambda" { STAGE = var.stage LOG_LEVEL = "info" } + + # Optional extra environment variables (DB credentials) + environment_vars = var.environment_vars + } diff --git a/infrastructure/terraform/lambda/condition-etl/variables.tf b/infrastructure/terraform/lambda/condition-etl/variables.tf index e4bab243..d4840855 100644 --- a/infrastructure/terraform/lambda/condition-etl/variables.tf +++ b/infrastructure/terraform/lambda/condition-etl/variables.tf @@ -17,6 +17,10 @@ variable "image_digest" { description = "Image digest (sha256:...)" } +variable "environment_vars" { + type = map(string) + default = {} + } locals { image_uri = "${var.ecr_repo_url}@${var.image_digest}"