AWS IoT Core + Lambda + DynamoDB

이경은·2022년 3월 11일
0

0. 들어가기

이 포스팅은 기록용입니다. 내용이 정확하지 않을 수 있습니다. 참조한 블로그 주소는 여기 입니다.
Device에서 생성한 MQTT Message를 클라우드 서비스에서 활용하는 예시입니다. MQTT 메시지만 있으면 어디에서나 활용할 수 있습니다.

1. Device + IoT Core

연결하는 과정은 생략해두었고, 메시지 형태만 확인합니다.
Topic은 $aws/things/picoThing/shadow/update 입니다.

{
  "temperature": 46,
  "humidity": 17
}

2. Create DynamoDB Table

  • Table name: IoTCatalog
  • Partition key: clientId (string)
  • Sort Key: timestamp (number)

3. Create Lambda

1) Lambda - Function - Create Function

  • Function name: IoTSaveEventData
  • Runtime: (default selected) Node.js 14.x

2) Edit source code

  • ‘collection’ is your DynamoDB table’s name.
  • ‘Item’ is your message payload.
console.log('Loading function');
const AWS = require('aws-sdk');
const dynamo = new AWS.DynamoDB.DocumentClient();

const collection ="IoTCatalog"

// Handler lamda function
exports.handler = function(event, context) {
console.log('Received event:', JSON.stringify(event, null, 2));
   const params = {
    TableName: collection,
    Item:{
        "clientId": event.clientId,
        "timestamp": event.timestamp,
        "humidity": event.humidity,
        "temperature": event.temperature
        }
    };

    console.log("Saving Telemetry Data");
    
    dynamo.put(params, function(err, data) {
        if (err) {
            console.error("Unable to add device. Error JSON:", JSON.stringify(err, null, 2));
            context.fail();
        } else {
            console.log(data)
            console.log("Data saved:", JSON.stringify(params, null, 2));
            context.succeed();
            return {"message": "Item created in DB"}
        }
    });
}
  • If you change the code, click “Deploy” button.

4. Create IoT Rule

1) Create rule

  • Rule name: SendLambda (required*)
  • Description (optional)

2) Query

  • SELECT 'items' FROM 'Topic'
SELECT temperature, humidity, clientId() AS clientId, timestamp() AS timestamp FROM '$aws/things/picoThing/shadow/update

3) Job

  • Select the Lambda function which you made.

4) Activate the Rule

5. Check DynamoDB

profile
Web Developer

0개의 댓글