Есть ли способ загрузить внешние данные в Lambda @ Edge - PullRequest
0 голосов
/ 30 октября 2018

Я пытался использовать 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();
}

Интересно, что эта переменная "версии" может быть правильно загружена и предоставлена ​​в каждый последующий запрос

У вас есть более эффективные решения?

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Я столкнулся с той же проблемой, но не для A / B-тестирования. Я только что создал файл json в своей лямбда-функции, чтобы избежать задержки выполнения http-вызовов внутри лямбда-функций. Это работает, но обслуживание не является хорошим, так как каждый раз, когда мне нужно изменить файл Json, мне нужно снова развертывать лямбда-функцию.

Пока я искал его, я нашел то же решение, описанное выше для Mr.Ocean, звучит как хорошая альтернатива для сохранения данных в S3.

0 голосов
/ 15 ноября 2018

Почему бы не сохранить эти данные в S3 и использовать Lambda @ Edge для получения конфигурации оттуда? Кроме того, чтобы уменьшить задержку, вы можете перейти к корзине S3, содержащей коэффициент трафика, с помощью CloudFront, а L @ E позвонить в CloudFront и получить желаемое значение.

...