Cloudfront 和多个 Lambda@Edge 函数
Cloudfront and multiple Lambda@Edge functions
我有一个指向自定义 url 的 Cloudfront 分布。
在该发行版中,我设置了 2 个 lambda 函数关联。
1 在 viewer-request 的 Cloudfront 事件上查询参数存储并重定向到正确的 url
另一个在 origin-response 的 Cloudfront 事件上,从调用中收集响应统计信息。
查看器请求函数如下 - 注意 虚拟 urls 用于问题目的
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;
};
origin response lambda 现在非常简单
var AWS = require('aws-sdk');
AWS.config.update({ 地区: 'us-east-1' });
var cloudwatch = new AWS.CloudWatch();
exports.handler = async (event, context) => {
console.log("Custom Metrics Event");
console.log(JSON.stringify(event));
const response = {
status: '200',
};
return response;
};
当我调用云端分发域时,查看器请求 lambda@edge 启动但原始响应 lambda 未触发,我在 cloudwatch 中看不到任何内容
如果我删除 viewer-request lambda - origin-response lambda 会触发
我是不是做错了什么或者有没有人有什么建议?
谢谢
达米恩
@ChrisWilliams 的评论是准确的
我更改了我的代码以在原始响应中执行重定向,然后一切正常
我有一个指向自定义 url 的 Cloudfront 分布。 在该发行版中,我设置了 2 个 lambda 函数关联。 1 在 viewer-request 的 Cloudfront 事件上查询参数存储并重定向到正确的 url 另一个在 origin-response 的 Cloudfront 事件上,从调用中收集响应统计信息。
查看器请求函数如下 - 注意 虚拟 urls 用于问题目的
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;
};
origin response lambda 现在非常简单 var AWS = require('aws-sdk'); AWS.config.update({ 地区: 'us-east-1' }); var cloudwatch = new AWS.CloudWatch();
exports.handler = async (event, context) => {
console.log("Custom Metrics Event");
console.log(JSON.stringify(event));
const response = {
status: '200',
};
return response;
};
当我调用云端分发域时,查看器请求 lambda@edge 启动但原始响应 lambda 未触发,我在 cloudwatch 中看不到任何内容 如果我删除 viewer-request lambda - origin-response lambda 会触发
我是不是做错了什么或者有没有人有什么建议?
谢谢 达米恩
@ChrisWilliams 的评论是准确的 我更改了我的代码以在原始响应中执行重定向,然后一切正常