#amazon-web-services #amazon-s3
#amazon-web-services #amazon-s3
Вопрос:
Я использую репликацию S3 для копирования корзины между учетными записями AWS (оба находятся в одном регионе).).
Когда я изначально настраивал репликацию, я не заметил, что мне нужно было установить флажок «изменить владельца», чтобы разрешить доступ к объектам в целевой корзине (исходная корзина использует шифрование AES-256).).
Я понял это после того, как у меня уже скопировано несколько терабайт на другую учетную запись.
Есть ли какой-либо способ обновить существующие скопированные объекты в целевой корзине, чтобы разрешить доступ, чтобы мне не приходилось копировать их снова и снова?
К вашему сведению — Для выполнения копирования я использовал межрегиональную репликацию с помощью метода копирования в себя, как показано здесь на странице центра знаний AWS (см. Раздел » Использовать межрегиональную репликацию или репликацию в том же регионе»)-
https://aws.amazon.com/premiumsupport/knowledge-center/s3-large-transfer-between-buckets/
Если кто-нибудь знает более быстрый или лучший способ, я весь внимание!!
Ответ №1:
Вы можете выполнить итерацию по всем объектам и обновить список управления доступом. Это необходимо сделать, используя учетные данные из исходной учетной записи «владельца» объекта.
aws s3api put-object-acl --bucket XX --key XX --acl bucket-owner-full-control
Я только что провел эксперимент:
- Скопировал объект из учетной записи-A в учетную запись-B
- Account-B не удалось выполнить приведенную выше команду, потому что она не была владельцем корзины
- Учетная запись-A может выполнить команду
- После этого Account-B может выполнить команду, указывающую, что владелец изменился
Самым простым способом было бы написать небольшой скрипт (например, на Python), который получает список корзины и выдает put_object_acl()
команду, используя учетные данные из исходной учетной записи. Или, если вы не уверены в том, что пишете это, просто создайте электронную таблицу Excel с именами файлов и формулой для генерации приведенной выше команды.
Было бы лучше запускать команды из экземпляра Amazon EC2 в том же регионе, что и корзина, поскольку обмен данными будет быстрее, чем выполнение этого с вашего собственного компьютера.