Ziemlich einfache Frage, aber ich konnte keine Antwort finden. Mit Transit kann ich Dateien von einem S3-Bucket in einem AWS-Konto in einen anderen S3-Bucket in einem anderen AWS-Konto "verschieben". Tatsächlich werden jedoch die Dateien vom ersten heruntergeladen und dann in den zweiten hochgeladen.
Gibt es eine Möglichkeit, Dateien direkt von einem S3-Konto auf ein anderes zu verschieben, ohne sie dazwischen herunterzuladen?
Ja, es gibt einen Weg. Und es ist ziemlich einfach, obwohl es schwer zu finden ist. 8)
Angenommen, Ihr erster Kontonutzername lautet [email protected] und der zweite [email protected].
Öffnen Sie die AWS Management Console als acc1. Rufen Sie die Amazon S3-Bucket-Eigenschaften auf und klicken Sie auf der Registerkarte "Berechtigungen" auf "Weitere Berechtigungen hinzufügen". Fügen Sie dann Listen- und Ansichtsberechtigungen für "Authentifizierte Benutzer" hinzu.
Als Nächstes erstellen Sie in AWS IAM (auf das über die Konsolenregisterkarten zugegriffen werden kann) von acc2 einen Benutzer mit vollem Zugriff auf den S3-Bucket (um sicherer zu sein, können Sie genaue Berechtigungen einrichten, ich bevorzuge jedoch die Erstellung eines temporären Benutzers für die Übertragung und dann löschen).
Dann können Sie s3cmd (unter Verwendung der Anmeldeinformationen des neu erstellten Benutzers in acc2) verwenden, um Folgendes zu tun:
Die gesamte Übertragung erfolgt auf Amazon-Seite.
quelle
rsync
Sie können auch ganze Buckets à la synchronisierens3cmd sync s3://acc1_bucket s3://acc2_bucket
.s3cmd
kann auch mit Homebrew installiert werden, fyi--acl-public
anderes hinzufügen . Alle Dateien sind privat (zumindest für mich, als ich den Befehl ausgeführt habe). Bei so vielen privaten Dateien musste ich eine Richtlinie in den BucketVerwenden Sie die aws cli (ich habe die Ubuntu 14 ec2-Instanz verwendet) und führen Sie einfach den folgenden Befehl aus:
Sie müssen die Kontodetails für das eine angeben und über öffentlichen Schreib- oder Lesezugriff auf das andere verfügen.
Dadurch werden die beiden Buckets synchronisiert. Sie können denselben Befehl später erneut verwenden, um eine schnelle Synchronisierung durchzuführen. Das Beste daran ist, dass anscheinend keine Bandbreite erforderlich ist (z. B. werden Dateien nicht über den lokalen Computer übertragen).
quelle
aws s3 sync
scheint um eine Größenordnung schneller zu laufen alss3cmd cp
.--grants
Option. Weitere Informationen in der Dokumentation: docs.aws.amazon.com/cli/latest/reference/s3/sync.html--grants
. Ich habe dies gelernt, nachdem ich eine Menge Daten kopiert hatte und dann die Synchronisierung in einen neuen Bucket wiederholen musste.--grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
Legt die Leseberechtigung für öffentliche Benutzer fest.s3cmd
bei mir und ist auch in der Lage, Änderungsdateien zu synchronisieren, anstatt alles erneut zu kopieren, wenn Sie den Befehl in Zukunft erneut ausführen müssen - viel besser!Boto funktioniert gut. Siehe diesen Thread . Mit boto kopieren Sie Objekte direkt von einem Bucket in einen anderen, anstatt sie auf den lokalen Computer herunterzuladen und in einen anderen Bucket hochzuladen.
quelle
Unter Mac OS XI wurde die Transmit-App von Panic verwendet. Ich habe ein Fenster für jedes S3-Konto geöffnet (unter Verwendung der API-Schlüssel und Geheimnisse). Ich könnte dann von einem Eimer in einem Fenster zu einem anderen Eimer im anderen Fenster ziehen.
Sie müssen die Dateien nicht zuerst lokal herunterladen.Andrew ist korrekt. Transmit lädt die Dateien lokal herunter und lädt sie dann hoch.
quelle
Verschieben Sie S3-Dateien von einem Konto in ein anderes Konto
Angenommen, es gibt zwei Konten, Quellkonto und Zielkonto. Und zwei Eimer
source-bucket
unddestination bucket
. Wir wollen alle Dateien vonsource-bucket
nach verschiebendestination-bucket
. Wir können dies durch die folgenden Schritte tun: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
Alternativ können Sie den Befehl sync verwenden -
aws s3 sync s3://source-bucket s3://detination-bucket
Zur besseren Erklärung folgen Sie dem Link
quelle
CrossFTP kann S3-Dateien direkt von einem Bucket in einen anderen kopieren, ohne sie herunterzuladen. Es ist ein GUI S3-Client, der unter Windows, Mac und Linux funktioniert.
quelle
Sie können Cyberduck (Open Source) verwenden
quelle
Für neu erstellte Dateien (NICHT vorhandene Objekte) können Sie die neuen Funktionen von AWS nutzen. Es handelt sich um eine bereichsübergreifende Replikation (unter "Versionierung" für den S3-Bucket). Sie können eine Richtlinie erstellen, mit der Sie neue Objekte in einen Bucket in einem anderen Konto replizieren können.
Für vorhandene Objekte müssen Sie Ihre Objekte weiterhin mit einer anderen Methode kopieren - es sei denn, AWS führt in Zukunft native Funktionen dafür ein.
quelle
Man kann es so mit folgendem Laufen machen:
aws s3 mv (sync for keeping buckets in sync) s3://source-bucket s3://destination-bucket --recursive
Fügen Sie dem Quell-Bucket im Quellkonto eine Bucket-Richtlinie hinzu.
Fügen Sie einem Benutzer oder einer Rolle im Zielkonto eine IAM-Richtlinie (AWS Identity and Access Management) hinzu.
Verwenden Sie den IAM-Benutzer oder die IAM-Rolle im Zielkonto, um die kontenübergreifende Verschiebung durchzuführen.
quelle