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

Пользовательские заголовки на Amazon S3

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

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

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

Amazon S3 custom headers

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

TL;DR:

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

Ответ 3

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

cd/appropiatedirectory

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

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

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