AWS Lambda @ Edge将查询字符串追加到响应

时间:2019-07-11 08:45:53

标签: angular amazon-web-services aws-lambda amazon-cloudfront aws-lambda-edge

简短概述。

我在S3存储桶上托管了一个Angular应用程序。我还获得了一个Cloudfront发行版来处理HTTPS和重定向。

我尝试根据用户连接到的URL形成一个querystring参数。

2个例子

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

到目前为止,我尝试实现 AWS lambda @ Edge函数,但到目前为止没有任何效果。如果我尝试操纵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)我的Lambda函数错误吗?

1 个答案:

答案 0 :(得分:0)

您可能要确保在Cloudfront发行版Behavior设置中,选项Query String Forwarding and Caching设置None (Improves Caching)

您可以在documentation中找到有关该选项的更多信息。