Копирование сегмента AWS S3 между учетными записями в разных регионахPython

Программы на Python
Anonymous
Копирование сегмента AWS S3 между учетными записями в разных регионах

Сообщение Anonymous »

Нам необходимо скопировать содержимое корзины в новую учетную запись в другом регионе AWS.
Корзина содержит ±200 тыс. объектов, большинство из которых заархивированы (Glacier), и большая часть из них довольно велика (>10 ГБ).
Сначала мы попробовали следующее:
  • Пакетная обработка сценарий для восстановления всех объектов.
  • Настройте триггер Lambda для обработки завершения восстановления для каждого объекта.
  • Выполните метод копирования с помощью boto3 в функции Lambda. .
Это хорошо работает для более мелких объектов (до ~ 2 ГБ), но большие объекты занимают больше времени, чем максимально допустимая длительность Lambda (15 минут).
Чтобы завершить остальные (>10 тыс. объектов), мы должны использовать некоторую виртуальную машину, однако виртуальные машины вынуждены находиться в VPC, и по какой-то причине boto3 не может обрабатывать команды копирования между регионами из внутри VPC:

Код: Выделить всё

An error occurred (AccessDenied) when calling the UploadPartCopy operation: VPC endpoints do not support cross-region requests
Поэтому мы прибегли к загрузке и загрузке каждого объекта. Это занимает слишком много времени для того количества объектов, которое нам нужно скопировать.
Может ли кто-нибудь предложить лучшее решение?
ПРИМЕЧАНИЕ № 1. У AWS есть кое-что называется пакетными заданиями, что может быть актуально, но его было немного сложно настроить, и по какой-то причине для включения управления версиями требовались как исходные, так и целевые сегменты (в данном случае оно отключено).
ПРИМЕЧАНИЕ. #2: У нас есть роль в целевой учетной записи, которая имеет доступ к исходной учетной записи, и запросы S3 вызываются, и запрашивающая сторона платит за них.

Подробнее здесь: https://stackoverflow.com/questions/790 ... oss-region

Вернуться в «Python»