Команда CopyObject()
может использоваться для копирования объектов между группами без необходимости загрузки / выгрузки.По сути, два сегмента S3 взаимодействуют друг с другом и передают данные.
Эту команду также можно использовать для копирования между сегментами, расположенными в разных регионах, и различными учетными записями AWS.
Если вы хотитескопируйте между сегментами, принадлежащими различным учетным записям AWS , тогда вам нужно будет использовать один набор учетных данных , которые имеют:
GetObject
разрешение наразрешение исходного сегмента PutObject
для целевого сегмента
Также обратите внимание, что команда CopyObject()
отправлена на целевую учетную запись .Целевой контейнер эффективно извлекает объекты из исходного контейнера .
. По вашему описанию, ваш код принимает роль от другой учетной записи , чтобы получить разрешение на чтение дляисходное ведро.К сожалению, этого недостаточно для команды CopyObject()
, потому что команда должна быть отправлена в область назначения.(Да, это немного сложно отличить от документации. Именно поэтому исходная корзина имеет конкретное имя, а не целевую.)
Следовательно, в вашей ситуации можно скопироватьобъекты, вам нужно будет использовать набор учетных данных из Account-B
(место назначения) , который также имеет разрешение на чтение из Bucket-A
(источник).Это потребует от поставщика изменения политики сегментов , связанной с Bucket-A
.
Если они не хотят этого делать, то единственным вариантом является загрузка объектов с использованиемпредполагаемая роль , а затем отдельно загружать файлы в свое собственное ведро, используя учетные данные из собственного Account-B
.