对于lambda和uuid,它总是返回相同的值



mycode:

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,
})
}
};

每次运行时,它都应该返回不同的randuuid,但它总是返回相同的值。当我使用sam local start-api在本地测试它时,它工作得很好。

这是因为lambda将重用其执行环境,从而导致:

在函数的处理程序方法之外声明的对象保持初始化状态,从而在再次调用函数时提供额外的优化。

由于uuidrand是在处理程序之外创建的,lambda只是在重新使用它们——只要执行环境有效,它就不会生成它们。

要纠正此问题,您必须在处理程序中创建变量

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,
})
}
};

最新更新