如何使用 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 通过 Jenkins 管道在 AWS 中执行操作?

问题描述 投票:0回答:1

我正在尝试创建 Jenkins 管道 (.jenkinsfile) 来在 AWS 中执行某些操作,但无法让公司中的每个人都可以访问该管道。我的想法是让用户将其 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 值(这些值每 24 小时刷新一次)粘贴到 Jenkins 管道参数中,然后将它们用作 .jenkins 文件中的某种类型的凭证。如果用户粘贴错误的值/没有运行代码的正确权限,则作业将失败。到目前为止,我一直无法找到一种方法来执行此操作,因为我看到的所有示例都使用存储在 Jenkins 服务器上的现有凭据,而不是为每次运行生成它们。

我尝试了以下代码,但没有成功:

environment {
   TMP_AWS_CREDS =
     credentialsBinding {
       amazonWebServicesCredentialsBinding {
         accessKeyVariable(${AWS_ACCESS_KEY_ID})
         secretKeyVariable(${AWS_SECRET_ACCESS_KEY})
         credentialsId('temp-aws-creds')
       }
     }
}

steps {
  withAWS(credentials: "${TMP_AWS_CREDS}, region: 'ap-southeast-4') {
    // some block
  }
}

steps {
  withAWS(credentials: wrappers {
    credentialsBinding {
      amazonWebServicesCredentialsBinding {
        accessKeyVariable(${AWS_ACCESS_KEY_ID})
        secretKeyVariable(${AWS_SECRET_ACCESS_KEY})
        credentialsId('temp-aws-creds')
      }
    }
  }, region: 'ap-southeast-4') {
     // some block
  }
}

steps {
  withAWS(credentials: '[certificate(credentialsId: 'temp-aws-creds', \
    keystoreVariable: AWS_ACCESS_KEY_ID, \
    passwordVariable: AWS_SECRET_ACCESS_KEY)]', region: 'ap-southeast-4') {
                            // some block
  }
}
amazon-web-services jenkins jenkins-pipeline jenkins-groovy credentials
1个回答
0
投票

您可以像任何其他管道参数一样使用它们:

parameters {
    string(name: 'AWS_ACCESS_KEY_ID', defaultValue: '', description: 'AWS access key')
    password(name: 'AWS_SECRET_ACCESS_KEY', defaultValue: '', description: 'AWS secret key associated with the access key')
}

不用担心将它们传递到您的环境中 - Jenkins 会为所有管道参数创建环境变量。但请确保它们不会打印在任何地方,因为 Jenkins 不会从日志中的参数中屏蔽密码。

© www.soinside.com 2019 - 2024. All rights reserved.