После долгих поисков я узнал, что Bucketeer
дает контроль за ведром. Вам просто нужно использовать AWS CLI
.
Вот ссылка на AWS
документы на CLI
:
https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html
А вот ссылка, где Bucketeer
рассказывает, как начать работу с этим в их сервисе:
https://devcenter.heroku.com/articles/bucketeer#using-with-the-aws-cli
Это означает, что вы можете установить AWS CLI
, выполнить aws configure
с учетными данными, предоставленными Bucketeer
, а затем перейти к непосредственному изменению cache-control
в корзине.
AWS
, похоже, не имеет функции для установки cache-control
значений по умолчанию для всей корзины или папки, поэтому вы фактически делаете это для каждого объекта.
В моем случае все мои файлы / объекты в корзине - это изображения, которые я отображаю на веб-сайте и которые необходимо кэшировать, поэтому можно безопасно запускать команду, которая делает все это сразу.
Такая команда может быть найдена в этом ответе:
Как установить заголовки expires для всех изображений в корзине в Amazon S3
Для меня это выглядело так:
aws s3 cp s3://my-bucket-name s3://my-bucket-name --recursive --acl public-read --metadata-directive REPLACE --cache-control max-age=43200000
Команда в основном копирует весь контейнер на себя, добавляя заголовок cache-control max-age=43200000
к каждому объекту в процессе.
Это работает для всех существующих файлов, но не изменит ничего для будущих изменений или дополнений. Вам придется запускать это снова и снова, чтобы перехватывать новые вещи и / или писать код для установки заголовков ваших объектов при сохранении объекта в корзину. Видимо, есть люди, которым повезло с этим. Не я.
К счастью, я нашел этот пост:
https://www.neontsunami.com/posts/caching-variants-with-activestorage
Этот monkey-patch в основном меняет ActiveStorage::RepresentationsController#show
на использование Rails
кэширования действий для вариантов. Взглянуть. Если у вас есть подобные проблемы, стоит прочитать.
Есть недостатки. В моем случае они не были проблемой, поэтому я решил использовать это решение.