На сайте моей компании есть статическая домашняя страница из соображений скорости и стоимости. Мы используем S3 в качестве источника для CloudFront. Теперь мы хотели бы объявить Strict-Transport-Security для всего домена, но S3, похоже, не отправляет никаких заголовков, которые мы указываем (кроме тех, которые начинаются с x-aws--). CloudFront, похоже, также не имеет настраиваемого заголовка.
Это возможно?
Ответ Дэвида указывает на документы, которые сводятся к:
us-east-1
- CloudFront автоматически реплицирует их в другие регионы - слои не поддерживаются, и все триггеры должны использовать явный ARN - без псевдонимов или с использованием $LATEST
.'use strict';
exports.handler = (event, context, callback) => {
const response = event.Records[0].cf.response;
const headers = response.headers;
headers['strict-transport-security'] = [{
key: 'Strict-Transport-Security',
/*
* verify that max-age and 'includeSubdomains' are the settings you want
*/
value: 'max-age=31536000; includeSubdomains; preload'
}];
callback(null, response);
};
$LATEST
или псевдоним для следующего шага.Вы захотите установить тип события как origin-response
(между S3 и кешем) или viewer-response
(между кешем и браузером) и укажите ARN с версией, которую вы опубликовали выше, например
arn:aws:lambda:us-east-1:1234567890:function:MY-FUNCTION-NAME:v1
Подождите, пока дистрибутив обновится, и проверьте наличие заголовков в ответе.
С 16.07.2017 искомая функциональность доступна через Lambda @ Edge, см. http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html для общей документации или конкретного примера на https://nvisium.com/blog/2017/08/10/lambda-edge-cloudfront-custom-headers/