3

我正在尝试自动化一个流程,该流程收集一个(或多个)AWS 实例上的数据,每小时将数据上传到 S3,由解耦流程检索以进行解析和进一步操作。作为第一步,我编写了一些 crontab 启动的 shell 脚本(在 Ubuntu 12.04 LTS 中运行),它调用 boto 实用程序 s3multiput。

在大多数情况下,这工作正常,但非常偶尔(可能每周一次)文件未能出现在 s3 存储桶中,我看不到任何错误或异常抛出以追查原因。

我正在使用 boto 2.6.0 中包含的 s3multiput 实用程序。Python 2.7.3 是实例上的默认 python。我为实例分配了一个 IAM 角色,以向 boto 提供 AWS 凭证。

我有一个 crontab 调用一个脚本,该脚本调用一个调用 s3multiput 的包装器。我-d 1在 s3multiput 调用中包含了标志,并重定向了 crontab 作业上的所有输出,2>&1但是丢失数据的小时的报告看起来就像之前一小时和之后一小时的报告一样,每个都成功了。

因此,99% 的时间它都有效,但是当它失败时,我不知道为什么,而且我无法确定去哪里寻找。我只是在解析器作业尝试从存储桶中提取数据并且它不存在时才发现失败。数据在它应该上传的目录中是安全可靠的,所以我可以手动完成,但宁愿不必这样做。

如果有帮助,我很乐意发布大约 30-40 行相关代码,但想知道是否有其他人遇到过这个问题,听起来很熟悉。

某个盛大的日子我会回到管道的这一部分并用 python 重写它以消除 s3multiput,但我们还没有开发时间。

我如何调查 s3multiput 上传的问题?

4

1 回答 1

1

首先,我会尝试更新 boto;当分段上传失败时,对开发分支的提交会提到日志记录。请注意,这样做需要使用 using s3put,因为s3multiput它被折叠成s3put.

于 2012-11-02T22:33:57.703 回答