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 不同 randuuid 但它总是 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.

由于您的 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,
        })
    }
};