Ich versuche, eine neue Metadaten-Informationen zu einem S3-Objekt hinzufügen, damit ich weiß, was sind alle Objekte, die ich bereits verarbeitet habe. Aber aus irgendeinem Grund sind die neuen Daten, die ich hinzugefügt habe, nicht persistent. Wenn ich das Programm verlasse, ist es nicht mehr da. Ich sehe das neue Feld in den alten Daten nicht "verarbeitet", aber ich sehe, dass es in den neuen Daten vorhanden ist. Ich erwarte, dass das neu hinzugefügte Metadatenfeld permanent auf dem Objekt präsentieren, aber es ist weg, nachdem ich das Programm beendenHinzufügen von Metadaten auf Amazon S3-Objekt ist nicht persistent
ObjectMetadata objMetaData = new ObjectMetadata();
objMetaData = s3.getObjectMetadata(bucketName,prefix);
Map<String, String> map = new HashMap<String, String>();
Map<String, String> newMap = new HashMap<String, String>();
map = objMetaData.getUserMetadata();
System.out.println("old Meta data is " + map.toString());
objMetaData.addUserMetadata("x-amz-meta-processed", "true");
newMap = objMetaData.getUserMetadata();
System.out.println("New processed data is" +newMap.toString());
Sie scheinen nur die Metadaten lokal zu ändern, also warum ist das eine Überraschung? – jonrsharpe
Muss ich putObject erneut ausführen, damit diese neuen Metadaten stattfinden? Ich dachte, addUserMetadata sollte die neuen Daten automatisch hinzufügen, ohne das gesamte Objekt erneut einfügen zu müssen, nur um einige Benutzermetadaten hinzuzufügen. Bitte klären Sie, ob ich das falsch verstehe. – user2593186
Nun, gibt es ein 's3.setObjectMetadata'? – jonrsharpe