Довольно простой вопрос, но я не смог найти ответа. Используя Transit, я могу «перемещать» файлы из одной корзины S3 в одной учетной записи AWS в другую корзину S3 в другой учетной записи AWS, но на самом деле она загружает файлы из первой, а затем загружает их во вторую.
Есть ли способ перемещать файлы напрямую из одной учетной записи S3 в другую, не загружая их между ними?
Да, выход есть. И это довольно просто, хотя и сложно найти. 8)
Например, предположим, что ваше первое имя пользователя учетной записи - acc1@gmail.com, а второе - acc2@gmail.com.
Откройте Консоль управления AWS как acc1. Перейдите к свойствам корзины Amazon S3 и на вкладке «Разрешения» нажмите «Добавить дополнительные разрешения». Затем добавьте разрешения на список и просмотр для «прошедших проверку пользователей».
Затем в AWS IAM (он доступен из вкладок консоли) acc2 создайте пользователя с полным доступом к корзине S3 (для большей безопасности вы можете настроить точные разрешения, но я предпочитаю создать временного пользователя для передачи а затем удалите его).
Затем вы можете использовать s3cmd (используя учетные данные вновь созданного пользователя в acc2), чтобы сделать что-то вроде:
Все переводы будут осуществляться на стороне Amazon.
источник
rsync
вы можете использоватьs3cmd sync s3://acc1_bucket s3://acc2_bucket
.s3cmd
также может быть установлен с homebrew, fyi--acl-public
противном случае вы можете добавить , все файлы являются частными (по крайней мере, это было для меня, когда я выполнял команду). при такомИспользуйте aws cli (я использовал экземпляр ubuntu 14 ec2) и просто выполните следующую команду:
Вам нужно будет указать данные учетной записи для одного и иметь общий доступ на запись или открытый доступ на чтение для другого.
Это синхронизирует два ведра. Вы можете использовать ту же команду позже снова для быстрой синхронизации. Самое приятное то, что для этого не требуется никакой полосы пропускания (например, файлы не проходят через локальный компьютер).
источник
aws s3 sync
кажется, работает примерно на порядок быстрее, чемs3cmd cp
.--grants
опцию. Дополнительная информация в документации: docs.aws.amazon.com/cli/latest/reference/s3/sync.html--grants
. Я узнал об этом после копирования тонны данных, а затем мне пришлось повторить синхронизацию с новым сегментом.--grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers
устанавливает разрешение на чтение для публичных пользователей.s3cmd
у меня, и также может синхронизировать файлы изменений, а не повторно копировать все, если вам нужно повторно запустить команду в будущем - намного лучше!бото работает хорошо. Смотрите эту ветку . Используя boto, вы копируете объекты прямо из одной корзины в другую, а не загружаете их на локальный компьютер и выгружаете в другую корзину.
источник
В Mac OS X я использовал приложение Transmit от Panic. Я открыл по одному окну для каждой учетной записи S3 (используя ключи и секреты API). Затем я мог перетащить из одного ведра в одном окне в другое ведро в другом окне.
Нет необходимости сначала загружать файлы локально.Эндрю прав, Transmit загружает файлы локально, а затем выгружает файлы.
источник
Переместить файлы S3 из одной учетной записи в другую.
Давайте рассмотрим, что есть две учетные записи: исходная и целевая. И два ведра,
source-bucket
иdestination bucket
. Мы хотим переместить все файлы изsource-bucket
вdestination-bucket
. Мы можем сделать это следующим образом: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
В качестве альтернативы вы можете использовать команду синхронизации -
aws s3 sync s3://source-bucket s3://detination-bucket
Для лучшего объяснения перейдите по ссылке
источник
CrossFTP может копировать файлы S3 прямо из одной корзины в другую, не загружая их. Это клиент S3 с графическим интерфейсом пользователя, который работает в Windows, Mac и Linux.
источник
Вы можете использовать Cyberduck (с открытым исходным кодом)
источник
Для вновь созданных файлов (НЕ существующих объектов) вы можете воспользоваться новыми функциями AWS. Это межрегиональная репликация (в разделе «Управление версиями» для сегмента S3). Вы можете создать политику, которая позволит вам реплицировать новые объекты в корзину другой учетной записи.
Для существующих объектов вам все равно нужно будет скопировать свои объекты с помощью другого метода - если в будущем AWS не представит собственные функции для этого.
источник
Это можно сделать с помощью следующего:
aws s3 mv (sync for keeping buckets in sync) s3://source-bucket s3://destination-bucket --recursive
Прикрепите политику корзины к исходной корзине в исходной учетной записи.
Прикрепите политику AWS Identity and Access Management (IAM) к пользователю или роли в целевой учетной записи.
Используйте пользователя или роль IAM в целевой учетной записи для выполнения перемещения между учетными записями.
источник