Переместить файлы напрямую из одной учетной записи S3 в другую? - PullRequest
86 голосов
/ 01 апреля 2011

Довольно простой вопрос, но я не смог найти ответ. Используя Transit, я могу «переместить» файлы из одного сегмента S3 в одной учетной записи AWS в другую корзину S3 из другой учетной записи AWS, но в действительности он загружает файлы из первой и затем загружает их во вторую.

Есть ли способ переместить файлы напрямую из одной учетной записи S3 в другую, не загружая их между ними?

Ответы [ 9 ]

122 голосов
/ 02 ноября 2011

Да, есть способ. И это довольно просто, хотя это трудно найти. 8)

Например, предположим, что имя вашего первого аккаунта - acc1@gmail.com, а второго - acc2@gmail.com.

.

Открыть Консоль управления AWS как соотв. Перейдите к свойствам корзины Amazon S3 и на вкладке «Разрешения» нажмите «Добавить дополнительные разрешения». Затем добавьте разрешения «Список» и «Просмотр» для «Прошедшие проверку».

Далее в AWS IAM (он доступен из вкладок консоли) в acc2 создайте пользователя с полным доступом к корзине S3 (для большей безопасности вы можете настроить точные разрешения, но я предпочитаю создавать временного пользователя). для передачи, а затем удалить его).

Затем вы можете использовать s3cmd (используя учетные данные вновь созданного пользователя в acc2), чтобы сделать что-то вроде:

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

Все переводы будут осуществляться на стороне Amazon.

58 голосов
/ 02 мая 2014

Используйте aws cli (я использовал экземпляр ubuntu 14 ec2) и просто выполните следующую команду:

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

Вам потребуется указать данные учетной записи для одного и иметь открытый доступ для записи или открытый доступ для чтения для другого.

Это синхронизирует два сегмента. Вы можете использовать ту же команду позже для быстрой синхронизации. Самое приятное то, что для этого не требуется пропускная способность (например, файлы не проходят через локальный компьютер).

21 голосов
/ 02 апреля 2011

Если вы просто ищете готовое решение, есть несколько решений, которые могут это сделать. Bucket Explorer работает на Mac и Windows и может копировать между учетными записями как может Cloudberry S3 Explorer и S3 Browser , но они предназначены только для Windows, поэтомуможет не работать для вас.

Я подозреваю, что консоль AWS могла бы также сделать это с соответствующей настройкой разрешений, но я не проверял это.

Вы также можете сделатьон использует AWS API , если вы предоставили учетную запись AWS, которую используете разрешения на запись в целевую корзину.

5 голосов
/ 28 июля 2012

boto работает хорошо.См. эту тему .Используя boto, вы копируете объекты прямо из одной корзины в другую, а не загружаете их на локальный компьютер и загружаете их в другую корзину.

3 голосов
/ 05 декабря 2012

В Mac OS X я использовал приложение Transmit от Panic. Я открыл одно окно для каждой учетной записи S3 (используя ключи и секреты API). Я мог бы затем перетащить из одного ведра в одном окне в другое ведро в другом окне. Нет необходимости сначала загружать файлы локально .

Эндрю прав, Transmit загружает файлы локально, затем загружает файлы.

2 голосов
/ 17 июля 2018

Перемещение файлов S3 из одной учетной записи в другую учетную запись

Давайте рассмотрим две исходные учетные записи и целевую учетную запись.И два ведра source-bucket и destination bucket.Мы хотим переместить все файлы с source-bucket на destination-bucket.Мы можем сделать это, выполнив следующие действия:

  1. aws configure
    • Настройте учетную запись назначения, используя учетные данные или роль IAM.
  2. Создайте политику пользователя для пользователя учетной записи назначения.
  3. Предоставьте пользователю назначения доступ к корзине источника, изменив политику источника и добавив в нее политику пользователя целевой учетной записи.Таким образом, конечный пользователь будет иметь доступ к источнику-хранилищу.
  4. aws s3 ls s3://source-bucket/
    • это проверит, имеет ли целевая учетная запись доступ к источнику-хранилищу.Просто для подтверждения сделайте это.
  5. aws s3 cp s3://source-bucket s3://destination-bucket --recursive
    • Это скопирует все файлы исходного кода в целевое.Все файлы копируются с использованием --recursive flag.
  6. aws s3 mv s3://source-bucket s3://destination-bucket --recursive
    • , при этом все файлы перемещаются из исходного-целевого в целевое-целое.

В качестве альтернативы вы можете использовать команду синхронизации - aws s3 sync s3://source-bucket s3://detination-bucket

Для лучшего объяснения перейдите по ссылке

2 голосов
/ 27 мая 2015

Вы можете использовать Cyberduck (с открытым исходным кодом)

2 голосов
/ 17 июля 2013

CrossFTP может копировать файлы S3 прямо из одной корзины в другую, не загружая их.Это клиент S3 с графическим интерфейсом, который работает в Windows, Mac и Linux.

1 голос
/ 18 апреля 2015

Для вновь созданных файлов (НЕ существующих объектов) вы можете воспользоваться новыми функциями AWS.Это межрегиональная репликация (в разделе «Управление версиями» для корзины S3).Вы можете создать политику, которая позволит вам реплицировать новые объекты в корзину в другой учетной записи.

Для существующих объектов вам все равно нужно будет копировать ваши объекты другим способом - если в AWS для этого не предусмотрены собственные функциив будущем.

...