2011-12-29 15 views
14

thể trùng lặp:
Notification of new S3 objectsNhận thông báo khi người dùng tải lên một thùng S3?

Chúng tôi đã có một ứng dụng lưu trữ dữ liệu người dùng trên S3. Một phần của ứng dụng xử lý các video tải lên được tách riêng khỏi phần xử lý dữ liệu. Trong một số trường hợp, người dùng sẽ có thể tải dữ liệu trực tiếp lên S3 mà không qua ứng dụng của chúng tôi (điều này có thể xảy ra nếu họ có tài khoản S3 của riêng họ và cung cấp cho chúng tôi thông tin xác thực).

Có thể nhận thông báo bất cứ khi nào nội dung của xô S3 thay đổi không? Nó sẽ được mát mẻ nếu bằng cách nào đó một tin nhắn có thể nhận được gửi nói rằng "tập tin này đã được thêm/cập nhật/xóa: foo".

Thiếu điều đó, có một số dấu thời gian ở đâu đó mà tôi có thể thăm dò ý kiến ​​cho biết lần cuối cùng nhóm được cập nhật không?

Nếu tôi không thể thực hiện một trong những điều này, thì lựa chọn duy nhất là thu thập toàn bộ nhóm và tìm kiếm các thay đổi. Điều này sẽ chậm và tốn kém.

Trả lời

17

Cập nhật 2014-11:

Như Alan Illing chỉ ra trong các ý kiến, AWS bây giờ hỗ trợ thông báo từ S3 để SNS, có thể được chuyển tiếp tự động để SQS: http://aws.amazon.com/blogs/aws/s3-event-notification/

S3 cũng có thể gửi thông báo cho AWS Lambda để chạy mã của riêng bạn trực tiếp.

phản ứng gốc mà dự đoán thông báo P3-> SNS:

Nếu Amazon hỗ trợ này, họ sẽ sử dụng SNS để gửi ra thông báo rằng một đối tượng đã được thêm vào một cái xô. Tuy nhiên, tại thời điểm này, sự kiện xô duy nhất được S3 và SNS hỗ trợ là thông báo cho bạn khi Amazon S3 phát hiện ra rằng nó đã mất tất cả các bản sao của đối tượng Reducedancy Storage (RRS) và không còn yêu cầu dịch vụ cho đối tượng đó nữa.

Đây là tài liệu về các sự kiện SNS hỗ trợ bởi S3:

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

Dựa trên cách mà các tài liệu được viết, có vẻ như Amazon có ý tưởng cho các sự kiện thông báo khác để thêm (như có lẽ ý tưởng của bạn để tìm ra khi các phím mới đã được thêm vào).

Vì nó không được hỗ trợ trực tiếp bởi Amazon, máy khách S3 tải đối tượng lên S3 sẽ cần kích hoạt thông báo, hoặc bạn sẽ cần thực hiện một số loại bỏ phiếu.

Thông báo sự kiện tùy chỉnh để tải lên S3 có thể được thực hiện bằng SNS nếu bạn muốn nhận các bản cập nhật gần thời gian thực để xử lý hoặc có thể thực hiện thông qua SQS nếu bạn muốn thông báo chồng chất và xử lý chúng của một hàng đợi theo tốc độ của riêng bạn.

Nếu bạn đang bỏ phiếu, bạn có thể giảm số lượng khóa bạn cần để yêu cầu bằng cách tải lên máy khách với tiền tố, "chưa xử lý/..." theo sau là khóa duy nhất. Phần mềm bỏ phiếu của bạn sau đó có thể truy vấn chỉ các khóa S3 bắt đầu bằng tiền tố đó.Khi nó đã sẵn sàng để xử lý, nó có thể thay đổi chìa khóa để "xử lý/..." và sau đó để "xử lý/..." hoặc bất cứ điều gì. Các đối tượng trong S3 hiện đang được đổi tên bởi các thao tác sao chép + xóa được thực hiện bởi S3.

+0

Đối với số lượng nhỏ các đối tượng, tiền tố của tên sẽ hoạt động tốt. Đối với khối lượng lớn các đối tượng, điều này thực sự sẽ làm chậm S3. S3 phân vùng nội bộ dữ liệu dựa trên tên nhóm/khóa đối tượng và các khóa có cùng tiền tố sẽ rất có thể sẽ kết thúc trong cùng một phân vùng. Đối với thông lượng tải lên cao, bạn cần giữ các khóa đối tượng thay đổi ở đầu chuỗi. Xem chi tiết này: http://aws.typepad.com/aws/2012/03/amazon-s3-performance-tips-tricks-seattle-hiring-event.html – dlaidlaw

+0

@dlaidlaw: Như được mô tả bởi Amazon, nó có thể dễ dàng xử lý các cụm trên 100 yêu cầu mỗi giây thậm chí không có phân phối tiền tố đặc biệt của các khóa. Nếu bạn đang xử lý hàng đợi đến nhanh hơn, bạn có thể chỉ cần sử dụng một nhóm "chưa được xử lý" thay vì tiền tố. Tuy nhiên, với tốc độ đó, bạn có thể sẽ sử dụng bộ vi xử lý song song, tại thời điểm đó, đề xuất có một danh sách các tệp chưa được xử lý được phân tích bị bỏ qua (làm thế nào để bạn biết chuỗi nào đang xử lý tệp nào?). –

+4

Với thông lượng rất cao, tôi viết một thông báo cho SQS chứa URI tới tệp trong S3. Nhiều luồng có thể xử lý hàng đợi SQS. Có, có phí trên bằng văn bản thông điệp SQS, nhưng nó là cần thiết, và phân phối trên tất cả các luồng gửi các tập tin đến S3. Sẽ tốt hơn nếu Amazon có một lá cờ để gửi một tin nhắn SNS khi tạo trong S3, sau đó bạn có thể đăng ký một hàng đợi SQS để phân phối tải trên các chủ đề, nhưng cho đến lúc đó bạn phải viết các tin nhắn của riêng bạn hoặc SNS hoặc SQS. – dlaidlaw

Các vấn đề liên quan