Как синхронизировать 2 корзины s3 каждый день с 2 разными учетными записями AWS

#amazon-web-services #amazon-s3

Вопрос:

У меня есть учетная запись учетной записи AWS-A и корзина под ней — НАЗНАЧЕНИЕ КОРЗИНЫ. У меня есть другая учетная запись AWS ACCOUNT-B, к которой нет доступа, но мне предоставлен пользователь IAM IAM-B и ИСТОЧНИК КОРЗИНЫ, к которому IAM-B имеет доступ (чтение / запись).

Я хочу использовать IAM-B для синхронизации ИСТОЧНИКА КОРЗИНЫ с КОРЗИНОЙ НАЗНАЧЕНИЯ каждую ночь. Если возможно, все в AWS, я не хочу запускать синхронизацию aws.

Как мне это сделать?

Спасибо!

Ответ №1:

Вы можете настроить репликацию корзины S3 для двух разных учетных записей. Репликация работает асинхронно (обычно в течение 15 минут, но иногда до пары часов, как описано в разделе Сколько времени занимает репликация объектов на Amazon S3?). Для запуска репликации не требуется никаких дополнительных служб.

Вам нужно будет предоставить учетной записи A разрешения для корзины B (целевой корзины) с помощью политики корзины, чтобы репликация работала. Подробное описание конфигурации можно найти в разделе Настройка репликации, когда исходные и целевые корзины принадлежат разным учетным записям.

Комментарии:

1. Спасибо за помощь!

Ответ №2:

Вам потребуется единый набор учетных данных, который имеет:

  • Доступ на чтение к исходной корзине и
  • Доступ на запись в целевой сегмент

Поскольку вам был предоставлен пользователь IAM B, который имеет доступ к исходной корзине, и предполагается, что целевая корзина находится под вашим контролем, самым простым способом было бы создать политику корзины в целевой корзине, которая предоставляет доступ на запись ( PutObject ) этому пользователю IAM B.

Таким образом, вы можете использовать единый набор учетных данных, который имеет разрешение на чтение из исходной корзины и запись в целевую корзину.

Важно: при записи в корзину с набором учетных данных, который не принадлежит той же учетной записи, что и целевая корзина, важно указать --acl bucket-owner-full-control . Это устанавливает «владельца» объекта для целевой учетной записи.

Невозможно запланировать операцию синхронизации AWS CLI в S3, поэтому вы можете выбрать:

  • Используйте задание cron на компьютере где-нибудь в Интернете или
  • Запланируйте функцию AWS Lambda, которая будет копировать объекты, используя жестко запрограммированные учетные данные для работы от имени пользователя IAM B, а не от имени роли IAM, назначенной функции, или
  • Попросите Account-B настроить репликацию S3, чтобы S3 немедленно реплицировал объекты между корзинами (без необходимости вызова команды копирования)

Последний вариант, безусловно, самый простой! (Для этого потребуется политика корзины в целевой корзине, которая разрешает процессу репликации записывать объекты в корзину.)

Комментарии:

1. Спасибо за помощь!

2. Я использовал лямбда-функцию для копирования объектов в папку / tmp, а из этой папки / tmp скопировал в свою собственную корзину s3.