访问其他文件中的Lambda上下文对象
Accessing Lambda context object in other files
我有一个包含多个文件的NodeJS AWS Lambda函数。在index.js中,我做了常规的exports.handler = function (event,context) {…}
。
我也有一个config.js文件处理各种设置和模块。导出一个配置对象。其他几个文件都需要这个配置文件,这些文件都需要访问这些设置(默认值,db设置等)。我不一定需要在index.js中使用它。
但是,我需要根据Lambda函数的别名(例如要使用的DynamoDB表后缀)在配置模块内设置一些设置。虽然在导出中通过context.invokedFunctionArn
(在我的例子中是PROD或STAGE)获得别名没有问题。处理程序,我没有访问它在我的配置文件(这是需要在所有的地方)。
在我的配置模块中使上下文对象可用的最佳方法是什么,以及我如何在不遇到循环依赖的情况下做到这一点(因为它是在导出之前需要的)。处理程序已完成)?
里面的出口。处理来自多个文件的大量异步代码,这些文件都需要执行配置。它们都需要知道哪个别名正在运行。
问题不在于如何使用别名,而在于如何使上下文对象在其他文件中可用。
谢谢!
只需在调用异步函数之前在处理程序的顶部设置变量:
const config = require('./config')
const someAsyncFunction = require('./someAsyncFunction')
exports.handler = function (event, context) {
config.invokedFunctionArn = context.invokedFunctionArn
someAsyncFunction().then(context.succeed, context.fail)
}
我会修改你的async函数来接受一个"environment"参数。然后在处理程序中,检查调用的ARN并提取别名,然后将其映射到受支持的环境类型。将该环境作为参数传递到函数中。
这将您的其他库与lambda调用的任何知识解耦,并且使独立测试更容易。Lambda处理程序可以知道它的别名类型及其含义。实际执行DynamoDB逻辑的代码不需要关心这些—它只需要知道它应该连接到哪里。
- 将函数的上下文应用于javascript变量
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 使用JQuery的动态上下文菜单
- 如何访问UIWebView'的子窗口上下文
- JQuery在单击正文时隐藏上下文菜单
- JQuery上下文菜单显示/隐藏问题
- 如何从HTTP上下文对象中获取Post数据
- HTML字符串作为上下文
- 为什么我的上下文选择器和.buttonset()在ie中花费了这么长时间
- 丢失对象“;这个“;方法中的上下文
- 防止在移动Safari(iPad/iPhone)中长按/长按默认上下文菜单
- d3防止在上下文菜单上触发mouseout
- 是否可以在不更改上下文的情况下调用函数.apply
- 调用$.each()函数时上下文发生变化
- mongose中的匿名函数与lambda
- 何时可以;我的用户脚本在Javascript中触发右键单击(上下文菜单)
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- Ember.js:将Em.$.getJSON转换为promise并将响应绑定到控制器上下文的正确方法
- File Upload事件上下文和javascript
- 访问其他文件中的Lambda上下文对象