Jak przenieść wiadro S3 w inne miejsce

20

Używamy S3 do przechowywania milionów wpisów w naszej aplikacji internetowej, teraz przenosimy całość na EC2, serwery UE, a także chcemy przenieść te dane S3 do UE. Ale wiadro, którego używamy, znajduje się w USA i wydaje się, że nie ma narzędzia do przenoszenia całej zawartości wiadra do innego wiadra.

Istnieje również problem z synchronizacją danych później, gdy przejdziemy do segmentu EU, czyli danych, które zostaną utworzone w międzyczasie podczas migracji.

skrat
źródło

Odpowiedzi:

18

Nowy oficjalny interfejs AWS CLI natywnie obsługuje większość funkcji s3cmd.

http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html

aws s3 sync s3://oldbucket s3://newbucket --source-region us-west-1 --region us-west-2
AB
źródło
Gdzie można znaleźć listę nazw regionów?
bart
Regiony S3 można znaleźć tutaj: docs.aws.amazon.com/general/latest/gr/rande.html#s3_region Są one prawie identyczne z regionami EC2, które otrzymujesz aws ec2 describe-regions, ale us-east-1są również znane jako US Standard dla S3 i są nieco inny z powodów historycznych.
AB
5

Myślę, że możesz uruchomić:

s3cmd --recursive cp s3://oldbucket/ s3://newbucket

Powinien to skopiować bezpośrednio.

Alexey
źródło
CLI mówi: „polecenie nie znaleziono”
bart
3

Nie znam takiego rozwiązania, ale jest to po prostu LISTA segmentu, a następnie PUT-kopiowanie każdego obiektu z segmentu US do segmentu EU. Interfejs API PUT-copy obsługuje „jeśli-zmodyfikowano-od” i „jeśli-nie pasuje”, dzięki czemu można go uruchamiać wielokrotnie bez powielania: http://docs.amazonwebservices.com/AmazonS3/2006-03-01/ API / index.html? RESTObjectCOPY.html

W przypadku migracji na żywo sugerowałbym następujące podejście:

  1. Opcjonalny pierwszy krok: jeśli masz dużo danych do migracji, rozważ użycie importu / eksportu AWS, aby przechwycić pierwszą migawkę danych na urządzeniu fizycznym w USA i wysłać je fizycznie do UE. Może to zaoszczędzić czas i pieniądze.
    • Skonfiguruj skrypt, aby migrować dane z USA do UE za pomocą metody if-modyfikacji-od lub jeśli-brak, jak opisano powyżej. Spraw, aby był wystarczająco inteligentny, aby nie blokować świeżych danych UE nieaktualnymi danymi z USA (gdy przejdziesz do kroku 5 poniżej). Uruchom go w sposób ciągły w pętli, aż dwa wiadra będą w mniej więcej tym samym stanie.
    • Zmodyfikuj aplikację internetową tak, aby dane PUT były jednocześnie przesyłane zarówno do USA, jak i do UE, a jednocześnie GET danych wyłącznie z USA.
    • Kontynuuj uruchamianie skryptu migracji, dopóki nie upewnisz się, że segmenty są dokładnie w tym samym stanie (lub znajdują się tak blisko, jak to możliwe, pod warunkiem ostatecznej spójności).
    • Zmodyfikuj ponownie aplikację internetową, aby uzyskać dane wyłącznie z segmentu UE.
    • Możesz teraz wyłączyć skrypt migracji.
    • Poszukaj ewentualnych anomalii spójności i usuń je.
    • Zmodyfikuj aplikację internetową, aby zatrzymać PUTting danych do amerykańskiego segmentu.
    • USUŃ wszystko z amerykańskiego segmentu.

Podczas migracji możesz chcieć użyć S3 Reduced Redundancy Storage w swoim segmencie UE, aby uzyskać tańsze prędkości transmisji danych i krótszy czas reakcji, ponieważ dane są tylko duplikatem danych z USA.

użytkownik44700
źródło
0

Wykonałem sporo pracy z S3 i nigdy nie spotkałem narzędzia, które wykonałoby to natywnie. Jednak użycie kilku skryptów synchronizacyjnych s3cmd-sync nie byłoby trudne do utrzymania synchronizacji dwóch segmentów.

EEAA
źródło
tak, to by działało, ale wymaga od nas pobrania wszystkiego lokalnie, podczas gdy S3 API obsługuje przenoszenie / kopiowanie wpisów bez ich pobierania.
skrat