node.js - 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
解决方案
您正在mymodule
模块级别导入,这意味着您的 SDK 将在调用上下文之外实例化。因此,您的 SDK 将仅在冷启动期间调用,而不是在每次调用时调用。context
仅在调用本身内可用。
如果您希望获得(在每次调用中都不同),您必须在context
处理程序中调用您的 SDK 。
您基本上需要做的是为 Lambda 处理程序创建一个包装器,以便您可以在每次调用中调用您的 SDK。Middy JS为您提供了一些关于如何执行此操作的模式。
推荐阅读
- r - 在 R 中寻找更快的 FOR 循环替代方案
- python - 20Mbits/s 的 RHEL 8.2 podman 无根容器网络瓶颈
- javascript - 检查字符串是否包含图像
- javascript - 更新响应为光标分页形状的 apollo 缓存
- java - 为什么我们在将 int 转换为 bigInteger 时不使用 new 关键字,而在从 string 转换为 bigInteger 时使用 new 关键字?
- visual-studio-code - 用于启动/重启的单个 VS Code 快捷方式
- javascript - 将数组中的所有重复值推送到新数组
- logging - spring-cloud-data flow:如何将流日志发送到 kibana?
- docker - 错误 - 绑定失败:地址已在使用中
- regex - 使用正则表达式从带有 Google BigQuery 的 URL 中提取产品名称