Назад | Перейти на главную страницу

Strict-Transport-Security на CloudFront с S3 origin?

На сайте моей компании есть статическая домашняя страница из соображений скорости и стоимости. Мы используем S3 в качестве источника для CloudFront. Теперь мы хотели бы объявить Strict-Transport-Security для всего домена, но S3, похоже, не отправляет никаких заголовков, которые мы указываем (кроме тех, которые начинаются с x-aws--). CloudFront, похоже, также не имеет настраиваемого заголовка.

Это возможно?

Ответ Дэвида указывает на документы, которые сводятся к:

  1. Создайте такую ​​лямбда-функцию. Обратите внимание, что Lambda @ Edge имеет ограниченный набор сред выполнения и некоторые дополнительные ограничения по сравнению с другими лямбда-функциями. Например, все функции должны быть созданы в 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);
};
  1. Опубликовать версию и разверните его в Lambda @ Edge. Вы не можете использовать $LATEST или псевдоним для следующего шага.
  2. Свяжите опубликованную версию функции с распространением CloudFront. Если это разовая задача, возможно, это проще сделать через консоль Lambda. Если вы хотите связать свою функцию с несколькими дистрибутивами, возможно, проще использовать консоль CloudFront.
  3. Вы захотите установить тип события как origin-response (между S3 и кешем) или viewer-response (между кешем и браузером) и укажите ARN с версией, которую вы опубликовали выше, например

    arn:aws:lambda:us-east-1:1234567890:function:MY-FUNCTION-NAME:v1

  4. Подождите, пока дистрибутив обновится, и проверьте наличие заголовков в ответе.

С 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/