Подтвердить что ты не робот

Как добавить контроль кеша в AWS S3?

Я переместил 20000 файлов в AWS S3 командой s3cmd. Теперь я хочу добавить кэш-контроль для всех изображений (.jpg)

Эти файлы находятся в (s3://bucket-name/images/). Как я могу добавить кеш-контроль для всех изображений с помощью s3cmd или есть ли другой способ добавить заголовок?

Спасибо

4b9b3361

Ответ 1

Пожалуйста, попробуйте текущую ведущую ветвь вверх (https://github.com/s3tools/s3cmd), так как теперь она имеет команду modify, которая используется следующим образом:

./s3cmd --recursive modify --add-header="Cache-Control:max-age=86400" s3://yourbucket/

Ответ 2

Также с собственным клиентом AWS:

aws s3 sync /path s3://yourbucket/ --recursive --cache-control max-age=604800

Ответ 3

Чтобы настроить метаданные, такие как управление кешем для объекта в S3, без необходимости повторно загружать его и без использования каких-либо сторонних инструментов, вы можете сделать следующее с CLI AWS. Он копирует объект в себя, переопределяя метаданные с выбранными вами настройками:

aws s3api copy-object --copy-source <bucket-name>/<file> --bucket <bucket-name> --key <file> --metadata-directive REPLACE --cache-control "max-age=3600"

Обработайте эту команду в находке, чтобы сделать это для существующего набора файлов, который уже существует в корзине, как вы упомянули:

find . -type f -exec aws s3api copy-object --copy-source <bucket-name>/{} --bucket <bucket-name> --key {} --metadata-directive REPLACE --cache-control "max-age=3600"

замените <bucket-name> на имя вашего ведра

ВНИМАНИЕ: это перезапишет все ваши существующие метаданные в файлах, таких как acl, просто добавьте дополнительные флаги в команду, чтобы установить то, что вам нужно, например, --acl public-read чтобы дать полный публичный доступ. (спасибо @jackson)

Ответ 4

В моем ковше есть mp4, jpg и другие файлы. Файлы, которые я хотел обновить, хранятся в "подкачке" (например: https://s3.amazonaws.com/my.bucket/sub-directory/my-video.mp4). В моем случае я только хотел обновить управление кешем в файлах mp4:

aws s3 cp \
   s3://my.bucket/sub-directory/ s3://my.bucket/sub-directory/ \
   --exclude '*.jpg' --exclude '*.png' \
   --cache-control 'max-age=31104000' \
   --recursive

Чтобы проверить, что это будет делать, вы можете использовать флаг --dryrun:

aws s3 cp --dryrun \
   s3://my.bucket/sub-directory/ s3://my.bucket/sub-directory/ \
   --exclude '*.jpg' --exclude '*.png' \
   --cache-control 'max-age=31104000' \
   --recursive

Ответ 5

PUT / ObjectName HTTP/1.1 
Host: BucketName .s3.amazonaws.com 
Date: date 
x-amz-meta-Cache-Control : max-age= <value in seconds> 
Authorization: signatureValue 

Каждая настройка метаданных содержит пару Key-Value. Ключ метаданных управления кешем - "Cache-Control", а значение "max-age=<time for which you want your object to be accessed from cache in seconds>"

Вы можете настроить пользовательский заголовок Cache Control для объектов Amazon S3, отправив запрос HTTP PUT на сервер Amazon S3 с соответствующими заголовками двумя способами:

Установить метаданные управления кэшем с помощью Amazon S3 REST API. Запрос объекта PUT. Если вы программист, вы можете написать свою собственную программу для использования API Amazon S3 REST или SOAP для установки пользовательских заголовков с запросом объекта PUT. Этот веб-сайт относится только к API-интерфейсам Amazon S3 REST, см. Сайт документации AWS для получения подробной информации о том, как использовать API SOAP. Установите метаданные управления кэшем с помощью пользовательского интерфейса Bucket Explorer. Если вы хотите настроить пользовательские заголовки HTTP, такие как Cache Control, используя мышиные клики вместо написания программного обеспечения, для этого вы можете использовать пользовательский интерфейс Bucket Explorer. С помощью этого настраиваемого заголовка HTTP вы можете указать поведение кэширования, которое должно сопровождаться цепочкой запросов/ответов, а также предотвратить помехи кэша от запроса или ответа.

для получения дополнительной информации, пожалуйста, Как установить заголовок управления кешем для объекта Amazon S3?`

Ответ 6

Если вы хотите избежать сторонних инструментов, и это одноразовая задача, вы можете использовать консоль AWS.

  1. Найдите свое ведро s3
  2. Выберите все объекты, которые вы хотите изменить
  3. Нажмите Действия → Изменить метаданные
  4. Выберите Cache-Control для клавиши, введите любой элемент управления в качестве значения
  5. Сохранить

Ответ 7

Просто обновите s3cmd до версии 1.5.1, и проблема будет решена.

Ответ 8

(Поскольку OP запросил другой способ)

Вы также можете сделать это через aws-cli, например. (v: aws-cli/1.8.8 Python/2.7.2 Darwin/12.5.0):

aws s3api put-object \
--bucket mybucket \
--key my/key \
--cache-control max-age=1 \
--body myfile.txt

Обратите внимание, что вы перепишете любой существующий объект.

Ответ 9

Другой очень простой способ сделать это - использовать браузер S3: http://s3browser.com/ Вы можете просто сдвинуть клик или ctrl + a на выберите все нужные изображения; затем просто перейдите на вкладку "Http Headers" и нажмите "Добавить новый заголовок", а затем "Применить изменения". Он автоматически сохранил все мои другие разрешения и заголовки.

Если вы используете S3 alot; его сладкое приложение anyways esp, если у вас огромные загрузки (нет ничего лучше в мире ftp, dropbox или иначе!)