Crontab + AWS:“无法find凭据”

我有一个Linode(Ubuntu 16.04),我试图通过调用脚本的cron作业将文件复制到AWS S3存储桶,但日志输出: upload failed: ../path/file.ext to s3://bucket/prefix/file.ext Unable to locate credentials

脚本tar目录,然后将该tar上传到我的s3存储桶

  • 如果我通过sudo直接调用它,脚本工作就开始了
  • 作为一个root cron作业, tar工作,但aws上传不(如上所述错误)
  • 作为[用户] cron作业, tar失败(有意的权限相关),但是aws上传成功。
  • 当我安装AWS CLI时,我完全忘记了它的措辞,但是我select了为所有用户安装它

我试过的东西

  1. 让我的脚本直接在/usr/local/bin/aws调用/usr/local/bin/aws
  2. /usr/local/bin/aws到crontab中的PATH以及我的脚本中
  3. AWS_CONFIG_FILE="/home/[user]/.aws/config"添加AWS_CONFIG_FILE="/home/[user]/.aws/config"以及在我的脚本中
  4. 以root身份重新运行aws configure
  5. 遵循这个技巧 ,比较cron和交互式环境。 我的env.cron PATH包括我的env.interactive PATH列出的所有东西,再加上几个,甚至一些重复的东西 – 是不是很糟糕?

与我的env.cron (36行)相比,在我的env.interactive (1810行)中有更多的语句。 这一定是我的环境差异,对吧? 我已经search了我的env.interactive任何aws实例,但是没有,即使env工作得很好。 有关其他特定项目的任何提示在那里寻找?

任何想法和帮助表示赞赏! 谢谢!

如果你想使用sudo来运行一个特定的命令,并且configuration从它的主目录而不是你自己的目录中读取,那么你已经用sudo -H -u user ...来运行sudo来把HOMEvariables更新为称为用户自动。

在这种情况下,将暗示AWS_CONFIG_FILE的有效值,AWS_CREDENTIALS将自动生成。

我从/home/[user/ to /root/复制了.aws目录,似乎解决了这个问题。

围绕configuration文件被复制到根文件夹是否有任何安全/其他问题?