如何解决Cloudfront和多个Lambda @ Edge功能
我有一个Cloudfront发行版指向一个自定义网址。 在该发行版中,我设置了2个lambda函数关联。 1在Cloudfront事件中的查看器请求查询参数存储并重定向到正确的URL 另一个在Cloudfront事件的Origin-response事件中收集呼叫的响应统计信息。
查看器要求的功能如下-请注意用于问题目的的虚拟网址
exports.handler = async (event,context) => {
const origin = "main";
const primaryUrl = "https://www.google.com";
const drUrl = "https://www.yahoo.com";
let url = primaryUrl;
if (origin != "main") {
url = drUrl;
} else {
url = primaryUrl;
}
const response = {
status: '302',statusDescription: 'Found',headers: {
location: [{
key: 'Location',value: url,}],},};
return response;
};
现在,起源响应lambda非常简单 var AWS = require('aws-sdk'); AWS.config.update({region:'us-east-1'}); var cloudwatch =新的AWS.CloudWatch();
exports.handler = async (event,context) => {
console.log("Custom Metrics Event");
console.log(JSON.stringify(event));
const response = {
status: '200',};
return response;
};
当我调用cloudfront分发域时,查看器请求lambda @ edge进入,但是原点响应lambda不会触发,并且在cloudwatch中什么也看不到 如果我删除了查看者请求的lambda,则原始触发的lambda会触发
我在这里做错什么了吗?或者有人有什么建议吗?
谢谢 达米安
解决方法
@ChrisWilliams的评论是准确的 我更改了代码以在原始响应中执行重定向,然后一切正常
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。