Mam plik zawarty w kluczu w moim wiadrze S3. Chcę utworzyć nowy klucz, który będzie zawierał ten sam plik. Czy można to zrobić bez pobierania tego pliku? Szukam rozwiązania w Pythonie (a najlepiej w bibliotece).Jak sklonować klucz w Amazon S3 przy użyciu Pythona (i boto)?
Odpowiedz
S3 umożliwia kopiowanie obiektów według obiektów. Operacja CopyObject tworzy kopię obiektu po określeniu klucza i segmentu źródłowego obiektu oraz klucza i segmentu docelowego miejsca docelowego. Nie jestem pewien, czy Boto ma kompaktową implementację.
Przeglądając kod źródłowy boto, stwierdziłem, że obiekt Key ma metodę "copy". Dziękujemy za sugestie dotyczące operacji CopyObject.
Gdzie jest wiadro wiadro docelowy:
bucket.copy_key(new_key,source_bucket,source_key)
To faktycznie odczytuje klucz i umieszcza go w nowym wiadrze - co nie jest tym, czego potrzebujesz. Przepraszam. –
Nie wierzę, że to jest dokładne. To najlepsza odpowiedź IMO. Metoda 'copy_key' przekazuje nagłówek' x-amz-copy-source' w żądaniu PUT, które mówi S3, aby kopiował bezpośrednio z regionu do regionu, bez pobierania na twój komputer. – sergiopereira
Oto ich dokumenty: http://boto.cloudhackers.com/en/latest/ref/s3.html#boto.s3.bucket.Bucket.copy_key – creimers
Chociaż nikt nie zapytał, pomyślałem, że może to być istotne, aby pokazać jak to zrobić z simples3
:
>>> b.copy("my_bucket/file.txt", "file_copy.txt", acl="public")
Nie jestem pewien, co Boto robi to tutaj, ale warto zauważyć, że uprawnienia (ACL) będą , a nie kopiowane przez S3, zostanie ono zresetowane na "prywatne", jeśli nic innego nie zostanie określone. Aby skopiować listę ACL, musisz najpierw o nią poprosić.
I sekundę ten komentarz odnośnie uprawnień (po napotkaniu błędu) 'dest_bucket .copy_key (key.name, src_bucket_name, key.name, preserve_acl = True) ' – nsof
Należy zauważyć, że metoda "copy" obiektu Key ma parametr "preserve_acl" (domyślnie False), który skopiuje listę ACL źródła do obiektu docelowego.
from boto.s3.key import Key
#Get source key from bucket by name
source_key = source_bucket.get_key(source_key_name)
#Copy source key to a new bucket with a new key name (can be the same as source)
#Note: source_key is Key
source_key.copy(dest_bucket_name,dest_key_name)
#The signature of boto's Key class:
def copy(self, dst_bucket, dst_key, metadata=None,
reduced_redundancy=False, preserve_acl=False,
encrypt_key=False, validate_dst_bucket=True)
#set preserve_acl=True to copy the acl from the source key
- 1. Jak programowo uzyskać MD5 pliku Amazon S3 przy użyciu boto
- 2. Amazon S3 boto - jak usunąć folder?
- 3. S3 przy użyciu boto i SigV4 - brak parametru hosta
- 4. Jak mogę programowo sprawdzić uprawnienia Amazon S3 za pomocą boto?
- 5. Amazon S3 boto: Jak zmienić nazwę pliku w wiadrze?
- 6. Nie można ustawić uprawnień do plików w S3 przy użyciu boto i django
- 7. Usuwanie pliku z S3 przy użyciu narzędzia Django + Fineuploader + boto
- 8. Jak zamknąć połączenie Boto S3?
- 9. Jak usunąć wersję s3 z wiadra użyciu boto i pytona
- 10. Próba ustawienia metadanych w pliku Amazon S3 przy użyciu s3cmd
- 11. Zdecydowanie wpisany dostęp do Amazon S3 przy użyciu C#
- 12. Boto - przesyłanie plików do określonej lokalizacji na Amazon S3
- 13. git i Amazon s3
- 14. Boto s3 get_metadata
- 15. Dodawanie pliku do zasobnika na Amazon S3 przy użyciu C#
- 16. Jak uzyskać ostatnią modyfikację datetime obiektów S3 za pomocą boto?
- 17. Przesyłanie do Amazon S3 przy użyciu cURL/libcurl
- 18. Używanie Boto do łączenia się z S3 za pomocą Pythona
- 19. Put przedmiot do Amazon S3 przy użyciu .net asynchronicznie
- 20. Jak sklonować obiekt generatora Pythona?
- 21. Architektura Amazon S3
- 22. Jak wygenerować tymczasowy URL do przesłania pliku do Amazon S3 z biblioteką Boto?
- 23. Różnica między s3cmd, boto i AWS CLI
- 24. Angular.js i Amazon S3 - jak przesłać pliki?
- 25. Uzyskiwanie błędu podczas przesyłania plików z EC2 do S3 przy użyciu boto
- 26. Jak zamontować amazon s3 na amazon ec2
- 27. java: Używaj szyfrowania po stronie serwera w Amazon S3 przy użyciu VFS s3 wtyczki
- 28. Paperclip i Amazon S3 jak robić ścieżki?
- 29. Nieskończona pętla podczas przesyłania strumieniowego pliku .gz z S3 przy użyciu boto
- 30. Django StaticFiles i Amazon S3: jak wykrywać zmodyfikowane pliki?
Pomoc na metodzie egzemplarzu w module boto.s3.key: 'kopia (self, dst_bucket, dst_key metadane = None, reduced_redundancy = False, preserve_acl = False, encrypt_key = False)' metoda boto. s3.key.Key instance Skopiuj ten klucz do innego zasobnika. –