首页 > 解决方案 > 需要使用 jenkinsfile 调用 lambda 函数

问题描述

我正在尝试使用带有有效负载的 Jenkinsfile 调用 AWS Lambda 函数。无法将 instance_ip 变量注入有效负载。

def instance_ip = "10.X.X.X"
pipeline {
  agent any
  stages {
   stage('Terminate Machine') {
      steps {
        script {
          sh(script: 'aws lambda invoke  --function-name terminate-instance --payload  '{"private_ip_address":"${instance_ip}" }')          
        }            
      }
    }
  }
}  

标签: jenkinsaws-lambdajenkins-pipeline

解决方案


我面临着同样的问题。因此,为了传递有效负载,在 Jenkins 文件中,我使用 echo 创建了一个 Json 有效负载文件,然后将其传递给 aws cli。它可能不是最干净的解决方案,但它有效。这是我的代码的样子:

echo '{ "tagKey"':'"'"${tagKey}"'"', '"tagValue"':'"'"${tagValue}"'"', '"region"':'"'"${region}"'"' } > json.json
    
 cat json.json
 ls -alrt
   
 aws lambda invoke --function-name tag_remediator --cli-binary-format raw-in-base64-out --payload file://json.json out_"$tagKey".txt --region "${region}"

推荐阅读