2017-02-23 30 views
9

Próbuję skopiować obiekty Amazon AWS S3 między dwa segmenty w dwóch różnych regionach za pomocą pakietu Amazon AWS PHP SDK v3. Byłby to jednorazowy proces, więc nie potrzebuję cross-region replication. Próbowałem użyć copyObject(), ale nie można określić regionu.Jak kopiować obiekty S3 między regionami za pomocą pakietu Amazon AWS PHP SDK?

$s3->copyObject(array(
    'Bucket'  => $targetBucket, 
    'Key'  => $targetKeyname, 
    'CopySource' => "{$sourceBucket}/{$sourceKeyname}", 
)); 

Źródło: http://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectUsingPHP.html

Odpowiedz

6

Nie trzeba określić obszary do tej operacji. Znajdzie region docelowy wiadra i go skopiuje.

Ale możesz mieć rację, ponieważ na AWS CLI istnieją atrybuty regionu źródłowego i regionu docelowego, które nie istnieją w PHP SDK. Aby wykonać to zadanie, wykonaj następujące czynności:

  1. Utwórz wiadro tymczasowe w regionie źródłowym.
  2. Utwórz wiadro w regionie docelowym.
  3. Skonfiguruj replikację z wiadra tymczasowego na docelową.
  4. Na wiadrze tymczasowej set expiration rule, dlatego pliki zostaną automatycznie usunięte po krótkim czasie z zasobnika tymczasowego.
  5. Skopiuj obiekty z zasobnika źródłowego do wiadra tymczasowego za pomocą pakietu PHP SDK.
  6. Wszystkie twoje obiekty zostaną również skopiowane do innego regionu.
  7. Możesz usunąć wiadro tymczasowe jeden dzień później.

Albo używać tylko CLI i użyć tego jednego polecenia:

aws s3 cp s3://my-source-bucket-in-us-west-2/ s3://my-target-bucket-in-us-east-1/ --recursive --source-region us-west-2 --region us-east-1 
2

innego regionu wiadro mogłoby być również inny rachunek. Co inni robili to kopiowanie z jednego zasobnika i zapisywanie danych tymczasowo lokalnie, a następnie przesyłanie do różnych wiaderek o różnych poświadczeniach. (jeśli masz dwa regionalne kubły z różnymi referencjami).

Najnowsza aktualizacja z narzędzia CLI umożliwia kopiowanie z zasobnika na wiadro, jeśli znajduje się ono pod tym samym kontem. Używanie czegoś, o czym wspomniałem: Çağatay Gürtürk.