2

そこで、S3 をイメージ ストアとして使用します。イメージは、さまざまなソフトウェアを含むバケットに常にアップロードされます。

また、S3 で画像のギャラリーを閲覧できるようにする Rails アプリも作成していますが、パフォーマンスの問題のため、画像に関する情報のコピーをローカル データベースに保持する必要があるため、いつでも S3 の API に接続する必要はありません。誰かがギャラリーを見ています。

データベースに情報がないS3の新しいオブジェクトの通知を受け取るための最良の方法は何ですか?

すべての S3 オブジェクトのリストを常にフェッチし、持っていないオブジェクトを登録するワーカーを作成することを考えましたが、S3 には API リクエストごとに 1000 オブジェクトの制限があり、 API ドキュメントで指定する方法を見つけることができませんでした。すべてのオブジェクトがフェッチされるまで、次のリクエストのオフセット。

誰にもアイデアがありますか?

PS私はこのgemを使ってS3に接続しています

4

1 に答える 1

3

こちらの回答とS3 ドキュメントに記載されているように、S3 は新しいファイルを S3 にアップロードした後の通知を許可しません。ポーリングを使用すると、遅かれ早かれいくつかの制限に達します。

別のアプローチを試してみます。アップロード ソフトウェアに移動し、そこに通知を追加します。たとえば、新しいアップロードが行われていることを SNS に通知できます。この SNS キューをサブスクライブしてから、サーバーでバックグラウンド タスクを実行し、データベースに必要な情報を入力できます。

ただし、ポーリング方法を使用する場合はMarker、リンクしたドキュメント ページの結果オブジェクトの属性を確認してください。すべてのリクエストはマーカーを返します。このマーカーを次のリクエストに与えると、最初のクエリでは利用できなかった次のオブジェクトが取得されます。

于 2012-12-14T07:54:49.793 に答える