我正在使用 Jenkins 进行 CI。我需要能够从 S3 存储桶中提取文件。在 jenkins 作业中,我从 jenkins shell 执行以下诊断:
cd ~
这将带我到 /var/lib/jenkins
whoami
这将返回用户 jenkins
在 /var/lib/jenkins 中,我有一个包含配置和凭证文件的 .aws 文件夹,但是当我运行
aws configure list
我明白了:
Name Value Type Location
---- ----- ---- --------
profile <not set> None None
access_key <not set> None None
secret_key <not set> None None
region <not set> None None
尽管我有 .aws 文件夹和这两个文件中的正确信息,但那里什么也没有。我最初尝试将 .aws 文件夹放在 /home/jenkins 中,但这也没有用。
那么,如何让 jenkins 真正与 aws cli 一起工作?
答案1
您可以将凭据导出为环境变量:
$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_DEFAULT_REGION=us-west-2
看http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html了解更多信息。根据你使用 Jenkins 的方式,你可能想要使用EvnInject 插件
答案2
这种方法对我有用:
- 在
/var/lib/jenkins
其中创建名为 .aws 的目录(或者,如果您已通过“aws configure”命令配置了 aws 凭证,则从主目录复制 .aws 文件夹) - 然后转到
/var/lib/jenkins/.aws
并写入sudo shown -R jenkins ./
以更改 .aws 目录中文件的所有者。
答案3
请在 jenkins 服务器的 bash 中更新您的 aws 凭证。运行以下命令:
# sudo -su jenkins
# aws configure
参考链接:http://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ami-jenkins.html
答案4
如果您在使用实例角色时在公司网络中看到此问题,请确保代理设置正确。