Пользовательские заголовки на Amazon S3 - PullRequest
14 голосов
/ 19 января 2012

Возможно ли иметь пользовательские заголовки в Amazon S3 с произвольным именованием?

Например, я использую CDN, указывающий на Amazon S3 в качестве исходного сервера, и для того, чтобы включить расширенные функции в CDNМне нужно использовать пользовательский заголовок "x-что-то" ...

Я вижу, что это можно сделать с помощью "x-amz-meta- (что-то)", но как насчет чего-то более общего, как "х- (что-то) - (что-то) "без амза?

Amazon S3 custom headers

Ответы [ 3 ]

14 голосов
/ 19 января 2012

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

Я думаю, что они безопасны, поскольку позволяют x-amz-meta- добавлять префиксы пользовательских заголовков, возможно, не допускать столкновения с выбранными пользователем заголовками при обновлении API в будущем.

Если вам нужны пользовательские атрибуты, прикрепленные к вашим объектам, будет просто разобрать x-amz-meta- в вашем клиентском приложении.

12 голосов
/ 07 апреля 2017

Эта прекрасная статья объясняет все это https://medium.com/@tom.cook/edge-lambda-cloudfront-custom-headers-3d134a2c18a2

tldr:

Вы не можете делать только с s3. Вам необходимо использовать Cloudfront и lambda через Lambda @ Edge . Это интеграция между Lambda и CloudFront. Это позволяет вам запускать Lambdas в CloudFront. Это позволяет вам менять заголовки среди прочего. Так что, если у вас все в порядке с доступом к s3 через CloudFront, это может быть приемлемым вариантом.

0 голосов
/ 22 сентября 2017

Мне удалось добиться этого с помощью инструмента s3cmd . Я написал сценарий синхронизации, который синхронизирует мой статический сайт с помощью параметра --cache-control в клиентском инструменте AWS, а затем вручную сбрасывает его и добавляет пару других заголовков для нескольких конкретных файлов:

компакт-диск / соответствующий каталог

# Удалить текущий сайт
aws s3 rm s3: // yourbucket --recursive --exclude 'logs / *'

# Загрузить новый сайт, установив заголовок кэша на 1 месяц для всех файлов
Синхронизация AWS S3. s3: // yourbucket --exclude '.idea / *' --exclude '.git / *' --exclude '.gitignore' --cache-control max-age = 2592000

# Переопределяет заголовки кэша для некоторого файла
python / pathToS3cmd / s3cmd modify --add-header = "Cache-Control: нет кеша, нет хранилища, необходимо повторное подтверждение" s3: //yourbucket/somefile.html
python / pathToS3cmd / s3cmd / s3cmd modify --add-header = "Истекает: 0" s3: //yourbucket/somefile.html
python / pathToS3cmd / s3cmd / s3cmd modify --add-header = "Pragma: no-cache" s3: //yourbucket/somefile.html

...