如何在Jenkins扩展选择参数的Groovy脚本中使用AWS凭据
在Jenkins Groovy脚本中调用AWS凭据的实现方案
方法一:使用withCredentials步骤(推荐,安全可控)
通过Jenkins的Credentials Binding插件提供的withCredentials步骤,可安全地将AWS凭据注入到脚本环境中,避免明文暴露密钥。修改后的脚本如下:
withCredentials([usernamePassword( credentialsId: '你的AWS凭据ID', // 替换为Jenkins凭据中存储的AWS密钥ID usernameVariable: 'AWS_ACCESS_KEY_ID', passwordVariable: 'AWS_SECRET_ACCESS_KEY' )]) { def command = 'aws acm list-certificates --query "CertificateSummaryList[?DomainName==\'*.osdemo.cf\'].CertificateArn" --output text' // 执行命令时传入包含AWS凭据的环境变量 def proc = command.execute([], null, [ 'AWS_ACCESS_KEY_ID': env.AWS_ACCESS_KEY_ID, 'AWS_SECRET_ACCESS_KEY': env.AWS_SECRET_ACCESS_KEY ]) proc.waitFor() def output = proc.in.text def exitcode = proc.exitValue() def error = proc.err.text if (error) { println "Std Err: ${error}" println "Process exit code: ${exitcode}" return exitcode } return output.tokenize() }
关键说明
credentialsId:替换为你在Jenkins凭据管理中创建的AWS密钥对应的凭据IDusernamePassword类型适配:AWS Access Key ID作为username,Secret Access Key作为password存储,符合Jenkins凭据的usernamePassword类型定义- 环境变量注入:执行
aws命令时,通过execute方法的第三个参数传入凭据环境变量,AWS CLI会自动读取这些变量完成身份认证
方法二:通过Pipeline环境块注入凭据
若使用声明式Pipeline,可在环境块中直接绑定凭据,再在脚本中调用:
pipeline { agent any environment { // 绑定凭据,生成的变量格式为「凭据名_USR」和「凭据名_PSW」 AWS_CREDS = credentials('你的AWS凭据ID') } stages { stage('查询ACM证书') { steps { script { def command = 'aws acm list-certificates --query "CertificateSummaryList[?DomainName==\'*.osdemo.cf\'].CertificateArn" --output text' def proc = command.execute([], null, [ 'AWS_ACCESS_KEY_ID': AWS_CREDS_USR, 'AWS_SECRET_ACCESS_KEY': AWS_CREDS_PSW ]) proc.waitFor() def output = proc.in.text def exitcode = proc.exitValue() def error = proc.err.text if (error) { println "Std Err: ${error}" println "Process exit code: ${exitcode}" return exitcode } return output.tokenize() } } } } }
注意事项
- 确保Jenkins已安装
Credentials Binding插件,否则无法使用上述凭据绑定功能 - 禁止在脚本中打印或存储AWS密钥,Jenkins的凭据机制会在步骤执行完毕后自动清除相关变量,保障安全
内容的提问来源于stack exchange,提问作者sammahi
相关产品推荐
相关产品推荐

