简体   繁体   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

In the above script, in invoke stage i want to pass the lambda function main as argument, lambda function name prefixed with the gitlab branch name.在上面的脚本中,在调用阶段我想传递 lambda function main 作为参数,lambda function 名称以 gitlab 分支名称为前缀。

I am getting function arg syntax error.我收到 function arg 语法错误。

Could someone help in finding a solution to pass the function name arg prefixed with gitlab branch name to AWS lambda invoke CLI command.有人可以帮助找到解决方案,将前缀为 gitlab 分支名称的 function 名称 arg 传递给 AWS lambda invoke CLI 命令。

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

You don't need to create any extra variables.您不需要创建任何额外的变量。

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

If you want to use it with variables.如果你想将它与变量一起使用。

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