【问题标题】:Access single query output among all lambda function在所有 lambda 函数中访问单个查询输出
【发布时间】:2021-03-18 13:51:36
【问题描述】:

我在使用 lambda 函数的 nodejs 中有无服务器应用程序,我已将我的应用程序的所有 toast 消息存储在一个数据库表中,并希望在所有 lambda 函数中获取这些 toast 消息。 由于 lambda 函数是独立工作的,所以每当我需要在所有 lambda 函数中发送消息时,我都必须调用数据库查询获取,但这种方法对我来说看起来很耗时,而且我的应用程序也变慢了。有没有办法在单个查询调用中访问存储在表中的那些 toast 消息,而不是每次调用任何 lambda 函数时都调用数据库查询?

非常感谢任何帮助。提前致谢!

【问题讨论】:

    标签: lambda aws-lambda


    【解决方案1】:

    您可以在 Lambda 的 init 阶段获取这些消息。出于您的目的,您可以想象 Lambda 的生命周期有两个阶段:

    1. init
    2. “runtime”(每个请求都会调用它)

    您需要做的是在 init 阶段加载这些消息,因为此代码在 Lambda“上线”之前只运行一次。

    对于 NodeJS,它可能如下所示:

    // This code will run only once, when the Lambda is initialized
    const init = async () => {
        const messages = await loadMessages();
    
        // Perform any async calls here to fetch config data.
        // We'll just dummy up a fake promise as a simulation.
        return new Promise((resolve, reject) => {
            console.log('fetching config data...');
            resolve({ "messages": messages });
        });
    };
    
    const initPromise = init();
    
    exports.handler = async (event, context, callback) => {
        // Code that runs on every request goes here...
        const config = await initPromise;
        console.log(config.messages)
    };
    

    来源:https://serverlessfirst.com/fff-function-initialisation/

    loadMessages() 中,您可以查询 DynamoDB 并获取您的消息。

    注意:您的 Lambda 将“存活”一段时间(大约 15 分钟)。这意味着,如果您更改 DynamoDB 中的消息,它们也需要一段时间才能“生效”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 2019-11-10
      • 1970-01-01
      • 2016-07-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      相关资源
      最近更新 更多