3

1 つ (または複数) の AWS インスタンスでデータを収集し、1 時間ごとにデータを S3 にアップロードして、解析とさらなるアクションのために分離されたプロセスによって取得されるプロセスを自動化しようとしています。最初のステップとして、boto ユーティリティ s3multiput を呼び出す crontab 起動シェル スクリプト (Ubuntu 12.04 LTS で実行) を作成しました。

ほとんどの場合、これは正常に機能しますが、非常にまれに (おそらく週に 1 回)、ファイルが s3 バケットに表示されず、その理由を追跡するためにスローされたエラーや例外が表示されません。

boto 2.6.0 に含まれている s3multiput ユーティリティを使用しています。Python 2.7.3 は、インスタンスのデフォルトの Python です。boto に AWS クレデンシャルを提供するために、インスタンスに IAM ロールが割り当てられています。

s3multiput を呼び出すラッパーを呼び出すスクリプトを呼び出す crontab があります。-d 1s3multiput 呼び出しにフラグを含め、 crontab ジョブのすべての出力をリダイレクトしまし2>&1たが、データが欠落している時間のレポートは、それぞれ成功した 1 時間前と 1 時間後のレポートのように見えます。

したがって、99% の確率でこれは機能しますが、失敗した場合はその理由がわかりません。また、どこを見ればよいかわかりません。後でパーサー ジョブがバケットからデータを取得しようとして、データがそこにない場合にのみ、失敗について知ることができます。データは安全で、アップロード元のディレクトリに保存されているので、手動で行うことはできますが、そうする必要はありません。

役立つ場合は、関連するコードの約 30 ~ 40 行を投稿できますが、他の誰かがこれに遭遇したことがあり、おなじみのように聞こえたのではないかと思いました。

ある壮大な日に、パイプラインのこの部分に戻って、Python で書き直して s3multiput を回避しますが、まだそのための開発時間がありません。

ここで s3multiput アップロードの問題を調査するにはどうすればよいですか?

4

1 に答える 1

1

まず、boto を更新してみます。開発ブランチへのコミットでは、マルチパート アップロードが失敗したときのログ記録について言及しています。に折りたたまれているためs3put、代わりに使用する必要があることに注意してください。s3multiputs3put

于 2012-11-02T22:33:57.703 に答える