Oto przykładowy kod kopiowania klucza S3. Istnieje wiele powodów, dla których możesz chcieć to zrobić, jednym z nich jest aktualizacja kluczowych metadanych. I choć wydaje się, że jest to powszechnie akceptowane rozwiązanie, istnieje poważny problem. Problem polega na tym, że kiedy robię przykład poniżej, faktycznie tracę mój Content-Type, który domyślnie powraca do "application/octet-stream" (niezbyt użyteczne, jeśli próbuje się wyświetlać obrazy sieciowe).boto.s3: copy() na kluczowym obiekcie traci metadane "Content-Type"
# Get bucket
conn = S3Connection(self._aws_key, self._aws_secret)
bucket = conn.get_bucket(self._aws_bucket)
# Create key
k = Key(bucket)
k.key = key
# Copy old key
k.metadata.update({ meta_key: meta_value })
k2 = k.copy(k.bucket.name, k.name, k.metadata, preserve_acl=True)
k = k2
Wszelkie pomysły? Dzięki.
'copy' zwraca tylko płytka kopia obiektu. Spróbuj użyć 'deepcopy'. –
@Joel: boto nie zapewnia głębi. –