我正在尝试自动化一个过程,该过程在一个(或多个)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的包装器。我在s3multiput调用中包含-d 1
标志,并使用2>&1
重定向crontab作业上的所有输出,但是缺少数据的小时报告看起来就像之前和之后的小时的报告,每一个都成功了。
所以,99%的时间都可以使用,但是当它失败时,我不知道为什么,而且我无法确定在哪里看。我只是在解析器作业试图从存储桶中提取数据时才发现故障,但它不在那里。数据在应该上传的目录中是安全的,所以我可以手动完成,但不是必须这样做。
如果有帮助的话,我很乐意发布约30-40行相关代码,但是想知道是否还有其他人遇到这个问题并且听起来很熟悉。
有些盛大的日子我会回到管道的这一部分,并在python中重写它以避免s3multiput,但我们还没有开发时间。
如何通过s3multiput上传来调查这里出了什么问题?
答案 0 :(得分:1)
首先,我会尝试更新boto;对分段上传失败时,对开发分支的提交提到了日志记录。请注意,这样做需要使用s3put
,因为s3multiput
正在折叠为s3put
。