You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitLab CI Pipeline调用Terraform创建的Lambda函数参数语法错误求助

问题修复方案

核心错误点及修正

你的invoke阶段存在3个语法错误,导致Lambda函数名参数失效:

  1. 变量赋值语法错误:Shell中变量赋值不能有空格,且无需使用set命令,直接赋值即可
  2. 变量引用错误:变量名是func_name,引用时应该用$func_name而非$func-name(Shell变量名不允许包含减号)
  3. 引号解析问题:单引号包裹的变量不会被Shell解析,需要改用双引号或直接引用

修正后的invoke阶段代码

invoke:
  stage: invoke
  script:      
    - func_name="${CI_COMMIT_REF_NAME}-hello-world" 
    - aws lambda invoke --function-name "$func_name" response.json
  dependencies:
    - apply

额外建议:修复before_script中的环境变量设置

原配置中before_script里的set命令不符合Bash语法,正确的环境变量设置应该用export:

before_script:
  - export TF_VAR_AWS_ACCESS_KEY=${AWS_ACCESS_KEY_ID}
  - export TF_VAR_AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} 
  - rm -rf .terraform
  - terraform --version
  - terraform init

完整修正后的GitLab CI配置

stages:
  - validate
  - plan
  - apply
  - invoke
  
image:
  name: hashicorp/terraform:light
  entrypoint:
    - '/usr/bin/env'
    - 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
before_script:
  - export TF_VAR_AWS_ACCESS_KEY=${AWS_ACCESS_KEY_ID}
  - export TF_VAR_AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY} 
  - rm -rf .terraform
  - terraform --version
  - terraform init


validate:
  stage: validate
  script:
    - terraform validate
plan:
  stage: plan
  script:
    - terraform plan -out "planfile"
  dependencies:
    - validate
  artifacts:
    paths:
      - planfile
apply:
  stage: apply
  script:
    - terraform apply -input=false "planfile"
  dependencies:
    - plan
  
invoke:
  stage: invoke
  script:      
    - func_name="${CI_COMMIT_REF_NAME}-hello-world" 
    - aws lambda invoke --function-name "$func_name" response.json
  dependencies:
    - apply

内容的提问来源于stack exchange,提问作者Baskaran Thulukanam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:51:31