我有一个lambda(nodeJs),它读取S3 bucket中的一个文件(.ref),并在AWS IoT核心代理中的一个主题中发布其内容。
文件包含如下内容(50行):
model:type
aa;tp1
bb;tpz
cc;tpf
dd;tp1
代码必须删除第一行并检索剩余的50行。这是密码
async function gerRef (BUCKET_NAME) {
const refFile = version + '/file.ref'
const ref = await getObject(FIRMWARE_BUCKET_NAME, refFile)
//Get the file content
const refString = ref.toString('utf8')
//Slip by each line
let arrRef = refString.split('\n')
//Remove the file header
arrRef.shift()
//join the lines
let refString = arrRef.join('\n')
return refString
}
const publishMqtt = (params) =>
new Promise((resolve, reject) =>
iotdata.publish(params, (err, res) => resolve(res)))
...
let refData = await gerRef (bucket1)
let JsonPayload = {
"attr1":"val1",
"machineConfig":`${refData}` //Maybe here is the issue
}
let params = {
topic: 'test/1',
payload: JSON.stringify(JsonPayload) //Maybe here is the issue
qos: '0'
};
await publishMqtt(params)
...
然后在代理中发布。
问题是,这些内容是在没有真正的
new line
{
"attr1":"val1",
"machineConfig":"aa;tp1\nbb;tpz\ncc;tpf\ndd;tp1"
}
接收此消息的机器需要一个真正的新行,如下所示:
{
"attr1":"val1",
"machineConfig":"aa;tp1
bb;tpz
cc;tpf
dd;tp1"
}
如果我只是在AWS IoT核心接口中复制并粘贴整个JSON,它会抱怨JSON解析,但会作为字符串发布,机器会接受数据-因为新行在那里:
简而言之,这里的要点是:
-
我们可以使用JSON.stringify文件(JsonPayload)-代理将接受
-
我不知道如何严格遵守和保持实际的新路线
我尝试过这些解决方案,但都不奏效:
s1
,
s2
s3