Przenosić pliki bezpośrednio z jednego konta S3 na drugie?

Dość podstawowe pytanie, ale nie udało mi się znaleźć odpowiedzi. Za pomocą Transit mogę "przenosić" pliki z jednego wiadra S3 na jednym koncie AWS do innego wiadra S3 na innym koncie AWS, ale to, co tak naprawdę robi, to pobiera pliki z pierwszego, a następnie przesyła je do drugiego.

Czy istnieje sposób na przeniesienie plików bezpośrednio z jednego konta S3 na drugie bez pobierania ich pomiędzy?

Author: gak, 2011-04-01

10 answers

Jeśli szukasz gotowego rozwiązania, istnieje kilka rozwiązań, które mogą to zrobić. Bucket Explorer działa na komputerach Mac i Windows i może kopiować między kontami tak jak może Cloudberry S3 Explorer i S3 Browser ale są tylko Windows, więc może nie działać dla Ciebie.

Podejrzewam, że AWS console również może to zrobić z odpowiednią konfiguracją uprawnień, ale nie testowałem tego.

Możesz to zrobić również za pomocą AWS API tak długo, jak podałeś konto AWS, którego używasz uprawnienia zapisu do wiadra docelowego.

 22
Author: Geoff Appleford,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-02 14:01:48

Tak, jest sposób. I to dość proste, choć trudno go znaleźć. 8)

Załóżmy na przykład, że nazwa użytkownika pierwszego konta to [email protected] a po drugie to [email protected].

Otwórz AWS Management Console jako acc1. Przejdź do właściwości łyżki Amazon S3, a na karcie "Uprawnienia" kliknij "Dodaj więcej uprawnień". Następnie dodaj listę i uprawnienia widoku dla "uwierzytelnionych użytkowników".

Następnie w AWS IAM (jest dostępny z zakładek konsoli) z acc2 create użytkownik z pełnym dostępem do zasobnika S3 (aby być bardziej bezpiecznym, możesz ustawić dokładne uprawnienia, ale wolę utworzyć tymczasowego użytkownika do transferu, a następnie go usunąć).

Następnie możesz użyć s3cmd (używając poświadczeń nowo utworzonego użytkownika w acc2), aby zrobić coś takiego:

s3cmd cp s3://acc1_bucket/folder/ s3://acc2_bucket/folder --recursive

Wszystkie transfery będą wykonywane po stronie Amazona.

 123
Author: side2k,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-17 20:39:27

Użyj aws cli (użyłem instancji ubuntu 14 ec2) i po prostu uruchom następujące polecenie:

aws s3 sync s3://bucket1 s3://bucket2

Będziesz musiał podać dane konta dla jednego i mieć publiczny dostęp do zapisu lub publiczny dostęp do odczytu dla drugiego.

To zsynchronizuje dwa wiadra. Możesz użyć tego samego polecenia ponownie później, aby szybko zsynchronizować. Najlepsze jest to, że nie wymaga żadnej przepustowości (np. pliki nie przechodzą przez lokalny komputer).
 58
Author: Programster,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-02 12:25:10

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 lokalną maszynę i przesyłać do innego zasobnika.

 5
Author: Rose Perrone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:23

Na Mac OS X korzystałem z aplikacji Transmit firmy Panic. Otworzyłem jedno okno dla każdego konta S3(używając kluczy API i tajemnic). Mogłem następnie przeciągnąć z jednego wiadra w jednym oknie do drugiego wiadra w drugim oknie. nie trzeba najpierw pobierać plików lokalnie .

Andrew ma rację, Transmit pobiera pliki lokalnie, a następnie przesyła pliki.

 3
Author: One Giant Leap AB,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-05 13:48:05

Przenoszenie plików S3 z jednego konta na drugie

Rozważmy, że istnieją dwa konta Konto źródłowe i konto docelowe. I dwa wiadra source-bucket i destination bucket. Chcemy przenieść wszystkie pliki z source-bucket do destination-bucket. Możemy to zrobić w następujących krokach:

  1. aws configure
    • Skonfiguruj swoje konto docelowe za pomocą poświadczenia lub roli IAM.
  2. Utwórz politykę użytkownika dla użytkownika konta docelowego.
  3. Udostępnij użytkownikowi docelowemu do zasobnika source, modyfikując Zasady Source-bucket i dodając do niego zasady użytkownika konta docelowego. W ten sposób użytkownik docelowy będzie miał dostęp do source-bucket.
  4. aws s3 ls s3://source-bucket/
    • to sprawdzi, czy konto docelowe ma dostęp do source-bucket. Tylko dla potwierdzenia zrób to.
  5. aws s3 cp s3://source-bucket s3://destination-bucket --recursive
    • spowoduje skopiowanie source-bucket wszystkich plików do destination-bucket. Wszystkie pliki są kopiowane za pomocą --recursive flaga.
  6. aws s3 mv s3://source-bucket s3://destination-bucket --recursive
    • spowoduje przeniesienie wszystkich plików z source-bucket do destination-bucket.

Alternatywnie możesz użyć polecenia sync - aws s3 sync s3://source-bucket s3://detination-bucket

Dla lepszego wyjaśnienia kliknij link

 3
Author: Anand Tripathi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-17 13:35:59

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 na systemach Windows, Mac i Linux.

 2
Author: Gatorhall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-17 06:55:18

Możesz użyć Cyberduck (open source)

 2
Author: Marco Delavegua,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-27 12:39:19

Dla nowo utworzonych plików (nieistniejących obiektów), możesz skorzystać z nowej funkcjonalności AWS. Jest to replikacja międzyregionalna(pod "wersjonowanie" dla zasobnika S3). Możesz utworzyć zasadę, która pozwoli Ci replikować nowe obiekty do zasobnika na innym koncie.

Dla istniejących obiektów, nadal będziesz musiał kopiować obiekty za pomocą innej metody-chyba że AWS wprowadzi do tego natywną funkcjonalność w przyszłości.

 1
Author: curious_george,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-17 22:37:11

Można więc uruchomić następujące:

aws s3 mv (sync for keeping buckets in sync) s3://source-bucket s3://destination-bucket --recursive

  1. Dołącz Zasady bucket do zasobnika source na koncie Source.

  2. Dołącz Zasady AWS Identity and Access Management (IAM) do użytkownika lub roli na koncie docelowym.

  3. Użyj użytkownika lub roli IAM na koncie docelowym, aby wykonać ruch między kontami.

 0
Author: svikramjeet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-07 11:37:06