2012-11-02 2 views
3

Я пытаюсь автоматизировать процесс, который собирает данные на одном (или более) экземпляре AWS, загружает данные на S3 почасовой, чтобы получить развязанный процесс анализа и дальнейших действий. В качестве первого шага я взломал инициированный crontab сценарий оболочки (работает в Ubuntu 12.04 LTS), который вызывает утилиту boto s3multiput.Тихая неудача s3multiput (boto) Загрузка в s3 из экземпляра EC2

По большей части это работает нормально, но очень редко (возможно, раз в неделю) файл не отображается в ведомости s3, и я не вижу никакой ошибки или исключения, которые были выбраны для отслеживания причин.

Я использую утилиту s3multiput, включенную в boto 2.6.0. Python 2.7.3 является питоном по умолчанию для экземпляра. У меня есть роль IAM, назначенная экземпляру, чтобы предоставить учетные данные AWS для boto.

У меня есть crontab, вызывающий скрипт, который вызывает оболочку, вызывающую s3multiput. Я включил флаг -d 1 на вызов s3multiput и перенаправил весь вывод на задание crontab с 2>&1, но отчет за час, в котором отсутствуют данные, выглядит так же, как отчет за час до и после часа, каждый из которых преуспел.

Таким образом, в 99% случаев это работает, но когда он терпит неудачу, я не знаю, почему, и мне трудно понять, где искать. Я только узнаю про неудачу позже, когда работа парсера пытается вытащить данные из ведра, и ее там нет. Данные безопасны и звучат в каталоге, в который он должен был быть загружен, поэтому я могу сделать это вручную, но, скорее всего, этого не потребуется.

Я рад опубликовать 30-40 строк связанного кода, если это полезно, но задавался вопросом, столкнулся ли кто-нибудь с этим, и это звучало знакомо.

Какой-то великий день я вернусь к этой части конвейера и переписал его на python, чтобы избежать s3multiput, но у нас просто нет времени для этого.

Как я могу узнать, что здесь происходит с загрузкой s3multiput?

ответ

1

Во-первых, я бы попробовал обновить boto; фиксация для ветви разработки указывает на ведение журнала при неудачной попытке загрузки. Обратите внимание, что для этого потребуется вместо этого использовать s3put, так как s3multiput складывается в s3put.

+0

Хм. Спасибо за подсказку - я посмотрел репозиторий github, и некоторые из этих обновлений имеют большой смысл, но мы обычно стараемся оставаться на производстве/стабильных версиях, а 2.6.0 является последним из PyPI. Я еще не нашел упоминание о сбое входа в систему, просто регистрируясь, когда multipart недоступен из-за отсутствия зависимостей. Я буду продолжать смотреть, но можете ли вы указать мне на совершение расследования? Очень ценится. – Dave

+0

https://github.com/boto/boto/commit/9a50a7ede6b6c021825627b4c1d4218aa0712e84 Надеюсь, что это поможет. Что касается стабильного кода, в таком крупном проекте я бы не стал слишком беспокоиться об этом; компания, которой я занимаюсь фрилансом, недавно переключилась на версию разработки sleekxmpp, чтобы получить больше возможностей. Я бы рассмотрел отрасли развития этих проектов более стабильными, чем «стабильные» версии. – pydsigner

Смежные вопросы