简短概述。
我在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函数错误吗?
答案 0 :(得分:0)
您可能要确保在Cloudfront发行版Behavior
设置中,选项Query String Forwarding and Caching
未设置为None (Improves Caching)
您可以在documentation中找到有关该选项的更多信息。