2015-09-04 9 views
5

Gibt es eine Möglichkeit, wie ich benachrichtigt werden kann, wenn ein Upload in S3 Bucket abgeschlossen ist? Die Voraussetzung ist, dass ich den Nutzern Links bereitstellen muss, nachdem das Hochladen eines Videos im Bucket abgeschlossen ist. Standardmäßig stelle ich jetzt einen Link nach 30 Minuten Start des Videos zur Verfügung, egal ob das Video 5 Minuten zum Hochladen benötigt oder 40 Minuten. Gibt es einen Weg wie jede API, die Informationen liefert, dass der Upload abgeschlossen wurde?Benachrichtigung erhalten, wenn der Upload in Amazon S3-Bucket abgeschlossen ist

Antwort

0

Es gibt keine direkte Methode, die erkennen kann, ob der Upload in S3-Bucket abgeschlossen ist oder nicht. Sie können eine einfache Sache tun, die ich nach viel Forschung gefolgt habe und es funktioniert richtig.

Folgen Sie dieser link und lesen Sie die Größe der Datei nach etwa 30 Sekunden oder nach Ihrer Anforderung, wenn die Dateigröße nicht für zwei gleichzeitige Messungen geändert hat, überprüfen Sie erneut die Größe für Sicherheit, weil es aufgrund von Netzwerküberlastung sein könnte Die Größe hat sich möglicherweise für zwei gleichzeitige Messungen nicht geändert.

0

Sie können Amazon Lambda verwenden, um eine Nachricht an Amazon SNS zu senden (oder Sie auf andere Weise zu benachrichtigen), wenn eine Datei in S3 hochgeladen wird.

  1. Richten Sie einen S3-Trigger für Ihre Lambda-Funktion ein. Sehen Sie dieses Tutorial: http://docs.aws.amazon.com/lambda/latest/dg/walkthrough-s3-events-adminuser.html

  2. Innerhalb Ihrer Lambda-Funktion, senden Sie Ihre Benachrichtigung. Sie können SNS, SES, SQS, etc. verwenden

+0

Ich kann feststellen, dass eine neue Datei hochgeladen wird, aber ich möchte eine Benachrichtigung, wenn der Upload abgeschlossen und nicht gestartet ist. –

+0

Kann die S3-Benachrichtigung nicht direkt an SNS gesendet werden, ohne Lambda durchlaufen zu müssen? –

+0

@asusgates das Lambda wird ausgelöst, wenn die Datei vollständig hochgeladen wurde. –

6

Benachrichtigungen können in Amazon S3 ausgelöst werden, wenn eine der folgenden Voraussetzungen erfüllt sind:

  • s3:ObjectCreated:*
  • s3:ObjectCreated:Put
  • s3:ObjectCreated:Post
  • s3:ObjectCreated:Copy
  • s3:ObjectCreated:CompleteMultipartUpload
  • s3:ObjectRemoved:*
  • s3:ObjectRemoved:Delete
  • s3:ObjectRemoved:DeleteMarkerCreated
  • s3:ReducedRedundancyLostObject

Benachrichtigungen über drei Ziele gesendet werden:

  • Amazon Simple Notification Service (SNS), die in-turn kann Benachrichtigungen per E-Mail senden, HT TP/S Endpunkt, SMS, mobile Push-Benachrichtigung
  • Amazon Simple Queuing Service (SQS)
  • Amazon Lambda (zur Zeit nicht in allen Regionen verfügbar)

See: Configuring Amazon S3 Event Notifications

Die am besten geeignete Wahl hängt von Ihrer Programmiervorliebe ab und davon, wie Ihre App geschrieben ist:

  • Verwenden SNS auf einen HTTP-Endpunkt schieben einige Code in der App
  • schreiben einige Code auslösen periodisch eine SQS-Warteschlange
  • Schreibe eine Lambda-Funktion in Node.js oder Java

Einmal ausgelöst zu überprüfen , Ihr Code müsste dann identifizieren, wer das Video hochgeladen hat, ihre Benutzerdetails abrufen und ihnen dann eine E-Mail-Benachrichtigung senden.Dies wäre am einfachsten, wenn Sie den Schlüssel (Dateiname) des hochgeladenen Objekts steuern, da dies dazu beiträgt, den Benutzer zu identifizieren, der benachrichtigt werden soll.

Verwandte Themen