Теперь есть 3 способа сделать это: через консоль AWS , через командную строку или через инструмент командной строки s3cmd .
Инструкции для консоли AWS
Теперь это рекомендуемое решение. Это просто, но это может занять некоторое время.
- Войдите в Консоль управления AWS.
- Перейти в ведро S3
- Выбрать все файлы по маршруту
- Выберите «Еще» в меню.
- Выберите «Изменить метаданные».
- В поле «Ключ» в раскрывающемся меню выберите «Cache-Control» max-age = 604800Введите (7 дней) для значения
- Нажмите кнопку "Сохранить"
( спасибо @biplob - пожалуйста, подарите ему немного любви ниже )
Решение командной строки AWS
Первоначально, когда я создавал эту политику корзины, я не мог пойти, поэтому я решил, как это сделать с помощью aws-cli, и это довольно гладко. При исследовании я не мог найти никаких примеров в дикой природе, поэтому решил опубликовать некоторые из своих решений, чтобы помочь нуждающимся.
ПРИМЕЧАНИЕ. По умолчанию aws-cli копирует только текущие метаданные файла, ДАЖЕ ЕСЛИ ВЫ УКАЗЫВАЕТЕ НОВЫЕ МЕТАДАННЫЕ.
Чтобы использовать метаданные, указанные в командной строке, вам необходимо добавить флаг --metadata-directive REPLACE. Вот несколько примеров.
Для одного файла
aws s3 cp s3://mybucket/file.txt s3://mybucket/file.txt --metadata-directive REPLACE \
--expires 2034-01-01T00:00:00Z --acl public-read --cache-control max-age=2592000,public
Для всего ведра (обратите внимание - флаг рекурсии):
aws s3 cp s3://mybucket/ s3://mybucket/ --recursive --metadata-directive REPLACE \
--expires 2034-01-01T00:00:00Z --acl public-read --cache-control max-age=2592000,public
Я обнаружил небольшую ошибку: если вы хотите применить ее только к определенному типу файлов, вам нужно исключить все файлы, а затем включить те, которые вам нужны.
Только jpgs и png:
aws s3 cp s3://mybucket/ s3://mybucket/ --exclude "*" --include "*.jpg" --include "*.png" \
--recursive --metadata-directive REPLACE --expires 2034-01-01T00:00:00Z --acl public-read \
--cache-control max-age=2592000,public
Вот несколько ссылок на руководство, если вам нужна дополнительная информация:
Известные проблемы:
"Unknown options: --metadata-directive, REPLACE"
это может быть вызвано устаревшим awscli - см . ответ @ eliotRosewater ниже
Инструмент S3cmd
S3cmd - это «инструмент командной строки для управления сервисами Amazon S3 и CloudFront». Хотя это решение требует git pull, оно может быть более простым и комплексным.
Полные инструкции см. В сообщении @ ashishyadaveee11 ниже.
Надеюсь, поможет!