Aws lambda Lambda@Edge基于cookie的两个源间路由

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

有人能告诉我如何使用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;

    //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控制台中测试您的函数,以确保执行时没有错误。@谢谢您的时间和建议,我会检查并让您知道。