JENKINS上的AWS CLI命令

Анд*_* Ка 6 encryption terminal amazon-s3 amazon-web-services jenkins

我正在尝试编写一个脚本,在Jenkins的帮助下将查看git中的更新文件,下载并使用AWS KMS加密它们.我有一个工作脚本,可以完成所有工作,并将文件下载到本地服务器上的Jenkins存储库.但我的问题是在Jenkins repo中加密这个文件.基本上,当我加密本地计算机上的文件时,我使用命令:

aws kms encrypt --key-id xxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxx --plaintext fileb://file.json --output text --query CiphertextBlob | base64 --decode > Encrypted-data.json
Run Code Online (Sandbox Code Playgroud)

并且一切正常,但如果我尝试使用Jenkins,我会收到AWS命令未找到的错误.
有人知道如何解决这个问题,我如何通过Jenkins运行AWS?这是我的工作代码,它在最后一行分解:

bom_sniffer() { 

  head -c3 "$1" | LC_ALL=C grep -qP '\xef\xbb\xbf'; 
  if [ $? -eq 0 ] 
  then 
    echo "BOM SNIFFER DETECTED BOM CHARACTER IN FILE \"$1\""
    exit 1
  fi
}
check_rc() {
  # exit if passed in value is not = 0
  # $1 = return code
  # $2 = command / label
  if [ $1 -ne 0 ]
  then
    echo "$2 command failed"
    exit 1
  fi
}

# finding files that differ from this commit and master
echo 'git fetch'
check_rc $? 'echo git fetch'
git fetch
check_rc $? 'git fetch'
echo 'git diff --name-only origin/master'
check_rc $? 'echo git diff'

diff_files=`git diff --name-only $GIT_PREVIOUS_COMMIT $GIT_COMMIT | xargs`
check_rc $? 'git diff'
for x in ${diff_files}
do
  echo "${x}"
  cat ${x}
  bom_sniffer "${x}"
  check_rc $? "BOM character detected in ${x},"
  aws configure kms encrypt --key-id xxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxx --plaintext fileb://${x} --output text --query CiphertextBlob | base64 --decode > Encrypted-data.json

done
Run Code Online (Sandbox Code Playgroud)

Rah*_*rma 6

在与您讨论之后,这个问题是如何解决的:

首先通过configure从中删除命令来更正命令.

安装了jenkins用户的awscli:
pip install awscli --user

使用aws脚本中的绝对路径,
例如.如果~/.local/bin/aws kms encrypt --key-id xxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxx --plaintext fileb://${x} --output text --query CiphertextBlob | base64 --decode > Encrypted-data.json你的脚本中有〜/ .local/bin/use .或者在PATH中添加aws的路径.