
我正在使用 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
這個方法對我有用:
- 在名為 .aws 的目錄中建立目錄
/var/lib/jenkins
(如果您已透過「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
如果您在使用實例角色時在公司網路中看到此問題,請確保代理程式設定正確。