Déplacer des fichiers directement d’un compte S3 à un autre?

Jolie question de base mais je n’ai pas pu trouver de réponse. Utiliser Transit Je peux “déplacer” des fichiers d’un compartiment S3 sur un compte AWS vers un autre compartiment S3 sur un autre compte AWS, mais en réalité, il télécharge les fichiers du premier, puis les télécharge sur le second.

Est-il possible de déplacer les fichiers directement d’un compte S3 à un autre sans les télécharger entre eux?

Si vous recherchez une solution prête à l’emploi, il existe quelques solutions. Bucket Explorer fonctionne sur Mac et Windows et peut copier sur plusieurs comptes, tout comme Cloudberry S3 Explorer et S3 Browser, mais ils ne sont que Windows.

Je soupçonne que la console AWS pourrait également le faire avec la configuration des permissions appropriée, mais je n’ai pas testé cela.

Vous pouvez également le faire en utilisant l’ API AWS tant que vous avez donné le compte AWS que vous utilisez les permissions d’écriture sur le compartiment de destination.

Oui, il y a un moyen. Et c’est assez simple, bien qu’il soit difficile de le trouver. 8)

Par exemple, supposons que le nom d’utilisateur de votre premier compte est acc1@gmail.com et que le second est acc2@gmail.com.

Ouvrez AWS Management Console comme acc1. Accédez aux propriétés du compartiment Amazon S3 et, dans l’onglet “Autorisations”, cliquez sur “Ajouter d’autres permissions”. Ajoutez ensuite les permissions de liste et d’affichage pour les “utilisateurs authentifiés”.

Ensuite, dans AWS IAM (accessible à partir des tabs de la console) de acc2, créez un utilisateur avec un access complet au compartiment S3 (pour être plus sûr, vous pouvez définir des permissions exactes, mais je préfère créer un utilisateur temporaire pour le transfert). puis supprimez-le).

Ensuite, vous pouvez utiliser s3cmd (en utilisant les informations d’identification de l’utilisateur nouvellement créé dans acc2) pour faire quelque chose comme:

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

Tout le transfert se fera du côté d’Amazon.

Utilisez le aws cli (j’ai utilisé l’instance d’ubuntu 14 ec2) et lancez simplement la commande suivante:

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

Vous devrez spécifier les détails du compte pour l’un et avoir un access public en écriture ou un access en lecture publique à l’autre.

Ceci synchronisera les deux compartiments. Vous pouvez utiliser la même commande ultérieurement pour effectuer une synchronisation rapide. La meilleure partie est que cela ne semble pas nécessiter de bande passante (par exemple, les fichiers ne passent pas par un ordinateur local).

boto fonctionne bien. Voir ce fil À l’aide de boto, vous copiez des objects directement d’un compartiment à un autre, plutôt que de les télécharger sur l’ordinateur local et de les télécharger dans un autre compartiment.

Sous Mac OS XI, utilisez l’application Transmit de Panic. J’ai ouvert une fenêtre pour chaque compte S3 (en utilisant les clés API et les secrets). Je pourrais alors faire glisser d’un seau dans une fenêtre à un autre seau dans l’autre fenêtre. Pas besoin de télécharger des fichiers localement en premier .

Andrew est correct, Transmit télécharge les fichiers localement puis télécharge les fichiers.

CrossFTP peut copier des fichiers S3 directement d’un compartiment à un autre sans les télécharger. C’est un client GUI S3 qui fonctionne sous Windows, Mac et Linux.

Vous pouvez utiliser Cyberduck (open source)

Pour les fichiers nouvellement créés (objects NON existants), vous pouvez tirer parti des nouvelles fonctionnalités d’AWS. C’est la réplication inter-régions (sous “Versionning” pour le compartiment S3). Vous pouvez créer une stratégie qui vous permettra de répliquer de nouveaux objects dans un compartiment d’un autre compte.

Pour les objects existants, vous devrez toujours copier vos objects à l’aide d’une autre méthode – à moins qu’AWS n’introduise des fonctionnalités natives pour cela à l’avenir.

Déplacer des fichiers S3 d’un compte vers un autre compte

Considérons qu’il existe deux comptes source compte compte et destination. Et deux compartiments source-bucket et destination bucket . Nous voulons déplacer tous les fichiers de source-bucket vers destination-bucket . Nous pouvons le faire par les étapes suivantes:

  1. aws configure
    • Configurez votre compte de destination à l’aide des informations d’identification ou du rôle IAM.
  2. Créez une stratégie utilisateur pour l’utilisateur du compte de destination.
  3. Accordez à l’utilisateur de destination l’access au compartiment source en modifiant la stratégie source-compartiment et en y ajoutant la stratégie utilisateur du compte de destination. De cette manière, l’utilisateur de destination aura access à source-bucket.
  4. aws s3 ls s3://source-bucket/
    • Cela vérifiera si le compte de destination a access à source-bucket. Juste pour confirmation, faites ceci.
  5. aws s3 cp s3://source-bucket s3://destination-bucket --recursive
    • Cela copiera le fichier source dans tous les fichiers dans destination-bucket. Tous les fichiers sont copiés à l’aide de l’option –recursive.
  6. aws s3 mv s3://source-bucket s3://destination-bucket --recursive
    • Cela va déplacer tous les fichiers de source-bucket vers destination-bucket.

Vous pouvez également utiliser la commande sync – aws s3 sync s3://source-bucket s3://detination-bucket

Pour une meilleure explication, suivez le lien