2011-12-29 13 views
14

Olası Çoğalt: Biz S3 üzerinde kullanıcı verilerini depolayan bir uygulama var
Notification of new S3 objectsKullanıcı bir S3 ürün grubuna yüklendiğinde bildirim alın.

. Uygulamanızın yüklemeleri işleyen kısmı, verileri işleyen kısımdan ayrıştırılır. Bazı durumlarda, kullanıcı, uygulamamızdan hiçbir şekilde geçmeden doğrudan S3'e veri yükleyebilir (bu, kendi S3 hesaplarına sahipse ve bize kimlik bilgilerini sağladıysa olabilir).

S3 kovası içeriği değiştiğinde bildirim almak mümkün mü? Bir şekilde "bu dosya eklendi/güncellendi/silindi: foo" yazan bir mesaj gönderilebilirse harika olurdu.

Bunun bir sonucu olarak, anketin en son ne zaman güncelleştirileceğini anlayabileceğim bir zaman damgası var mı?

Eğer bunlardan hiçbirini yapamazsam, o zaman tek seçenek tüm kepçeyi taramak ve değişiklikleri aramaktır. Bu yavaş ve pahalı olacak.

cevap

17

Güncelleme 2014-11: http://aws.amazon.com/blogs/aws/s3-event-notification/

S3 da gönderebilir

: Alan Illing yorumların işaret ettiği gibi

, AWS şimdi SQS'in otomatik iletilebilir SNS için S3 bildirimleri destekler AWS Lambda'ya doğrudan kendi kodunuzu çalıştırmak için bildirimler. S3-> SNS bildirimleri tahmin

Orjinal tepkisi:

Amazon bu desteklenen, bunlar bir nesne bir kova eklendi bildirimleri göndermek için SNS kullanırsınız. Bununla birlikte, şu anda S3 ve SNS tarafından desteklenen tek kepçe olayı, Amazon S3'ün Azaltılmış Artıklık Depolama (RRS) nesnesinin tüm kopyalarını kaybettiğini algıladığında ve artık bu nesneye yönelik hizmet isteklerini kaldıramayacağı zaman size bildirmektir. Amazon diğer bildirim olayları eklemek için fikirler var gibi belgeler yazılır bu şekilde dayanarak

http://docs.amazonwebservices.com/AmazonS3/latest/dev/NotificationHowTo.html

, görünüşe: Burada

S3 tarafından desteklenen SNS olayları belgeler var (belki de yeni anahtarların ne zaman eklendiğini bulma fikriniz gibi). Doğrudan Amazon tarafından desteklenmediği göz önüne alındığında, nesneyi S3'e yükleyen S3 istemcisinin bildirimi tetiklemesi gerekeceği veya bir tür yoklama yapmanız gerekeceği belirtilmektedir.

S3'e yapılan yüklemeler için özel etkinlik bildirimi, işleme için neredeyse gerçek zamanlı güncellemeler almak isterseniz SNS kullanılarak yapılabilir veya bildirimlerin yığılmasına ve işlenmesini sağlamak isterseniz SQS aracılığıyla yapılabilir kendi hızınızda bir sıra. Eğer yoklama iseniz

, size diyelim ki, bir ön ekiyle istemci yükleme sağlayarak istemeniz gerekir tuş sayısını azaltabilir "işlenmemiş/..." benzersiz bir anahtar izledi. Yoklama yazılımınız daha sonra bu önekle başlayan S3 tuşlarını sorgulayabilir.İşleme hazır olduğunda, anahtarı "işleme/..." ve sonra "işlenmiş/..." ya da her neyse değiştirebilir. S3'teki nesneler, S3 tarafından gerçekleştirilen kopyalama + sil işlemleri ile yeniden adlandırılmıştır.

+0

Daha küçük hacimli nesneler için, adın ön eki düzgün çalışacaktır. Büyük hacimli nesneler için, bu aslında S3'ü yavaşlatır. S3, veriyi kova adı/nesne anahtarına göre dahili olarak bölümlere ayırır ve aynı önek içeren anahtarlar büyük olasılıkla aynı bölüm içinde olur. Yüksek yükleme kapasitesi için, nesne tuşlarının dizenin başında değiştirilmesini sağlamanız gerekir. Ayrıntılar için bakınız: http://aws.typepad.com/aws/2012/03/amazon-s3-performance-tips-tricks-seattle-hiring-event.html – dlaidlaw

+0

@dlaidlaw: Amazon tarafından açıklandığı gibi, kolayca Tuşların özel önek dağıtımı olmadan bile saniyede 100'den fazla istek patlaması. Gelen sıranızı bundan daha hızlı işliyorsanız, önek yerine "işlenmemiş" bir kepçe kullanabilirsiniz. Bununla birlikte, bu oranda büyük olasılıkla paralel işlemciler kullanacaksınız, bu noktada, incelenen işlenmemiş dosyaların tek bir listesini (öneriyi hangi dosyada işlediğini nereden biliyorsunuz?) Bulunmasını öneriyoruz. –

+4

Çok yüksek verim için SQS'ye dosyaya SQS içeren bir mesaj yazarım. Birden çok iş parçacığı SQS sırasını işleyebilir. Evet, SQS mesajının yazılı olduğu ek yük var, ancak gerekli ve S3'e dosya gönderen tüm iş parçacıklarına dağıtılıyor. Amazon'un S3'te bir SNS mesajı oluşturmak için bir bayrağı olması çok daha iyi olurdu, bu da yükü iş parçacıkları boyunca dağıtmak için bir SQS sırasına abone olabilirsiniz, ancak o zamana kadar kendi mesajlarınızı SNS'ye veya SQS. – dlaidlaw

İlgili konular