2016-11-28 68 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"