我创建了一个具有非常简单的make bucket命令的linux盒子:从提示符运行这个s3 mb s3://bucket
工作正常。
我已经将AWS配置作为我登录的用户和sudo运行。细节绝对正确,因为上面不会创建存储桶。
我从cron获得的错误消息是:make_bucket failed: s3://cronbucket/ Unable to locate credentials
到目前为止,我已尝试使用crontab尝试告诉它凭据的位置,其中一些是其他解决方案的合并,这可能是问题的原因。
我的crontab看起来像:
AWS_CONFIG_FILE="/home/ec2-user/.aws/config"
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binx
0 0 * * * /usr/bin/env bash /opt/foo.sh &>> /tmp/foo.log
* * * * * /usr/bin/uptime > /tmp/uptime
* * * * * /bin/scripts/script.sh >> /bin/scripts/cronlogs/cronscript.log 2>&1
最初,我只有两个工作正在制作存储桶,然后创建正常运行时间(作为完整性检查),crontab的其余部分是来自其他帖子的解决方案,似乎不起作用。
非常感谢任何建议,谢谢。
答案 0 :(得分:2)
问题是cron没有获得你的环境。有几种方法可以解决这个问题。运行包含您的个人资料的bash脚本。或者一个很好的简单解决方案是将它包含在crontab中。 (将个人资料更改为您正在使用的任何内容)
0 5 * * * . $HOME/.profile; /path/to/command/to/run
查看此thread
答案 1 :(得分:0)
如果您为 ECS Fargate 任务角色附加了 IAM 角色,则此解决方案将起作用
在 entrypoint.sh
declare -p | grep -Ev 'BASHOPTS|BASH_VERSINFO|EUID|PPID|SHELLOPTS|UID' > /container.env
在 crontab 或 cron 文件中添加以下行
SHELL=/bin/bash
BASH_ENV=/container.env
它对我有用。