2020년 12월 02일 기록
출처 : https://docs.aws.amazon.com/ko_kr/iot/latest/developerguide/iot-lambda-rule.html
IoT MQTT 통신 방식은 잘 모르지만 IoT팀에서 MQTT 통신을 사용한다고 해서 라즈베리파이에서 AWS로 메시지가 수신되었을 때 Step Functions가 호출되도록 구성해보았다.
먼저 정책을 만들어줘야 한다.
보안 - 정책 - 정책 생성
정책 이름과 필요한 작업을 입력해준다.
리소스 ARN은 일단 *로 해준다. 사물을 생성해야 ARN이 나오기 때문에 나중에 바꿔줄 예정!
허용 선택해주고 정책을 생성한다.
사물을 생성해보자.
관리 - 사물 - 단일 사물 생성 클릭
이름만 적어주고 다음 클릭한다.
인증서를 모두 다운로드해주고 루트 CA도 다운로드한 후, 활성화를 해준다. 정책 연결!
그럼 사물이 생성된다.
동작 - 규칙 - 규칙 생성 클릭
규칙 쿼리는 다음과 같이 설정한다.
SELECT * FROM 'kf99/topic' WHERE temperature > 30
kf99/topic
은 IoT 디바이스가 주제를 게시하는 곳이고 WHERE 절은 규칙 이벤트? 가 발생하는 조건이다. 이번 프로젝트에서는 온도 데이터를 받기 때문에, 온도가 30도 이상인 경우에만 감지하도록 조건절을 추가해 보았다.
작업 추가를 클릭한다.
나오는 항목 중 Step Functions 상태 시스템 실행 시작을 선택한다.
생성해놓은 Step Functions 상태 머신을 선택한다.
실행 이름 접두사는 뭔지 모르겠어서 일단 저렇게 해 놓았다.
역할은 새 역할을 생성해도 되고, 이미 만들어놓은 게 있다면 선택하면 된다.
작업 추가 클릭
다음은 오류 작업의 작업 추가를 선택한다.
에러가 났을 때 메시지로 수신되도록 메시지를 AWS IoT 주제에 재게시를 선택한다.
에러메시지를 게시할 주제를 정해주고, 마찬가지로 역할을 생성하거나 이미 있다면 역할을 선택해준다.
서비스 품질은 IoT 팀원 분과 상의해야 할 것 같다.
테스트를 위해서 테스트 탭으로 이동한다.
에러 메시지를 구독하기 위해 구독 주제에 kf99/error
를 입력했다.
주제 구독 클릭
주제를 게시하는 부분에는 kf99/topic
을 입력했다.
주제 게시를 클릭하면, 메시지가 수신될 때 Step Functions가 호출될 것이다.
테스트를 위해서는 라즈베리파이를 연결해야 해서 오늘은 여기까지!