当你拉链项目时,你也拉链 ./node_modules 夹。所以只要 aws-iot-device-sdk 在那里(连同所有依赖项),你的Lambda会很好。
./node_modules
aws-iot-device-sdk
所以你需要的是:
npm install aws-iot-device-sdk zip ...
你需要确保上传你的 package.json 文件也应该具有依赖性要求 aws-iot-device-sdk
package.json
您可以通过运行将包添加到package.json
npm -i --save aws-iot-device-sdk
从您的项目目录。
在package.json文件中添加如下所示的内容。然后运行 npm install 。这将创建一个node_modules文件夹。现在压缩它并再次上传。
npm install
"aws-iot-device-sdk": "^2.1.0"
我强烈建议不要使用aws-iot-device-sdk从Lambda函数与AWS Iot进行交互。
您需要了解有两个可用于访问AWS IoT的JavaScript API
您应该选择基于HTTP的SDK有多种原因:
您的代码可以变得如此简单(请注意,不需要凭据或额外的节点模块):
var AWS = require('aws-sdk'); var iotdata = new AWS.IotData({endpoint:"yourendpoint.iot.eu-central-1.amazonaws.com"}); exports.handler = function(event, context, callback) { console.log("found iotdata",iotdata); var params = { topic: 'topic/test', payload: 'blah', qos: 0 }; iotdata.publish(params, function(err, data){ if(err){ console.log("Error occured : ",err); } else{ console.log("success....."); } }); callback(); };
如果您要将数据发布到IoT主题,则最好使用http协议而不是MQTT连接。
使用HTTP连接不需要aws-iot-device-sdk包。 AWS默认SDK具有iotdata。 iotdata将提供与设备的http连接。
iotHTTPConnection = AWS.IotData({endpoint:Your_END_POINT});
iotHTTPConnection.publish(params)将使用http发布数据而不使用特定的sdk。
https://docs.aws.amazon.com/iot/latest/apireference/API_iotdata_Publish.html
但是没有http订阅。