мой код:
const axios = require('axios')
const uuid = require('uuid').v1();
const rand = Math.random();
exports.lambdaHandler = async (event) => {
//const uuix = uuid.v1();
return {
statusCode: 200,
body: JSON.stringify({
message: uuid,
rand: rand,
})
}
};
каждый раз, когда он запускается, он должен возвращать разные значения rand и uuid, но всегда возвращает одно и то же значение. Когда я тестирую его локально, используя sam local start-api
, он работает отлично.
Это связано с тем, что лямбда повторно использует свою среду выполнения, что приводит к:
Объекты, объявленные вне метода обработчика функции, остаются инициализированными, обеспечивая дополнительную оптимизацию при повторном вызове функции.
Поскольку ваши uuid
и rand
создаются вне обработчика, лямбда просто повторно использует их — она не генерирует их до тех пор, пока действительна среда выполнения.
Чтобы исправить проблему, вы должны создать переменные в вашем обработчике:
const axios = require('axios')
const uuid = require('uuid');
exports.lambdaHandler = async (event) => {
const uuix = uuid.v1();
const rand = Math.random();
return {
statusCode: 200,
body: JSON.stringify({
message: uuix,
rand: rand,
})
}
};