首页 > 解决方案 > S3 下载无法从 crontab 脚本运行

问题描述

我之前已经发布过这个问题,我以为我已经解决了,但不幸的是我仍然无法弄清楚发生了什么。

简而言之:我在每天更新的 s3 存储桶中有一个 JSON 文件。我的 crontab 脚本(设置为每天运行一次)将文件从我的 s3 存储桶下载到我的本地目录,覆盖我本地目录上的现有文件。该脚本在 Mac 终端上本地运行。目的是每天运行一次脚本,以便不断覆盖和更新文件。

我已经验证了 s3 存储桶中的 JSON 文件正在不断更新,所以我认为这不是问题所在。

这是 crontab 上的命令:

03 23 * * * /Library/Frameworks/Python.framework/Versions/3.7/bin/aws s3 cp s3://sfbucket.bucket/sf_events.json /Users/Documents/TownSounds_Javascript/data/sf_events.json >> /Users/Documents/logs3.txt 2>&1

上面的 crontab 脚本无法运行。我可以让它运行的唯一方法是手动编辑一次 crontab 脚本:* * * * *

因此它运行一次,然后恢复为根本不运行。

当我检查 logs3.txt 时,修改的日期似乎没有更新,这也表明它无法运行。

我进一步调查,并创建了一个测试 crontab 脚本:

* * * * * echo `date` >> /Users/Documents/testCrontab.txt

它工作正常,输出完全符合预期。

谁能告诉我为什么 s3 文件的 crontab 脚本可能无法运行?我是否需要登录到 s3 才能使脚本能够执行此操作并提取文件?Amazon s3 在一段时间不活动后自动将我注销,所以这似乎不可行。

我读过这aws s3 sync可能是我正在寻找的东西?

标签: amazon-web-servicesamazon-s3amazon-ec2terminalcron

解决方案


AWS CLI 命令可能失败的原因有很多(在本例中为 aws s3 cp)...您(或运行该命令的脚本,例如 crontab )需要具有适当的凭证才能与您的 aws 资源交互(请参阅:https ://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html )。您需要检查 ACCESS_KEY 和 SECRET_KEY 是否可用作 ENV 变量,或者您可以将其直接提供给 aws 命令(请参阅:传递访问权限和密钥 aws cli


推荐阅读