Решение № 1: Используйте CloudFront + Lambda @ Edge
CloudFront позволяет настроить несколько режимов кэширования, перенаправляя различные шаблоны путей к соответствующим источникам:
Единственное ограничение заключается в том, что каждая корзина S3 должна знать путь и обеспечивать в нем одинаковую файловую структуру. В корзине для сайта A
должна быть папка /site/a
, в корзине B
должна быть папка /site/b
.
Можно преодолеть это ограничение, используя Lambda@Edge.
Решение №2. Настройка бинарных файловых типов в API-шлюзе
API Gateway позволяет настраивать бинарные типы файлов MIME. Но для этого требуется, чтобы заголовок Accept
был совместим с настроенными типами mime.
Так, например, если вы сконфигурируете image/*
как двоичный mimetype в APIG, ваши запросы изображений должны иметь заголовок Accept
со значением image/png
, image/jpg
или просто image/*
. Если заголовок отсутствует или имеет другое значение, APIG не будет обрабатывать ответ как двоичный файл.
Проблема в том, что браузеры обычно отправляют Accept: */*
при попытке загрузить ресурсы, импортированные из CSS.
Таким образом, единственным решением для этого было бы настроить */*
как двоичный mimetype. Это нарушит все недвоичные ответы, обслуживаемые этим шлюзом API, например JSON.
Решение № 3: Размещать двоичные файлы отдельно
Это комбинация двух предыдущих подходов. Вы можете просто создать отдельный статический хостинг веб-сайтов и поместить туда свои двоичные файлы.