2011-11-02 13 views
26

多くのクライアントがs3にアップロードするシナリオがあります。新しいS3オブジェクトの通知

  • 新しいファイルがあることを知る最良の方法はありますか?
  • 数秒前にバケットをポーリングするのは現実的/良いアイデアですか?

答えて

25

UPDATE:

2014年11月以来、S3は、以下のイベント通知をサポートしています。

  • s3:ObjectCreated:Put - オブジェクトは、HTTPのPUT操作によって作成されました。
  • s3:ObjectCreated:Post - HTTP POST操作でオブジェクトが作成されました。
  • s3:ObjectCreated:Copy - オブジェクトがS3コピー操作を作成しました。
  • s3:ObjectCreated:CompleteMultipartUpload - S3マルチパートアップロードの完了によってオブジェクトが作成されました。
  • s3:ObjectCreated:* - オブジェクトは、上記のイベントタイプの1つ、または今後追加される同様のオブジェクト作成イベントによって作成されました。
  • s3:ReducedRedundancyObjectLost - Redundancy Redundancyで保存されたS3オブジェクトが失われました。

これらの通知はAmazon SNSSQSまたはに発行することができます。これらの新しい通知の詳細については、Alan's answerにリンクされているブログ投稿をご覧ください。

オリジナル回答:

Amazon S3は所定の位置にバケット通知システムを持っていますが、それはS3が、何のための通知をサポートしていません:ReducedRedundancyLostObjectイベント(そのAPIでGETバケット通知セクションを参照してください)。

現在、新しいオブジェクトをチェックする唯一の方法は、あらかじめ設定された時間間隔でバケットをポーリングするか、(おそらくAmazon SNSベースの)アップロードクライアントで独自の通知ロジックを構築することです。

11

プッシュ通知は、現在S3に組み込まれています:

http://aws.amazon.com/blogs/aws/s3-event-notification/

オブジェクトがPUTやPOSTを介して作成されるか、マルチパートアップロードが完了したら、あなたはSQSやSNSに通知を送信することができます。

0

最近、AWSラムダサービスが最適な選択肢となっています。 node.js javascript、java、Pythonのいずれかを使用してLambdaを書くことができます(おそらく、より多くのオプションが追加されるでしょう)。 ラムダサービスでは、ファイルアップロードなどのS3からのイベントに応答する関数を記述できます。費用効果が高く、スケーラブルで使いやすい。

関連する問題