2016-11-28 70 views
0

我有一個腳本,我可以從root交互運行,這需要AWS憑據。但是,當我通過crontab運行此腳本時,出現No handler was ready to authenticate. 1 handlers were checked. ['HmacAuthV1Handler'] Check your credentials/root錯誤。此錯誤與aws憑證有關。我有其他腳本與crontab成功運行。Crontab沒有憑據

在crontab看起來像這樣:

SHELL=/bin/bash 
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
* * * * * root echo 「28/11 test」 >> /var/log/cron.log 2>&1 
35 14 * * * root /usr/bin/python /full_path/api_60.py && root /usr/bin/python /full_path/api_300.py && root /usr/bin/python /full_path/api_3600.py 
40 14 * * * root /usr/bin/python /full_path/daily_push_s3.py 

我確信,在SHELLPATH變量是通過使用echo從交互shell在腳本的工作肯定找他們正確的。

我讀hereaws~/.aws中查找配置或憑證文件。

因此,我將配置和憑證文件移至/root/.aws/而不是~/.aws/並將其設置爲ENV HOME=/root

憑據:

[default] 
region=eu-west-1 
output=json 

配置:

[default] 
aws_access_key_id=XXX 
aws_secret_access_key=XXX 

是在什麼環境下的區別?

+0

您是否移動了憑證文件? – helloV

+0

不知道你的'config'或'credentials'文件是什麼,很難評論。您應該將'〜/ .aws'移動/複製到'/ root/.aws'。你需要'config'和'credentials'。 – helloV

+0

謝謝@helloV。我做了一些編輯。這有幫助嗎? – LearningSlowly

回答

0

由於crontab環境勝過了任何預定義的環境,我直接在那裏添加了憑證,並且都可以工作。

HOME=/root 
SHELL=/bin/bash 
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
AWS_CONFIG_FILE=「/path/config」 
AWS_ACCESS_KEY_ID="XXX" 
AWS_SECRET_ACCESS_KEY="XXX"