AWS CLI在外壳程序中工作,但在cron作业中不工作

时间:2019-03-28 17:54:56

标签: amazon-web-services amazon-ec2 cron

我试图通过EC2上的cron使某些作业自动化。但是,由于错误“ 403 Forbidden”,aws命令失败。当我在shell中运行这些代码时,它们工作正常。我在堆栈溢出时尝试了几乎所有解决方案,但没有一个解决了问题。

测试代码非常简单。 (测试将文件从S3复制到我的EC2)

/2 * * * * /usr/local/bin/aws s3 cp s3://fraud-training-test/FraudAWS_v1.R /home/ubuntu

任何人都知道我还可以做些什么来解决这个问题?谢谢!

到目前为止,我尝试了以下解决方案:

  1. 为root用户和当前用户安装并配置了awscli;
  2. 将全局路径和主页放置在脚本的顶部

例如:

SHELL=/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  1. 尝试将cron作业安排为我的当前用户和root用户,但都失败了。

以下是我从日志中得到的确切错误:

Subject: /usr/local/bin/aws s3 cp s3://fraud-training-test/FraudAWS_v1.R /r$
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Cron-Env: <PATH=/usr/bin:/usr/local/bin>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <LOGNAME=root>

fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden

2 个答案:

答案 0 :(得分:0)

问题可能是您在crontab中配置的用户与在AWS CLI中配置的用户不同。

您必须将执行crontab -e的用户与aws configure中配置的用户相匹配

这在我的Lightsail Bitnami实例上工作正常。

答案 1 :(得分:0)

使用 which aws 检查您的 AWS 安装路径并执行 ls -la 以了解用户权限。

然后在 crontab -e 为当前用户或 sudo crontab -e 为 root 用户相应地运行它。

它在 Ubuntu 16.04 中对我有用。