web-dev-qa-db-fra.com

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

Jolie question de base mais je n'ai pas trouvé de réponse. Utilisation de Transit Je peux "déplacer" les fichiers d'un compartiment S3 d'un compte AWS vers un autre compartiment S3 d'un autre compte AWS, mais ce qu'il fait, c'est télécharger les fichiers du premier, puis les télécharger vers le second.

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

86
Andrew

Si vous cherchez simplement une solution prête à l'emploi, quelques solutions peuvent le faire. Bucket Explorer fonctionne sur Mac et Windows et peut copier d'un compte à l'autre comme le peut Cloudberry S3 Explorer et Navigateur S mais ils Windows ne peut donc pas fonctionner pour vous.

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

Vous pouvez également le faire à l'aide de AWS API tant que vous avez attribué le compte AWS que vous utilisez autorisations d'écriture au compartiment de destination.

21
Geoff Appleford

Oui, il y a un moyen. Et c'est assez simple, bien que difficile à trouver. 8)

Par exemple, supposons que le premier nom d'utilisateur de votre compte soit [email protected] et le deuxième, [email protected].

Ouvrez AWS Management Console en tant que acc1. Accédez aux propriétés du compartiment Amazon S3 et, dans l'onglet "Autorisations", cliquez sur "Ajouter des autorisations". Ajoutez ensuite les autorisations de liste et d'affichage pour les "utilisateurs authentifiés".

Ensuite, dans AWS IAM (il est accessible depuis les onglets de la console) d’acc2, créez un utilisateur avec un accès complet au compartiment S3 (pour plus de sécurité, vous pouvez configurer des autorisations précises, mais je préfère créer un utilisateur temporaire pour le transfert. puis supprimez-le).

Ensuite, vous pouvez utiliser s3cmd (en utilisant les identifiants du nouvel utilisateur créé dans acc2) pour faire quelque chose comme:

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

Tous les transferts seront effectués du côté d'Amazon.

122
side2k

Utilisez le aws cli (j'ai utilisé l'instance ubuntu 14 ec2) et exécutez simplement la commande suivante:

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

Vous devrez spécifier les détails du compte pour l'un et disposer d'un accès en écriture public ou d'un accès en lecture public à l'autre.

Cela synchronisera les deux compartiments. Vous pouvez utiliser la même commande plus tard pour synchroniser rapidement. La meilleure partie est qu’il ne semble pas nécessiter de bande passante (par exemple, les fichiers ne passent pas par un ordinateur local).

58
Programster

boto fonctionne bien. Voir ce fil . En utilisant boto, vous copiez des objets directement d'un compartiment à un autre, plutôt que de les télécharger sur la machine locale et de les télécharger dans un autre compartiment.

5
Rose Perrone

Sur Mac OS X, j'ai utilisé l'application Transmit de Panic. J'ai ouvert une fenêtre pour chaque compte S3 (à l'aide des clés et des secrets de l'API). Je pouvais alors faire glisser un compartiment d'une fenêtre vers un autre compartiment de l'autre fenêtre. Pas besoin de télécharger les fichiers localement d'abord.

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

3
One Giant Leap AB

Déplacer des fichiers S3 d'un compte à un autre

Considérons qu'il existe deux comptes, le compte source et le compte de destination. Et deux seaux source-bucket et destination bucket. Nous voulons déplacer tous les fichiers de source-bucket à destination-bucket. Nous pouvons le faire en suivant les étapes suivantes:

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

Alternative, vous pouvez utiliser la commande de synchronisation - aws s3 sync s3://source-bucket s3://detination-bucket

Pour une meilleure explication, suivez le lien

2
anand tripathi

Vous pouvez utiliser Cyberduck (open source)

2
Marco Delavegua

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

2
Gatorhall

Pour les fichiers nouvellement créés (PAS les objets existants), vous pouvez tirer parti des nouvelles fonctionnalités d'AWS. Il s'agit d'une réplication entre régions (sous "Gestion des versions" pour le compartiment S3). Vous pouvez créer une stratégie qui vous permettra de répliquer de nouveaux objets dans un compartiment d'un autre compte.

Pour les objets existants, vous devrez toujours copier vos objets en utilisant une autre méthode - à moins qu'AWS n'introduise une fonctionnalité native pour cela à l'avenir.

1
curious_george