Экономически эффективный способ получения больших файлов из корзины S3 в другом регионе
У нас есть 3-кратная ежедневная автоматизированная задача для загрузки и восстановления полной резервной копии большой БД из корзины ЕС S3 на наш локальный сервер в США. Это было сделано, когда сама БД была маленькой и время / затраты на передачу были минимальными. Из-за факторов, не зависящих от нас, размер базы данных составляет 70+ ГБ. Полные резервные копии создаются каждые 3 дня, а разности - каждые 8 часов. Наша 3x ежедневная автоматизированная задача требует извлечения файлов.bak самых последних full и diff. При скорости загрузки около 120 Мбит / с в течение дня это может занять несколько часов, чтобы извлечь это из S3, и при 3x ежедневном, 365 дней в году, для передачи $ 0,09 / ГБ из S3, только затраты на передачу не являются тривиальный.
Кажется, здесь есть множество вариантов минимизации затрат и времени выполнения.
- Мы могли бы кэшировать полные файлы.bak локально и проверить, существует ли файл уже локально, прежде чем извлекать его из корзины EU S3. Раз в 3 дня существует только 1 полный файл.bak, но существует 9 восстановлений, поэтому 8 из 9 могут использовать кэшированную копию.
- Мы могли бы дополнительно изменить нашу стратегию резервного копирования, чтобы она выполняла менее частые полные резервные копии, чтобы полные.baks загружались еще реже.
- Расходы на перенос из S3 в другой сервис AWS в том же регионе бесплатны, поэтому, если бы мы смогли восстановить эту БД в экземпляре EC2 в ЕС, это было бы здорово, но команды, использующие восстановленные БД, в настоящее время нуждаются в их размещении на месте, так что это долгосрочная мысль.
- Мы могли бы заранее скопировать эту БД из корзины ЕС в корзину США и загрузить ее оттуда, но это удвоило бы наши затраты на хранение, а перенос из S3 - тот же, независимо от региона.
- Магистраль AWS работает быстрее, чем Интернет, и S3 to CloudFront бесплатен, поэтому теоретически мы могли бы получить частный доступ к этим файлам через CloudFront, который обеспечил бы более быстрое расположение на периферии, плюс CloudFront также немного дешевле, чем S3, за $ 0,085. / ГБ. Это кажется большой инженерной работой для небольшой экономии затрат. Наша кодовая база - C#, и в настоящее время мы получаем файлы, используя AWS SDK для S3 - я не изучал, как это может работать с CloudFront (и я чувствую, что, возможно, что-то здесь упускаю).
Мой план состоит в том, чтобы реализовать локальный кеш (#1), который является решением на основе кода с нашей стороны. Это похоже на общий случай использования, и мне интересно, если я упускаю что-то очевидное.