AWS CLI无法使用cron

时间:2014-09-01 19:53:33

标签: amazon-web-services cron aws-cli

我有这个脚本:

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
SHELL=/bin/bash

# Create EBS Data snapshot
/usr/local/bin/aws ec2 create-snapshot --volume-id "vol-XXXXX" --description "test"

如果我从shell运行它,它可以很好地工作,但对Cron没有任何作用。为什么?我正在使用IAM角色,这很重要吗?

5 个答案:

答案 0 :(得分:7)

以root用户身份运行aws configure并没有帮助我,因为我已经配置了凭据,并且脚本直接从命令行为root用户运行得非常愉快,但仍然无法运行通过cron。 我收到的错误信息是;

Unable to locate credentials. You can configure credentials by running "aws configure".

帮助我的是在crontab文件的顶部添加以下行,以便为通过cron运行的所有脚本提供适当的环境。

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

希望能帮助别人!

答案 1 :(得分:4)

好的,几个小时后我找到了解决方案:

用户root正在运行脚本,但未为此用户配置AWS。我只需要为root用户配置AWS:

# aws configure

答案 2 :(得分:2)

我一直在用谷歌挖掘这个问题几个小时,从crontab脚本运行AWS命令应该更容易。似乎没什么用。

我的剧本:

#!/bin/bash
backup_date=$(date +%y-%m-%d)
zip /opt/file.zip /opt/file.db
export AWS_ACCESS_KEY_ID=***********************
export AWS_SECRET_ACCESS_KEY=****************************************
export AWS_DEFAULT_REGION=us-east-1
/usr/bin/aws s3 cp /opt/file.zip s3://bucket/backup/$backup_date.file.zip
/usr/bin/aws s3 cp /opt/file.zip s3://bucket/backup/file.zip
rm -f /opt/file.zip

没有用的东西:

定义信誉: aws configure

将完整的脚本路径放入crontab: 0 22 * * * /opt/foo.sh& amp;>> /tmp/foo.log

玩弄:哪个

<强>答案:

我遇到了这个答案,只是把它放在crontab -e:

0 0 * * * /usr/bin/env bash /opt/foo.sh &>> /tmp/foo.log

答案 3 :(得分:1)

您可以通过定义环境变量直接在脚本中定义凭据:

export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
export AWS_DEFAULT_REGION=us-west-2

https://docs.aws.amazon.com/en_us/cli/latest/userguide/cli-configure-envvars.html

答案 4 :(得分:0)

您应该在

之前以root身份运行aws configure任务
# aws configure

如果您以root用户身份运行crontab,请检查HOME目录...将其更改为

HOME=/root

在/ etc / crontab的开头或将/root/.aws复制到/.

相关问题