我试图使用 Lambda@Edge 在我的站点中处理 A/B 测试。我想知道有没有办法让 Lambada@Edge 函数从 url 加载外部配置数据,例如。我创建了一个 api 来返回 A/B 通道的流量速率,我想控制外部的配置数据,这样我就可以动态调整流向 A 或 B 通道的流量,而无需修改 Lambda 函数。我现在做的是
var versions = [];
var isLoadingVersionData = false;
const https = require('https');
function loadVersions() {
if (isLoadingVersionData)
return null;
isLoadingVersionData=true;
https.get('https://example.com/getAbTestConfig', (res) => {
res.on('data', (d) => {
var parsedBody = JSON.parse(d);
if (parsedBody.status)
versions = parsedBody.data;
});
}).on('error', (e) => {
console.log(e);
});
}
//and load the function in handler
exports.handler = (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
loadVersions();
}
我想知道这个变量“版本”可以正确加载并在以后的每个请求中共享
你有一些更有效的解决方案吗?