node.js - 从 AWS Lambda 获取 AWS IoT 影子状态
问题描述
我正在尝试从 Lamda 函数内部获取 IoT 影子状态。这是我到目前为止在我的 Lambda 函数中所拥有的:
var AWS = require('aws-sdk');
var iotdata = new AWS.IotData({
endpoint: process.env.endpoint
});
exports.handler = async (event) => {
const params = {
thingName: 'MyThing',
};
iotdata.getThingShadow(params, function(err, data) {
if (err) console.log(err, err.stack);
else console.log('ok', data);
});
但它从不记录数据。我错过了什么?
解决方案
由于您使用的是异步处理程序,我认为问题在于您的函数在处理程序的主体有机会运行之前完成。
纠正此问题的一种方法是使用AWS docsPromise
中所示的方法。例如:
var AWS = require('aws-sdk');
var iotdata = new AWS.IotData({
endpoint: process.env.endpoint
});
exports.handler = async (event) => {
const promise = new Promise(function(resolve, reject) {
const params = {
thingName: 'MyThing',
};
iotdata.getThingShadow(params, function(err, data) {
if (err){
console.log(err, err.stack);
reject();
}
else {
console.log(data);
resolve();
}
});
})
return promise;
推荐阅读
- ruby-on-rails - rails 上未定义的方法 `load_defaults' 生成迁移和 rails 控制台
- symfony - Symfony 代码在不同域上的不同项目之间的可维护性
- java - 在不运行程序的情况下计算
- c - 在 Linux 中,如何在 putty 中与其他人聊天,而不是 sudo
- android - 检索 downloadURL.result 时应用程序崩溃
- vba - 动态滚动 X 个月 - 枢轴过滤器多项选择
- sql - 对日期内的多列求和
- javascript - 在样式化的组件中模拟主题
- csv - ArangoDB CSV 上传作为集合中的一个条目
- python - 如何在 PyCharm 中创建模块并将其导入?