Question assez basique mais je n'ai pas pu trouver de réponse. À l'aide de 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 ce qu'il fait en réalité, c'est télécharger les fichiers du premier puis les télécharger vers le second.
Existe-t-il un moyen de déplacer des fichiers directement d'un compte S3 à un autre sans les télécharger entre les deux?
Oui, il y a un moyen. Et c'est assez simple, même s'il est difficile de le trouver. 8)
Par exemple, supposons que le premier nom d'utilisateur de votre compte soit [email protected] et le second [email protected].
Ouvrez AWS Management Console tant que acc1. Accédez aux propriétés du compartiment Amazon S3 et, dans l'onglet "Autorisations", cliquez sur "Ajouter plus d'autorisations". Ajoutez ensuite les autorisations de liste et d'affichage pour les «utilisateurs authentifiés».
Ensuite, dans AWS IAM (accessible à partir des onglets de la console) de acc2, créez un utilisateur avec un accès complet au compartiment S3 (pour être plus sûr, vous pouvez configurer des autorisations 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:
Tous les transferts seront effectués du côté d'Amazon.
la source
rsync
, vous pouvez utilisers3cmd sync s3://acc1_bucket s3://acc2_bucket
.s3cmd
peut être installé avec homebrew également, fyi--acl-public
sinon, tous les fichiers sont privés (du moins c'était pour moi lorsque j'ai exécuté la commande). avec autant de fichiers privés, j'ai dû ajouter une stratégie dans le seau pour les rendre tous publics à nouveauUtilisez le cli aws (j'ai utilisé l'instance ubuntu 14 ec2) et exécutez simplement la commande suivante:
Vous devrez spécifier les détails du compte pour l'un et disposer d'un accès public en écriture ou d'un accès public en lecture à l'autre.
Cela synchronisera les deux compartiments. Vous pouvez réutiliser la même commande ultérieurement pour une synchronisation rapide. La meilleure partie est qu'il ne semble pas nécessiter de bande passante (par exemple, les fichiers ne passent pas par l'ordinateur local).
la source
aws s3 sync
semble courir environ un ordre de grandeur plus rapide ques3cmd cp
.--grants
option. Plus d'informations dans la documentation: docs.aws.amazon.com/cli/latest/reference/s3/sync.html--grants
. J'ai appris cela après avoir copié une tonne de données, puis j'ai dû refaire la synchronisation avec un nouveau compartiment.--grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
définit l'autorisation de lecture pour les utilisateurs publics.s3cmd
pour moi, et est également capable de synchroniser les fichiers de modification plutôt que de tout recopier si vous avez besoin de réexécuter la commande à l'avenir - beaucoup mieux!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.
la source
Sur 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 ensuite faire glisser d'un seau dans une fenêtre vers un autre seau dans l'autre fenêtre.
Pas besoin de télécharger les fichiers localement au préalable.Andrew a raison, Transmit télécharge les fichiers localement puis télécharge les fichiers.
la source
Déplacer les fichiers S3 d'un compte vers un autre compte
Considérons qu'il existe deux comptes source et compte de destination. Et deux seaux
source-bucket
etdestination bucket
. Nous voulons déplacer tous les fichiers desource-bucket
versdestination-bucket
. Nous pouvons le faire en suivant les étapes suivantes:aws configure
aws s3 ls s3://source-bucket/
aws s3 cp s3://source-bucket s3://destination-bucket --recursive
aws s3 mv s3://source-bucket s3://destination-bucket --recursive
Alternativement, vous pouvez utiliser la commande sync -
aws s3 sync s3://source-bucket s3://detination-bucket
Pour une meilleure explication, suivez le lien
la source
CrossFTP peut copier des fichiers S3 directement d'un compartiment à un autre sans les télécharger. Il s'agit d'un client GUI S3 qui fonctionne sur Windows, Mac et Linux.
la source
Vous pouvez utiliser Cyberduck (open source)
la source
Pour les fichiers nouvellement créés (PAS les objets existants), vous pouvez tirer parti des nouvelles fonctionnalités d'AWS. Il s'agit de la réplication interrégionale (sous "Versioning" 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 à l'aide d'une autre méthode, à moins qu'AWS n'introduise à l'avenir une fonctionnalité native à cet effet.
la source
On peut le faire en courant suivant:
aws s3 mv (sync for keeping buckets in sync) s3://source-bucket s3://destination-bucket --recursive
Attachez une stratégie de compartiment au compartiment source dans le compte source.
Attachez une stratégie AWS Identity and Access Management (IAM) à un utilisateur ou un rôle dans le compte de destination.
Utilisez l'utilisateur ou le rôle IAM dans le compte de destination pour effectuer le déplacement entre comptes.
la source