Aws lambda Lambda@Edge基于cookie的两个源间路由
有人能告诉我如何使用cookies路由到2个不同的来源吗Lambda@Edge? 我尝试了下面的代码,但不起作用。提前谢谢Aws lambda Lambda@Edge基于cookie的两个源间路由,aws-lambda,amazon-cloudfront,aws-lambda-edge,Aws Lambda,Amazon Cloudfront,Aws Lambda Edge,有人能告诉我如何使用cookies路由到2个不同的来源吗Lambda@Edge? 我尝试了下面的代码,但不起作用。提前谢谢 'use strict'; exports.handler = (event, context, callback) => { const request = event.Records[0].cf.request; const headers = request.headers; const origin = request.origin
'use strict';
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
const headers = request.headers;
const origin = request.origin;
//Setup the two different origins
const originA = "site1.example.com";
const originB = "site2.example.com";
//Determine whether the user has visited before based on a cookie value
//Grab the 'origin' cookie if it's been set before
if (headers.cookie) {
for (let i = 0; i < headers.cookie.length; i++) {
if (headers.cookie[i].value.indexOf('origin=A') >= 0) {
console.log('Origin A cookie found');
headers['host'] = [{key: 'host', value: originA}];
origin.s3.domainName = originA;
break;
} else if (headers.cookie[i].value.indexOf('origin=B') >= 0) {
console.log('Origin B cookie found');
headers['host'] = [{key: 'host', value: originB}];
origin.s3.domainName = originB;
break;
}
}
}
callback(null, request);
};
“严格使用”;
exports.handler=(事件、上下文、回调)=>{
const request=event.Records[0].cf.request;
const headers=request.headers;
const origin=request.origin;
//设置两个不同的原点
const originA=“site1.example.com”;
const originB=“site2.example.com”;
//根据cookie值确定用户以前是否访问过
//抓取“原始”cookie(如果以前设置过)
if(headers.cookie){
for(设i=0;i=0){
log('origina cookie found');
头文件['host']=[{key:'host',value:originA}];
origin.s3.domainName=originA;
打破
}else if(headers.cookie[i].value.indexOf('origin=B')>=0){
log('Origin B cookie found');
头文件['host']=[{key:'host',value:originB}];
origin.s3.domainName=originB;
打破
}
}
}
回调(null,请求);
};
看起来您没有使用s3源代码。将代码中的s3更改为custom将解决此问题
origin.custom.domainName=originA;
origin.custom.domainName=originB;
您能告诉我们哪些地方不起作用吗?@cementblocks感谢您的回复。在实现该功能并使用hosts文件条目浏览站点之后,我从cloudfront获得了X-Cache:lambdaexecutioneror。您是否为您的lambda角色制定了正确的信任策略?它应该信任edgelambda.amazonaws.com和lambda.amazonaws.com。在lambda控制台中测试您的函数,以确保执行时没有错误。@谢谢您的时间和建议,我会检查并让您知道。