Более эффективное использование синхронизации AWS S3? - PullRequest
0 голосов
/ 12 февраля 2019

В последнее время мы заметили, что наш счет AWS был выше, чем обычно.Это связано с добавлением задачи aws s3 sync к нашему обычному процессу сборки.Процесс сборки генерирует около 3000 файлов.После сборки мы запускаем aws s3 sync, чтобы загрузить их массово в корзину.Проблема в том, что это дорого.Каждая загрузка обходится нам в ~ 2 доллара (мы думаем), и это в сумме составляет ежемесячный счет, который поднимает бровь.

Все, кроме, может быть, 1 или 2 из этих файлов фактически меняются от сборки к сборке.Остальные всегда одинаковы.Тем не менее, aws s3 sync видит, что все они изменились, и загружает всю партию.

В документации сказано, что aws s3 sync сравнивает дату последнего изменения файла и размер байта, чтобы определить, должен ли он быть загружен.Сервер сборки каждый раз создает все эти файлы как новые, поэтому дата последнего изменения всегда изменяется.

Я хотел бы получить контрольную сумму или хэш для каждого файла, а затемиспользуйте этот хеш для сравнения файлов. Amazon s3 уже имеет поле etag, которое может быть хешем MD5 файла. Но команда aws s3 sync не использует etag.

Есть ли способ использовать etag?Есть ли другой способ сделать это?

Конечным результатом является то, что я хотел бы только загрузить 1 или 2 файла, которые на самом деле отличаются (и сохранить огромную стоимость)

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Команда aws s3 sync имеет параметр --size-only.

Из aws s3 опции синхронизации :

--size-only (булево) ДелаетРазмер каждого ключа - единственный критерий, используемый для определения того, следует ли выполнять синхронизацию от источника к месту назначения.

Это, вероятно, позволит избежать копирования всех файлов, если они будут обновлены с одинаковым содержимым.

0 голосов
/ 12 февраля 2019

S3 взимает $ 0,005 за 1000 запросов PUT ( документ ), поэтому крайне маловероятно, что загрузка 3000 файлов обойдется вам в 2 доллара за сборку.Может быть, 2 доллара за день , если вы выполняете 50-100 сборок в день, но это все же немного.

Если вы действительно платите столько за сборку, вам следует включить события CloudTrail иПосмотрите, что на самом деле так много пишется (на этот раз, может быть, вы создали какой-то рекурсивный журнал событий CloudTrail).

Конечным результатом является то, что я хотел бы только загрузить 1 или2 файла, которые на самом деле разные

Являются ли эти файлы артефактами, созданными вашей сборкой?Если да, то почему бы просто не добавить шаг сборки, который копирует их явно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...