Node.js Cloudfront未使用lambda函数

Node.js Cloudfront未使用lambda函数,node.js,amazon-web-services,aws-lambda,amazon-cloudfront,Node.js,Amazon Web Services,Aws Lambda,Amazon Cloudfront,我正在尝试设置自定义cloudfront响应头。我用nodejs 12.x创建了一个lambda函数,添加了触发器CloudFront,使用正确的ID分发,cache as*,event as Viewer response,然后部署 然后我转到CloudFront>Distributions>IDxxx>Behaviors>Edit>*它显示了作为查看器响应列出的lambda函数 当我从cloudfront发行版访问任何内容时(本地禁用缓存/cloudfront未命中),响应中永远不会发送头。

我正在尝试设置自定义cloudfront响应头。我用nodejs 12.x创建了一个lambda函数,添加了触发器CloudFront,使用正确的ID分发,cache as*,event as Viewer response,然后部署

然后我转到CloudFront>Distributions>IDxxx>Behaviors>Edit>*它显示了作为查看器响应列出的lambda函数

当我从cloudfront发行版访问任何内容时(本地禁用缓存/cloudfront未命中),响应中永远不会发送头。在CloudWatch中,我从“测试”按钮看到日志,但从生产中看不到日志,因此我假设该函数没有在CloudWatch上执行,尽管它在行为中

'use strict';

exports.handler = (event, context, callback) => {
    try { 
        console.log("REQUEST");
        const response = event.Records[0].cf.response;
        const headers = response.headers;
         
        response.headers['test'] = [{key: 'test', value: 'test'}];
         
        callback(null, response);
    } catch(err) {
        console.log("ERROR");
        console.log(err);
        
    }
};

编辑:我也使用了发布新版本。我假设一旦发布,cloudfront应该自动使用它?

更改lambda函数后,必须发布它,然后再次部署

在CloudFront中,它显示lambda函数字符串,如: arn:aws:lambda:us-east-1:000000000000:function:testfunction:3


末尾“3”是版本号。如果发布了3个版本,则需要它来显示3。我的仍然设置为1。

您能在CloudWatch日志中看到LAmbda输出吗?CloudWatch有测试日志,但我没有看到cloudfront请求的任何日志。请查看离您最近的区域,这是它们显示的位置Lambda@Edge:)我为此苦苦挣扎了几个小时,发布10分钟后我就明白了。所以发布之后,还必须再次部署它。该版本显示在cloudfront中lamda函数的末尾:“…50:function:functionname:3”啊,对了,很高兴您对它进行了排序:)