2016-07-29 10 views
0

Ich suche nach einer Möglichkeit, einen Zeitstempel in jede Datei einzufügen, die in einen S3-Bucket auf Amazon-Seite hochgeladen wird. Es gibt natürlich eine Option, diese Client-Seite vor dem Upload zu machen, aber ich denke nicht, dass dies so schön und sauber ist, als wenn ein Skript in dem Bucket selbst laufen würde, wenn eine neue Datei hochgeladen wird . Ich habe in den Unterlagen nichts gefunden.S3-Bucket-Skript zum Hinzufügen von Zeitstempel im Dateinamen beim Upload

+0

Sie kopieren möchten Zeitstempel als der Name der Datei hinzuzufügen, basierend auf Zeitstempel Oder möchten Sie den Metadaten der Datei einen Zeitstempel hinzufügen? – error2007s

+0

Die Idee ist, einen Zeitstempel als Präfix des Dateinamens hinzuzufügen, so dass jede Datei eindeutig ist, um das Überschreiben von Dateien zu vermeiden. – lucasnadalutti

+0

S3 hat bereits einen Mechanismus, um das Überschreiben zu vermeiden - [Objekt-Versionierung] (http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectVersioning.html) - die bei jedem Upload eine eindeutige Versions-ID zurückgibt. Was Sie vorschlagen, ist gruselige Action aus der Ferne - sobald Sie eine Datei hochladen, haben Sie absolut keine Ahnung, was ihr Objektschlüssel ist, weil es nicht mehr das ist, was Sie zum Hochladen verwendet haben. –

Antwort

2

Es gibt keine Fähigkeit in Amazon S3, um den Schlüssel (Dateiname) einer Datei basierend auf Upload-Zeit zu ändern.

Da Ihr Wunsch ist es, vermeiden Namen Konflikte, einige Möglichkeiten:

  • Verwenden Sie eine eindeutige GUID oder ein Zeitstempel die Datei zu benennen, wenn das Hochladen. Dies vermeidet Namenskonflikte.
  • Laden Sie die Datei auf Bucket A, dann eine Lambda-Funktion verwenden ausgelöst auf ObjectCreation das Objekt zu Bucket B mit einem eindeutigen Namen
0

Sie können mit einer Lambda-Funktion versuchen, die das ObjectCreated-Ereignis behandelt. Siehe this tutorial.

Nicht sicher, dass das funktioniert.

+0

Ich dachte darüber nach, aber das Problem ist, dass bereits ein Lambda diesem Bucket lauscht, der eine Funktion ausführen soll, die völlig unabhängig von der Umbenennung der Datei ist. Ich könnte natürlich einen separaten Bucket erstellen und ein Lambda anhören, nur um die Datei umzubenennen und die umbenannte Datei an den vorhandenen Bucket zu senden, aber das scheint zu ... – lucasnadalutti