2012-11-19 11 views
8

Ich arbeite derzeit mit Amazon S3.Gibt es eine Möglichkeit,() in Amazon S3 zu berühren?

Ich schreibe ein Programm, das die modifizierten Daten überprüfen.

Was ich brauche, ist eine Lösung, um die modifizierten Daten zu bearbeiten.

Ich könnte alle Dateien loopen und speichern, wie sie sind, aber das klingt wie eine schlechte Lösung.

In PHP gibt es diese tolle Funktion touch().

Kennt jemand eine Lösung oder hat das gleiche Problem? Lass es mich wissen, bitte.

Antwort

5

Sie können dasselbe über eine copy object Anfrage erreichen, indem Sie die CopySource als den Zielschlüssel angeben.

Im Wesentlichen wird dies eine PUT Object - COPY Anfrage an S3 mit der entsprechenden Quelle und Ziel Bucket/Schlüssel ausgeben.

+0

Und wissen Sie, was genau das tut? Wird für jede Datei eine GET- und eine PUT-Anforderung ausgelöst? –

+0

Bearbeitete meine Antwort, um diese Info einzuschließen. – tkotisis

+0

Perfekt. Vielen Dank! –

13

Als Antwort auf @Daniel Golden Kommentar auf @ Tkotisis Antwort. Es sieht so aus, als ob zumindest die AWS CLI-Tools es nicht erlauben, ein Objekt auf sich selbst zu kopieren. Sie können jedoch eine Kopie durch Aktualisieren der Metadaten "erzwingen".

$ aws s3 cp --metadata '{"touched":"now"}' s3://path/to/object s3://path/to/object 

Dies erschafft das Objekt (Downloads an den Anrufer und reuploads es) seinen Inhalt, Eigentümer und Metadaten zu ersetzen. Dies löst auch alle angehängten Lambda-Ereignisse aus.