Зараз існує три способи зробити це: через консоль AWS , через командний рядок або через інструмент командного рядка s3cmd .
Інструкції консолі AWS
Це зараз рекомендоване рішення. Це прямо вперед, але це може зайняти деякий час.
- Увійдіть до консолі управління AWS
- Зайдіть у відро S3
- Виберіть усі файли за маршрутом
- Виберіть у меню "Більше"
- Виберіть "Змінити метадані"
- У полі "Ключ" виберіть "Кеш-контроль" зі спадного меню max-age = 604800Enter (7 днів) для Value
- Натисніть кнопку "Зберегти"
( спасибі @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". Хоча для цього рішення потрібна суттєва тяга, це може бути простішим та всеосяжнішим рішенням.
Повні інструкції див. У публікації @ ashishyadaveee11 нижче
Сподіваюся, це допомагає!