aws lambda 和 uuid,它总是 return 相同的值
Aws lambda and uuid, it always return same value
我的代码:
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,
})
}
};
每次 运行,它应该 return 不同 rand 和 uuid 但它总是 return 相同的值。当我使用 sam local start-api
在本地对其进行测试时,它运行良好。
这是因为 lambda 将 re-use its execution environment 结果为:
Objects declared outside of the function's handler method remain initialized, providing additional optimization when the function is invoked again.
由于您的 uuid
和 rand
是在处理程序之外创建的,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,
})
}
};
我的代码:
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,
})
}
};
每次 运行,它应该 return 不同 rand 和 uuid 但它总是 return 相同的值。当我使用 sam local start-api
在本地对其进行测试时,它运行良好。
这是因为 lambda 将 re-use its execution environment 结果为:
Objects declared outside of the function's handler method remain initialized, providing additional optimization when the function is invoked again.
由于您的 uuid
和 rand
是在处理程序之外创建的,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,
})
}
};