繁体   English   中英

GiT 管道调用 lambda function 使用 terraform 创建,

[英]GiT pipeline to invoke lambda function created using terraform,

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:
  - set TF_VAR_AWS_ACCESS_KEY=${AWS_ACCESS_KEY_ID}
  - set 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:      
      - set func_name = ${CI_COMMIT_REF_NAME}-"hello-world" 
      - aws lambda invoke --function-name '$func-name' response.json
  dependencies:
    - apply

在上面的脚本中,在调用阶段我想传递 lambda function main 作为参数,lambda function 名称以 gitlab 分支名称为前缀。

我收到 function arg 语法错误。

有人可以帮助找到解决方案,将前缀为 gitlab 分支名称的 function 名称 arg 传递给 AWS lambda invoke CLI 命令。

Gitlab 分支名称环境变量是CI_COMMIT_BRANCH https://docs.gitlab.com/ee/ci/variables/predefined_variables.html#:~:text=branches%20or%20tags.-,CI_COMMIT_BRANCH,-12.6

您不需要创建任何额外的变量。

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

如果你想将它与变量一起使用。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM