AWS IoT Core 및 Lambda를 이용한 데이터 처리
1. 개요
IoT 시스템에서는 센서 데이터의 실시간 처리와 저장이 중요합니다. AWS IoT Core와 AWS Lambda를 활용하면 클라우드에서 데이터를 효율적으로 처리할 수 있습니다. 본 포스팅에서는 AWS IoT Core를 이용해 ESP32 IoT 디바이스에서 전송된 온도 데이터를 수집하고, AWS Lambda를 이용해 데이터를 가공 및 저장하는 방법을 설명합니다.
2. 시스템 개요
본 프로젝트는 다음과 같은 구성으로 이루어집니다.
- AWS IoT Device (ESP32): 온도 데이터를 측정하여 AWS IoT Core로 전송
- AWS IoT Core: MQTT를 통해 데이터를 수신
- AWS Lambda: AWS IoT Core에서 전달된 데이터를 처리하고 AWS DynamoDB에 저장
3. AWS IoT Device (ESP32) 설정
ESP32는 AWS IoT Core와 통신하기 위해 MQTT 프로토콜을 사용합니다. 이를 위해 AWS IoT Device SDK for Embedded C를 사용하여 ESP32의 펌웨어를 작성합니다.
(1) AWS IoT Core에 Thing 등록 및 인증서 발급
먼저 AWS IoT 콘솔에서 IoT Thing을 생성하고 인증서를 발급해야 합니다.
- AWS IoT 콘솔에 접속하여 Thing 생성
- 인증서 및 정책을 생성하여 ESP32에서 사용할 수 있도록 설정
- 발급된 인증서와 키를 ESP32에 업로드
(2) ESP32 펌웨어 작성 (C, ESP-IDF)
ESP32는 AWS IoT Core에 MQTT 메시지를 게시합니다. 아래는 예제 코드입니다.
#include <stdio.h>
#include "aws_iot_mqtt_client_interface.h"
#include "esp_log.h"
#include "mqtt_client.h"
#define AWS_IOT_ENDPOINT "your-iot-endpoint.amazonaws.com"
#define AWS_IOT_TOPIC "temperature/data"
void publish_temperature(float temperature) {
char payload[100];
sprintf(payload, "{\"temperature\": %.2f}", temperature);
aws_iot_mqtt_publish(client, AWS_IOT_TOPIC, strlen(AWS_IOT_TOPIC), payload, strlen(payload), 0, false);
}
void app_main() {
float temperature = read_temperature();
publish_temperature(temperature);
}
4. AWS IoT Core 설정
AWS IoT Core에서는 ESP32에서 전송한 데이터를 수신해야 합니다. MQTT 주제를 등록하고 Rule을 생성하여 AWS Lambda로 데이터를 전달할 수 있도록 설정합니다.
(1) AWS IoT Core의 Rule 생성
- AWS IoT Core 콘솔 > Act > Rule 생성
- SQL 구문을 이용하여 특정 MQTT 주제의 데이터를 처리하도록 설정
예제 SQL 구문:
SELECT * FROM 'temperature/data'
- 데이터를 AWS Lambda로 전달하도록 설정
5. AWS Lambda를 이용한 데이터 처리
AWS Lambda를 사용하여 수신된 온도 데이터를 DynamoDB에 저장하는 코드를 작성합니다.
(1) AWS Lambda 함수 생성 및 코드 작성
Python을 이용하여 AWS Lambda 함수를 작성합니다.
import json
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('TemperatureData')
def lambda_handler(event, context):
for record in event['Records']:
payload = json.loads(record['body'])
temperature = payload.get('temperature')
table.put_item(
Item={
'device_id': 'ESP32_001',
'temperature': temperature,
'timestamp': int(time.time())
}
)
return {
'statusCode': 200,
'body': json.dumps('Success')
}
6. 테스트 및 검증
- ESP32에서 온도 데이터를 MQTT로 전송
- AWS IoT Core에서 MQTT 메시지를 수신 및 Rule 실행
- AWS Lambda가 호출되고 DynamoDB에 데이터 저장 확인
7. 결론
이 포스팅에서는 ESP32 IoT 디바이스에서 AWS IoT Core로 데이터를 전송하고, AWS Lambda를 이용하여 데이터를 처리하는 방법을 설명하였습니다. AWS 서비스를 활용하면 IoT 데이터를 실시간으로 처리하고 저장할 수 있어 다양한 IoT 애플리케이션에 적용할 수 있습니다.
'AWS IoT' 카테고리의 다른 글
이상 온도 감지 시 AWS SNS를 통해 알림 전송 (0) | 2025.04.17 |
---|---|
AWS DynamoDB 및 Grafana를 이용한 실시간 온도 데이터 시각화 (0) | 2025.04.17 |
ESP32 IDF 기반 AWS IoT 디바이스 구현 (0) | 2025.04.15 |
AI/ML을 활용한 이상 온도 감지 및 자동 대응 (0) | 2025.04.14 |
AWS QuickSight, Grafana를 활용한 실시간 데이터 시각화 (0) | 2025.04.13 |