首页 > 解决方案 > AWS lambda 在节点 js 中获取处理程序或上下文信息

问题描述

我有一个包含在我的 lambda 函数中的 SDK。此 SDK 负责收集有关 lambda 函数上下文的信息并将其发送到我的远程服务器。下面是我的示例 lambda 代码

import mymodule 

 exports.handler = async (event, context, callback) => {
    var array = [];
    var count = 11000000; //loop to max number just to make sure we hit the limit
  // var count = 110000
    const str = "This is the memory error, will get the memory error.";
    
    //Start appending array with the string  
    for (var i = 0; i < count; i++) {
      array.push(str);
    }
  
    console.log(array);
  };

在我的 SDK 代码中,我通过以下语句捕获 lambda_bootstrap

lambda_bootstap = require.main

这会返回我的大部分参数,但不会返回上下文任何帮助在我的 SDK 中获取 lambda 上下文都会很棒。TIA

标签: node.jsamazon-web-servicesaws-lambdasdk

解决方案


您正在mymodule模块级别导入,这意味着您的 SDK 将在调用上下文之外实例化。因此,您的 SDK 将仅在冷启动期间调用,而不是在每次调用时调用。context调用本身内可用。

如果您希望获得(在每次调用中都不同),您必须context处理程序中调用您的 SDK 。

您基本上需要做的是为 Lambda 处理程序创建一个包装器,以便您可以在每次调用中调用您的 SDK。Middy JS为您提供了一些关于如何执行此操作的模式


推荐阅读