我正在學習 AWS 服務,并且正在嘗試創建從我的 ESP32(光敏電阻資料)到 DynamoDB 的資料管道。
我創建了一個規則,該規則接收來自我的 ESP32 的傳入 MQTT 訊息并觸發一個將資料推送到我的 DynamoDB 的 lambda 函式。
我讓它在 lambda 函式中處理硬編碼值,但是如何修改以下代碼以從 ESP32 讀取實時傳感器資料?
這是 lambda 代碼(node.js):
const AWS = require("aws-sdk");
const ddb = new AWS.DynamoDB.DocumentClient({region: 'us-west-2'});
exports.handler = async (event, context, callback) => {
// Captures the requestId from the context message
const requestId = context.awsRequestId;
// Handle promise fulfilled/rejected states
await createMessage(requestId).then(() => {
callback(null, {
statusCode: 201,
body: '',
headers: {
'Access-Control-Allow-Origin' : '*'
}
});
}).catch((err) => {
console.error(err)
})
};
// Function createMessage
// Writes message to DynamoDb table Message
function createMessage(requestId) {
const params = {
TableName: 'my-ddd-data',
Item: {
'partKey' : requestId,
'Dropouts': "67476", // this is successfully sent to my database but I'd like real time sensor data
'Runtime' : "0 mins"
}
}
return ddb.put(params).promise();
}
提供給此 lambda 函式的資料的 json 格式:
{
"Dropouts": "1",
"Runtime": "0 mins"
}
uj5u.com熱心網友回復:
請考慮記錄您的活動并查看它的外觀。可能它會包含來自您的傳感器的 JSON 資訊。我認為您可以直接將該資訊傳遞給 DynamoDB:
const AWS = require("aws-sdk");
const ddb = new AWS.DynamoDB.DocumentClient({region: 'us-west-2'});
exports.handler = async (event, context, callback) => {
// Log your event, and see how it looks like
console.log('Event\n', JSON.stringify(event))
// Captures the requestId from the context message
const requestId = context.awsRequestId;
// Handle promise fulfilled/rejected states
// Pass the event that is being processed
await createMessage(requestId, event).then(() => {
callback(null, {
statusCode: 201,
body: '',
headers: {
'Access-Control-Allow-Origin' : '*'
}
});
}).catch((err) => {
console.error(err)
})
};
// Function createMessage
// Writes message to DynamoDb table Message
function createMessage(requestId, event) {
const params = {
TableName: 'my-ddd-data',
Item: {
'partKey' : requestId,
'Dropouts': event['Dropouts'], // read values from the event
'Runtime' : event['Runtime']
}
}
return ddb.put(params).promise();
}
盡管用 Python 實作,但我認為來自 Amazon 檔案的本教程也可能有所幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/399735.html
