Dość podstawowe pytanie, ale nie udało mi się znaleźć odpowiedzi. Używając Transit mogę "przenosić" pliki z jednego zasobnika S3 na jednym koncie AWS do innego zasobnika S3 na innym koncie AWS, ale to, co faktycznie robi, to pobieranie plików z pierwszego, a następnie przesyłanie ich do drugiego.
Czy istnieje sposób na przeniesienie plików bezpośrednio z jednego konta S3 na drugie bez pobierania ich pomiędzy nimi?
źródło
Tak, jest sposób. Jest to dość proste, choć trudno je znaleźć. 8)
Na przykład załóżmy, że pierwsza nazwa użytkownika konta to [email protected], a druga to [email protected].
Otwórz konsolę zarządzania AWS jako acc1. Przejdź do właściwości zasobnika Amazon S3 i na karcie „Uprawnienia” kliknij „Dodaj więcej uprawnień”. Następnie dodaj uprawnienia do listy i wyświetlania dla „uwierzytelnionych użytkowników”.
Następnie w AWS IAM (jest dostępne z poziomu zakładek konsoli) acc2 stwórz użytkownika z pełnym dostępem do wiadra S3 (aby być bezpieczniejszym, możesz ustawić dokładne uprawnienia, ale ja wolę stworzyć tymczasowego użytkownika do transferu a następnie usuń go).
Następnie możesz użyć s3cmd (używając poświadczeń nowo utworzonego użytkownika w acc2), aby zrobić coś takiego:
Cały transfer zostanie wykonany po stronie Amazon.
źródło
rsync
Możesz także użyć do synchronizowania całych zasobników à las3cmd sync s3://acc1_bucket s3://acc2_bucket
.s3cmd
może być również zainstalowany z homebrew,--acl-public
przeciwnym razie, wszystkie pliki są prywatne (przynajmniej było to dla mnie, kiedy wykonałem polecenie). przy tak wielu plikach prywatnych musiałem dodać politykę do wiadra, aby ponownie je wszystkie upublicznićUżyj aws cli (użyłem instancji ubuntu 14 ec2) i po prostu uruchom następujące polecenie:
Będziesz musiał określić szczegóły konta dla jednego i mieć publiczny dostęp do zapisu lub publiczny dostęp do odczytu dla drugiego.
Spowoduje to zsynchronizowanie dwóch zasobników. Możesz użyć tego samego polecenia później, aby szybko zsynchronizować. Najlepsze jest to, że nie wymaga żadnej przepustowości (np. Pliki nie przechodzą przez lokalny komputer).
źródło
aws s3 sync
wydaje się działać o rząd wielkości szybciej niżs3cmd cp
.--grants
opcji. Więcej informacji w dokumentacji: docs.aws.amazon.com/cli/latest/reference/s3/sync.html--grants
. Nauczyłem się tego po skopiowaniu mnóstwa danych, a następnie musiałem powtórzyć synchronizację do nowego zasobnika.--grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
ustawia uprawnienia do odczytu dla użytkowników publicznych.s3cmd
w moim przypadku, a także jest w stanie zsynchronizować pliki zmian zamiast ponownego kopiowania wszystkiego, jeśli zajdzie potrzeba ponownego uruchomienia polecenia w przyszłości - znacznie lepiej!boto działa dobrze. Zobacz ten wątek . Używając boto, kopiujesz obiekty bezpośrednio z jednego zasobnika do drugiego, zamiast pobierać je na komputer lokalny i przesyłać do innego zasobnika.
źródło
W systemie Mac OS XI użyłem aplikacji Transmit from Panic. Otworzyłem jedno okno dla każdego konta S3 (używając kluczy API i sekretów). Mogłem wtedy przeciągnąć z jednego wiadra w jednym oknie do drugiego w drugim oknie.
Nie musisz najpierw pobierać plików lokalnie.Andrew ma rację, Transmit pobiera pliki lokalnie, a następnie przesyła je.
źródło
Przenieś pliki S3 z jednego konta na inne konto
Rozważmy, że istnieją dwa konta, konto źródłowe i konto docelowe. I dwa wiadra
source-bucket
idestination bucket
. Chcemy przenieść wszystkie pliki zsource-bucket
dodestination-bucket
. Możemy to zrobić wykonując następujące kroki:aws configure
aws s3 ls s3://source-bucket/
aws s3 cp s3://source-bucket s3://destination-bucket --recursive
aws s3 mv s3://source-bucket s3://destination-bucket --recursive
Alternatywnie możesz użyć polecenia synchronizacji -
aws s3 sync s3://source-bucket s3://detination-bucket
Aby uzyskać lepsze wyjaśnienie, kliknij łącze
źródło
CrossFTP może kopiować pliki S3 bezpośrednio z jednego zasobnika do drugiego bez ich pobierania. Jest to klient GUI S3, który działa w systemach Windows, Mac i Linux.
źródło
Możesz używać Cyberduck (open source)
źródło
W przypadku nowo utworzonych plików (NIE istniejących obiektów) możesz skorzystać z nowej funkcjonalności AWS. Jest to replikacja między regionami (w sekcji „Wersjonowanie” zasobnika S3). Możesz utworzyć politykę, która pozwoli ci replikować nowe obiekty do zasobnika na innym koncie.
W przypadku istniejących obiektów nadal będziesz musiał skopiować swoje obiekty przy użyciu innej metody - chyba że AWS wprowadzi natywną funkcjonalność do tego w przyszłości.
źródło
Można to zrobić wykonując następujące czynności:
aws s3 mv (sync for keeping buckets in sync) s3://source-bucket s3://destination-bucket --recursive
Dołącz zasadę zasobnika do zasobnika źródłowego na koncie źródłowym.
Dołącz zasady AWS Identity and Access Management (IAM) do użytkownika lub roli na koncie docelowym.
Użyj użytkownika IAM lub roli na koncie docelowym, aby wykonać przeniesienie między kontami.
źródło