Comment déplacer le compartiment S3 vers un emplacement différent

20

Nous utilisons S3 pour stocker des millions d'entrées dans notre application Web, nous déplaçons maintenant le tout vers EC2, les serveurs de l'UE, et nous voulons également déplacer ces données S3 vers l'UE. Mais le compartiment que nous utilisons est aux États-Unis, et il ne semble pas y avoir d'outil pour déplacer le contenu entier du compartiment vers un autre compartiment.

Il y a également un problème sur la façon de synchroniser les données plus tard lorsque nous basculons vers le compartiment UE, les données qui seront créées pendant la migration.

skrat
la source

Réponses:

18

La nouvelle AWS CLI officielle prend nativement en charge la plupart des fonctionnalités de 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
UN B
la source
Où pouvez-vous trouver une liste de noms de régions?
Bart
Vous pouvez trouver les régions S3 ici: docs.aws.amazon.com/general/latest/gr/rande.html#s3_region Celles-ci sont presque identiques aux régions EC2 dont vous provenezaws ec2 describe-regions , mais us-east-1sont également connues sous le nom de norme américaine pour S3 et sont quelque peu différent pour des raisons historiques.
AB
5

Je suppose que vous pouvez exécuter:

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

Il doit le copier directement.

Alexey
la source
CLI dit: "commande introuvable"
bart
3

Je ne connais pas de solution packagée pour ce faire, mais il s'agit essentiellement d'une LISTE de bucket, puis de copier PUT chaque objet du bucket américain vers le bucket EU. L'API PUT-copy prend en charge "if-modified-since" et "if-none-match", vous pouvez donc l'exécuter de manière répétée sans effort de duplication: http://docs.amazonwebservices.com/AmazonS3/2006-03-01/ API / index.html? RESTObjectCOPY.html

Pour une migration en direct, je suggérerais l'approche suivante:

  1. Première étape facultative: si vous avez une énorme quantité de données à migrer, envisagez d'utiliser AWS Import / Export pour capturer le premier instantané des données sur un appareil physique aux États-Unis et les expédier physiquement vers l'UE. Cela peut vous faire économiser temps et argent.
    • Configurez un script pour migrer les données des États-Unis vers l'UE en utilisant la correspondance if-modified-since ou if-none-comme décrit ci-dessus. Faites en sorte qu'il soit suffisamment intelligent pour ne pas encombrer de nouvelles données de l'UE avec des données américaines périmées (une fois que vous aurez atteint l'étape 5 ci-dessous). Exécutez-le en continu en boucle jusqu'à ce que les deux compartiments soient à peu près dans le même état.
    • Modifiez votre application Web pour mettre des données à la fois vers les compartiments américains et européens, tout en continuant à obtenir des données exclusivement aux États-Unis.
    • Continuez à exécuter votre script de migration jusqu'à ce que vous soyez sûr que les compartiments sont exactement dans le même état (ou aussi près que possible, étant donné la cohérence éventuelle).
    • Modifiez à nouveau l'application Web pour obtenir des données exclusivement à partir du compartiment UE.
    • Vous pouvez maintenant désactiver votre script de migration.
    • Recherchez d'éventuelles anomalies de cohérence et nettoyez-les.
    • Modifiez l'application Web pour arrêter le transfert des données vers le compartiment américain.
    • SUPPRIMEZ tout dans le seau américain.

Vous souhaiterez peut-être utiliser le stockage à redondance réduite S3 sur votre compartiment UE pendant la migration pour obtenir des taux de données moins chers et des temps de réponse plus rapides, car les données ne sont qu'un double des données américaines.

user44700
la source
0

J'ai fait pas mal de travail avec S3 et je n'ai jamais rencontré d'outil qui le ferait nativement. Cependant, il ne serait pas si difficile d'utiliser quelques scripts de synchronisation s3cmd-sync pour synchroniser deux compartiments .

EEAA
la source
oui, cela fonctionnerait, mais nous obligerait à tout télécharger localement, tandis que l'API S3 prend en charge le déplacement / copie des entrées sans les télécharger.
skrat