【发布时间】:2021-04-26 21:25:05
【问题描述】:
我尝试通过 EC2 上的 cron 自动化一些工作。但是,由于错误“403 Forbidden”,aws 命令失败。当我在 shell 中运行这些代码时,这些代码运行良好。我尝试了几乎所有关于堆栈溢出的解决方案,但都没有解决问题。
测试代码很简单。 (测试将文件从 S3 复制到我的 EC2)
/2 * * * * /usr/local/bin/aws s3 cp s3://fraud-training-test/FraudAWS_v1.R /home/ubuntu
有人知道我还能做些什么来解决这个问题吗?谢谢!
到目前为止,我尝试了以下解决方案:
- 为 root 和我当前的用户安装和配置了 awscli;
- 将全局路径和主目录放在我的脚本之上
例如:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- 尝试以当前用户和 root 用户身份安排 cron 作业,但都失败了。
以下是我从日志中得到的确切错误:
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
【问题讨论】:
-
它似乎与正在使用的 AWS 凭证相关。 EC2 是否分配了有权访问 S3 存储桶的角色?还是您有意使用存储在本地
~.aws/credentials文件中的凭据? -
我为 ubuntu 用户和 root 用户配置并授予了访问 S3 存储桶的权限。我检查了 ~.aws/credentials 文件,该文件中的凭据对我来说是正确的。
标签: amazon-web-services amazon-ec2 cron