如何解决Cloudfront未使用Lambda函数
我正在尝试设置自定义的Cloudfront响应标头。我用nodejs 12.x创建了一个lambda函数,添加了触发器CloudFront,使用正确的ID进行分发,使用*缓存,将事件作为Viewer响应,然后部署。
然后我去了CloudFront>分发> IDxxx>行为>编辑> *它显示了作为查看器响应列出的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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。