【问题标题】:AWS CLI not working with cronAWS CLI 不适用于 cron
【发布时间】:2014-10-26 01:25:30
【问题描述】:
我有这个脚本:
#!/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 角色,这重要吗?
【问题讨论】:
标签:
amazon-web-services
cron
aws-cli
【解决方案1】:
在 EC2 实例 (Ubuntu 20.04) 上使用 AWS 角色时,aws ... 在手动部署(无需 aws 配置)时开箱即用,但作为 cron 脚本不成功。
缺少的是一条路径,这是一个技巧:
/usr/local/bin/aws --version
【解决方案3】:
您应该在之前以 root 身份运行 aws configure 任务
# aws configure
如果您以 root 身份运行 crontab,请检查 HOME 目录...将其更改为
HOME=/root
在 /etc/crontab 的开头或将 /root/.aws 复制到 /.
【解决方案4】:
我已经用这个问题在谷歌上挖掘了几个小时,从带有 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 &>> /tmp/foo.log
玩弄:which aws
答案:
我遇到了这个答案,把它放在 crontab -e 中:
0 0 * * * /usr/bin/env bash /opt/foo.sh &>> /tmp/foo.log
【解决方案5】:
以 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
希望对某人有所帮助!
【解决方案6】:
好的,几个小时后我找到了解决方案:
用户 root 正在运行脚本,但未为此用户配置 AWS。我只需要为 root 用户配置 AWS:
# aws configure