Получить файл в корзину S3 в каждом регионе - PullRequest
0 голосов
/ 02 марта 2019

У меня есть файл .zip (в сегменте S3), который должен в конечном итоге находиться в сегменте S3 в каждом регионе в пределах одной учетной записи.

В каждом из этих блоков есть идентичные политики, которые позволяютучетной записи для загрузки в них файлов, и все они следуют одному и тому же соглашению об именах, например: foobar- {region}

ex: foobar-us-west-2

Есть ли способсделать это, не перетаскивая файл из консоли в каждое ведро, или не используя команду aws s3api copy-object 19 раз?Это может происходить довольно часто, когда файл обновляется, поэтому я ищу более эффективный способ сделать это.

Один из способов, которым я думал об этом, было создание лямбды, которая имеет массиввсе 19 областей, которые мне нужны, затем выполните цикл по ним, чтобы создать 19 имен областей, специфичных для каждой области, в каждое из которых будет скопирован объект.

Есть ли лучший способ?

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Несколько опций:

  • Функция лямбда AWS *1005* может быть активирована при загрузке.Затем он может подтвердить, должен ли реплицироваться объект (например, я предполагаю, что вы не хотите копировать каждый загруженный файл?), А затем скопировать их.Обратите внимание, что копирование во все регионы может занять довольно много времени.
  • Используйте Межрегиональная репликация , чтобы скопировать содержимое сегмента (или дополнительного пути) в другие сегменты.Это будет сделано автоматически при загрузке.
  • Напишите bash-скрипт или небольшую Python-программу для локального запуска, которая будет копировать файл в каждое местоположение .Обратите внимание, что более эффективно вызывать copy_object(), чтобы скопировать файл из одного сегмента S3 в другой, а не загружать 19 раз.Просто загрузите в первое ведро, а затем скопируйте оттуда в другие места.
0 голосов
/ 02 марта 2019

Просто поместив его в функцию bash.Используя aws cli и jq, вы можете сделать следующее:

    aws s3api list-buckets | jq -rc .Buckets[].Name | while read i; do 
      echo "Bucket name: ${i}"
      aws s3 cp your_file_name s3://${i}/
    done
...