AWS Lambda @ Edge добавляет строку ответа к ответу - PullRequest
0 голосов
/ 11 июля 2019

Краткий обзор.

Я размещаю Angular Application на S3 Bucket. Я также получил дистрибутив Cloudfront для обработки HTTPS и перенаправлений.

Я пытаюсь сформировать параметр строки запроса в зависимости от того, к какому URL-адресу подключается пользователь.

2 примера

test.example.com --> example.com?id=test
hello.example.com --> example.com?id?hello

До сих пор я пытался реализовать AWS lambda @ Edge Function , но пока ничего не получалось. Если я пытаюсь манипулировать request, он не будет иметь никаких эффектов, если я пытаюсь манипулировать response, перенаправление не работает, и я получаю ошибку корзины S3 или Cloudfront.

'use strict';
const remove_suffix = '.example.com';
exports.handler = (event, context, callback) => {
    const request = event.Records[0].cf.request;
    const headers = request.headers;
    const host_header = headers.host[0].value;

    if(host_header.endsWith(remove_suffix)){
        request.querystring = 'id=' + host_header.substring(0,host_header.length - remove_suffix.length);
    }

    return callback(null,request);
};

1) Какой триггер мне использовать?

2) Какие настройки я мог бы пропустить в настройках Cloudfront?

3) Не работает ли моя лямбда-функция?

1 Ответ

0 голосов
/ 11 июля 2019

Возможно, вы захотите убедиться, что в настройках дистрибутива Cloudfront Behavior параметр Query String Forwarding and Caching равен , а не установлен на None (Improves Caching)

Вы можете найти дополнительную информацию относительно этого параметра.в документации .

...