编写NodeJS版食谱购买交易Lambda函数,如何访问参数及添加全局要求
访问{itemID, sellerID, buyerID}参数的实现方式
根据你的Lambda触发方式不同,参数获取逻辑有区别,最常见的两种场景如下:
- API Gateway触发(前端/客户端调用场景)
如果你是通过API Gateway接收交易请求,参数默认放在event.body字段中,JSON格式的请求体需要先解析再使用:exports.handler = async (event) => { // 解析JSON格式的请求体,application/json类型请求适用 const { itemID, sellerID, buyerID } = JSON.parse(event.body); // 如果参数是放在URL查询参数里,用下面的写法 // const { itemID, sellerID, buyerID } = event.queryStringParameters; // 如果参数是放在路径参数里,用下面的写法 // const { itemID, sellerID, buyerID } = event.pathParameters; console.log('交易参数', {itemID, sellerID, buyerID}); // 后续编写交易校验、扣款、库存扣减等业务逻辑 } - 其他AWS服务直接调用(Step Function、SQS、其他Lambda调用场景)
这种场景下参数会直接放在event根节点,直接解构即可:exports.handler = async (event) => { const { itemID, sellerID, buyerID } = event; // 直接使用参数即可 }
添加全局依赖的方法
你说的Global requirements有两种通用实现方案:
- 方案1:Lambda层(多函数共享依赖,全局复用首选)
- 本地新建名为
nodejs的文件夹,进入文件夹执行npm init -y初始化项目,之后安装所有你需要的公共依赖,比如支付SDK、数据库驱动等 - 将整个
nodejs文件夹压缩为zip包,注意zip的根目录必须是nodejs文件夹,不要嵌套额外外层目录 - 打开Lambda控制台左侧的「层」菜单,创建新层,上传刚才的zip包,选择你使用的NodeJS运行时版本
- 回到你的交易Lambda配置页,在「层」设置中添加刚创建的层,之后在函数代码里可以直接引入这些依赖,不需要每个函数单独打包
- 本地新建名为
- 方案2:直接打包进部署包(单函数使用场景)
在你的函数代码根目录执行npm install 依赖名安装需要的依赖,之后把代码文件、package.json、node_modules文件夹一起打包成zip上传到Lambda即可,代码里可以直接引入使用。
内容的提问来源于stack exchange,提问作者forestTheTrader
相关产品推荐
相关产品推荐

